in src/commandline.ts [123:184]
export function parseArgs(args: string[]): Arguments | null {
const opts = {
boolean: [
VERBOSE_FLAG,
PERF_LOGGING_FLAG,
DEBUG_LOGGING_FLAG,
SILENT_LOGGING_FLAG,
DRY_RUN_FLAG,
HEADERS_ONLY,
IMPL_ONLY,
SINGLE_FILE,
ONE_CPU,
],
string: [
ADT_CONFIG_PATH,
VALUE_OBJECT_CONFIG_PATH,
OBJECT_CONFIG_PATH,
INCLUDE,
EXCLUDE,
OUTPUT_PATH,
EMIT,
],
default: {[HEADERS_ONLY]: false, [IMPL_ONLY]: false},
};
const parsedArgs = minimist(args, opts);
const sanitizedHeadersOnly = sanitizeBooleanArg(
parsedArgs[HEADERS_ONLY],
false,
);
const sanitizedImplsOnly = sanitizeBooleanArg(parsedArgs[IMPL_ONLY], false);
if (parsedArgs._.length === 0) {
return null;
} else if (sanitizedHeadersOnly && sanitizedImplsOnly) {
console.log(
'Error: %s and %s cannot both be set simultaneously',
HEADERS_ONLY,
IMPL_ONLY,
);
return null;
} else {
return {
givenPaths: parsedArgs._,
adtConfigPath: parsedArgs[ADT_CONFIG_PATH],
valueObjectConfigPath: parsedArgs[VALUE_OBJECT_CONFIG_PATH],
objectConfigPath: parsedArgs[OBJECT_CONFIG_PATH],
interestedLoggingTypes: interestedTypesForArgs(parsedArgs),
minimalLevel: parsedArgs[VERBOSE_FLAG] ? 1 : 10,
dryRun: parsedArgs[DRY_RUN_FLAG],
outputPath: parsedArgs[OUTPUT_PATH],
includes: sanitizeArrayArg(parsedArgs[INCLUDE]),
excludes: sanitizeArrayArg(parsedArgs[EXCLUDE]),
outputFlags: {
emitHeaders: !sanitizedImplsOnly,
emitImplementations: !sanitizedHeadersOnly,
outputList: sanitizeEmitOption(parsedArgs[EMIT]),
singleFile: sanitizeBooleanArg(parsedArgs[SINGLE_FILE], false),
},
};
}
}