feat: parse --env.<flags> [WIP]

This commit is contained in:
Igor Randjelovic
2021-03-02 18:50:10 +01:00
parent 60293bb819
commit 0a1ba16436
4 changed files with 150 additions and 1 deletions

View File

@ -0,0 +1,39 @@
import { 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;
}