Files
NativeScript/packages/webpack5/src/cli/parseEnvFlags.ts
2021-03-11 16:28:11 +01:00

40 lines
885 B
TypeScript

import type { IWebpackEnv } from '@nativescript/webpack';
const ENV_FLAG_RE = /--env\.(\w+)(?:=(.+))?/;
export function parseEnvFlags(flags: string[]): IWebpackEnv {
const envFlags = flags.filter((flag) => flag.includes('--env.'));
const env = {};
envFlags.map((flag) => {
let [_, name, v] = ENV_FLAG_RE.exec(flag);
let value: any = v;
// convert --env.foo to --env.foo=true
if (value === undefined) {
value = true;
}
// convert true/false to boolean
if (value === 'true' || value === 'false') {
value = value === 'true';
}
// convert numbers
if (!isNaN(value) && !isNaN(parseFloat(value))) {
value = +value;
}
// duplicate key/name - convert to array
if (name in env && value) {
const orig = Array.isArray(env[name]) ? env[name] : [env[name]];
env[name] = [...orig, value];
} else {
env[name] = value;
}
});
return env;
}