1 | import path from 'node:path';
|
2 | import process from 'node:process';
|
3 |
|
4 | import semver from 'semver';
|
5 |
|
6 | import nodeManifest from '../package.json' assert { type: 'json' };
|
7 | import util from '../src/util.js';
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 | export default async function parse(options) {
|
29 | options.version = options.version ?? nodeManifest.version;
|
30 | const parsedVersion = semver.parse(options.version);
|
31 | options.version = [
|
32 | parsedVersion.major,
|
33 | parsedVersion.minor,
|
34 | parsedVersion.patch
|
35 | ].join('.');
|
36 |
|
37 | options.flavor = options.flavor || process.env.npm_config_nwjs_build_type || process.env.NWJS_BUILD_TYPE || 'normal';
|
38 |
|
39 |
|
40 | if (typeof parsedVersion?.prerelease?.[0] === 'string') {
|
41 | let prerelease = parsedVersion.prerelease[0].split('-');
|
42 | if (prerelease.length > 1) {
|
43 | prerelease = prerelease.slice(0, -1);
|
44 | }
|
45 | options.version = [options.version, ...prerelease].join('-');
|
46 | }
|
47 |
|
48 |
|
49 | if (options.version.endsWith('-sdk')) {
|
50 | options.version = options.version.slice(0, -4);
|
51 | options.flavor = 'sdk';
|
52 | } else if (options.version.endsWith('sdk')) {
|
53 | options.version = version.slice(0, -3);
|
54 | options.flavor = 'sdk';
|
55 | }
|
56 |
|
57 | options.platform = options.platform || util.PLATFORM_KV[process.env.npm_config_nwjs_platform || process.env.NWJS_PLATFORM || process.platform];
|
58 | options.arch = options.arch || util.ARCH_KV[process.env.npm_config_nwjs_process_arch || process.env.NWJS_ARCH || process.arch];
|
59 | options.downloadUrl = options.downloadUrl || process.env.npm_config_nwjs_urlbase || process.env.NWJS_URLBASE || 'https://dl.nwjs.io';
|
60 | options.cacheDir = options.npm_config_nwjs_urlbase || process.env.npm_config_nwjs_cache_dir || process.env.NWJS_CACHE_DIR || path.resolve('.', 'node_modules', 'nw');
|
61 | options.cache = options.cache || process.env.npm_config_nwjs_cache || process.env.NWJS_CACHE || true;
|
62 | options.ffmpeg = options.ffmpeg || process.env.npm_config_nwjs_ffmpeg || process.env.NWJS_FFMPEG || false;
|
63 | options.nativeAddon = options.nativeAddon || process.env.npm_config_nwjs_native_addon || process.env.NWJS_NATIVE_ADDON || false;
|
64 |
|
65 | return { ...options };
|
66 | }
|