in src/core/utils/cli.ts [20:56]
export function argv<T extends string | number | boolean | null>(flag: string): T {
const flags = process.argv;
for (let index = 0; index < flags.length; index++) {
const entry = flags[index];
// ex: --key=value
if (entry.startsWith("--")) {
if (entry.includes("=")) {
// ex: [--key, value]
const [key, value] = entry.split("=");
if (flag === key.trim()) {
// ex: --key=value --> value
// ex: --key= --> null
return (!!value ? value.trim() : null) as T;
}
}
// ex: --key value
// ex: --key
else if (flag === entry.trim()) {
const nextEntry = flags[index + 1]?.trim();
// ex: --key
if (nextEntry === undefined || nextEntry?.startsWith("--")) {
return true as T;
}
// ex: --key value
else if (!!nextEntry) {
return nextEntry as T;
}
} else {
// flag wasn't found
return false as T;
}
}
}
return null as T;
}