summaryrefslogtreecommitdiff
path: root/dev
diff options
context:
space:
mode:
Diffstat (limited to 'dev')
-rw-r--r--dev/bin/build.js56
-rw-r--r--dev/util.js68
2 files changed, 37 insertions, 87 deletions
diff --git a/dev/bin/build.js b/dev/bin/build.js
index deb82618..5d7e4f0d 100644
--- a/dev/bin/build.js
+++ b/dev/bin/build.js
@@ -25,7 +25,8 @@ import path from 'path';
import readline from 'readline';
import {buildLibs} from '../build-libs.js';
import {ManifestUtil} from '../manifest-util.js';
-import {getAllFiles, getArgs, testMain} from '../util.js';
+import {getAllFiles, testMain} from '../util.js';
+import {parseArgs} from 'util';
const dirname = path.dirname(fileURLToPath(import.meta.url));
@@ -218,24 +219,42 @@ function ensureFilesExist(directory, files) {
}
}
-
/**
* @param {string[]} argv
*/
export async function main(argv) {
- const args = getArgs(argv, new Map(/** @type {[key: string, value: (boolean|null|number|string|string[])][]} */ ([
- ['all', false],
- ['default', false],
- ['manifest', null],
- ['dry-run', false],
- ['dry-run-build-zip', false],
- ['yomitan-version', '0.0.0.0'],
- [null, []]
- ])));
-
- const dryRun = /** @type {boolean} */ (args.get('dry-run'));
- const dryRunBuildZip = /** @type {boolean} */ (args.get('dry-run-build-zip'));
- const yomitanVersion = /** @type {string} */ (args.get('yomitan-version'));
+ /** @type {import('util').ParseArgsConfig['options']} */
+ const parseArgsConfigOptions = {
+ all: {
+ type: 'boolean',
+ default: false
+ },
+ default: {
+ type: 'boolean',
+ default: false
+ },
+ manifest: {
+ type: 'string'
+ },
+ dryRun: {
+ type: 'boolean',
+ default: false
+ },
+ dryRunBuildZip: {
+ type: 'boolean',
+ default: false
+ },
+ version: {
+ type: 'string',
+ default: '0.0.0.0'
+ }
+ };
+
+ const {values: args} = parseArgs({args: argv, options: parseArgsConfigOptions});
+
+ const dryRun = /** @type {boolean} */ (args.dryRun);
+ const dryRunBuildZip = /** @type {boolean} */ (args.dryRunBuildZip);
+ const yomitanVersion = /** @type {string} */ (args.version);
const manifestUtil = new ManifestUtil();
@@ -247,14 +266,13 @@ export async function main(argv) {
try {
await buildLibs();
const variantNames = /** @type {string[]} */ ((
- argv.length === 0 || args.get('all') ?
- manifestUtil.getVariants().filter(({buildable}) => buildable !== false).map(({name}) => name) :
- args.get(null)
+ argv.length === 0 || args.all ?
+ manifestUtil.getVariants().filter(({buildable}) => buildable !== false).map(({name}) => name) : []
));
await build(buildDir, extDir, manifestUtil, variantNames, manifestPath, dryRun, dryRunBuildZip, yomitanVersion);
} finally {
// Restore manifest
- const manifestName = /** @type {?string} */ ((!args.get('default') && args.get('manifest') !== null) ? args.get('manifest') : null);
+ const manifestName = /** @type {?string} */ ((!args.default && typeof args.manifest !== 'undefined') ? args.manifest : null);
const restoreManifest = manifestUtil.getManifest(manifestName);
process.stdout.write('Restoring manifest...\n');
if (!dryRun) {
diff --git a/dev/util.js b/dev/util.js
index 731b5456..ff1c0120 100644
--- a/dev/util.js
+++ b/dev/util.js
@@ -22,74 +22,6 @@ import path from 'path';
import {parseJson} from './json.js';
/**
- * @param {string[]} args
- * @param {Map<?string, (boolean|null|number|string|string[])>} argMap
- * @returns {Map<?string, (boolean|null|number|string|string[])>}
- */
-export function getArgs(args, argMap) {
- let key = null;
- let canKey = true;
- let onKey = false;
- for (const arg of args) {
- onKey = false;
-
- if (canKey && arg.startsWith('--')) {
- if (arg.length === 2) {
- canKey = false;
- key = null;
- onKey = false;
- } else {
- key = arg.substring(2);
- onKey = true;
- }
- }
-
- const target = argMap.get(key);
-
- switch (typeof target) {
- case 'boolean':
- argMap.set(key, true);
- key = null;
- break;
- case 'number':
- argMap.set(key, target + 1);
- key = null;
- break;
- case 'string':
- if (!onKey) {
- argMap.set(key, arg);
- key = null;
- }
- break;
- case 'object':
- if (target === null) {
- if (!onKey) {
- argMap.set(key, arg);
- key = null;
- }
- return argMap;
- } else if (Array.isArray(target)) {
- if (!onKey) {
- target.push(arg);
- key = null;
- }
- return argMap;
- } else {
- console.error(`Unknown argument: ${arg}`);
- key = null;
- }
- break;
- default:
- console.error(`Unknown argument: ${arg}`);
- key = null;
- break;
- }
- }
-
- return argMap;
-}
-
-/**
* @param {string} baseDirectory
* @param {?(fileName: string, isDirectory: boolean) => boolean} predicate
* @returns {string[]}