2019-12-23 16:08:47 -05:00

105 lines
2.2 KiB
TypeScript

import * as yargsParser from 'yargs-parser';
import * as yargs from 'yargs';
/**
* These options are only for getting an array with properties of AffectedOptions.
*
* @remark They are not defaults or useful for anything else
*/
const dummyOptions: NxArgs = {
target: '',
configuration: '',
runner: '',
parallel: false,
maxParallel: 0,
'max-parallel': 0,
untracked: false,
uncommitted: false,
all: false,
base: 'base',
head: 'head',
exclude: ['exclude'],
files: [''],
onlyFailed: false,
'only-failed': false,
verbose: false,
help: false,
version: false,
quiet: false,
plain: false,
withDeps: false,
'with-deps': false,
projects: [],
select: ''
} as any;
const nxSpecific = Object.keys(dummyOptions);
export interface NxArgs {
target?: string;
configuration?: string;
runner?: string;
parallel?: boolean;
maxParallel?: number;
'max-parallel'?: number;
untracked?: boolean;
uncommitted?: boolean;
all?: boolean;
base?: string;
head?: string;
exclude?: string[];
files?: string[];
onlyFailed?: boolean;
'only-failed'?: boolean;
verbose?: boolean;
help?: boolean;
version?: boolean;
quiet?: boolean;
plain?: boolean;
withDeps?: boolean;
'with-deps'?: boolean;
projects?: string[];
select?: string;
}
const ignoreArgs = ['$0', '_'];
export function splitArgsIntoNxArgsAndOverrides(
args: yargs.Arguments
): { nxArgs: NxArgs; overrides: yargs.Arguments } {
const nxArgs: any = {};
const overrides = yargsParser(args._);
delete overrides._;
Object.entries(args).forEach(([key, value]) => {
if (nxSpecific.includes(key as any)) {
nxArgs[key] = value;
} else if (!ignoreArgs.includes(key)) {
overrides[key] = value;
}
});
if (!nxArgs.projects) {
nxArgs.projects = [];
} else {
nxArgs.projects = args.projects.split(',').map((p: string) => p.trim());
}
if (
!nxArgs.files &&
!nxArgs.uncommitted &&
!nxArgs.untracked &&
!nxArgs.base &&
!nxArgs.head &&
!nxArgs.all &&
args._.length >= 2
) {
nxArgs.base = args._[0];
nxArgs.head = args._[1];
} else if (!nxArgs.base) {
nxArgs.base = 'master';
}
return { nxArgs, overrides };
}