in eng/tools/typespec-migration-validation/src/index.ts [11:61]
function parseArguments() {
return yargs(hideBin(process.argv))
.usage('Usage: $0 [options]')
.example('$0 --oldPath ./old-spec-folder --newPath ./new-spec-file', 'Compare two swagger specs')
.example('$0 oldSpecPath newSpecPath', 'Compare using positional arguments')
.option('oldPath', {
alias: 'o',
describe: 'Path to old/original Swagger specification folder',
type: 'string',
})
.option('newPath', {
alias: 'n',
describe: 'Path to new/updated Swagger specification file',
type: 'string',
})
.option('outputFolder', {
alias: 'out',
describe: 'Output folder for analysis results',
type: 'string',
})
.check((argv) => {
const positional = argv._;
if (!argv.oldPath && positional.length > 0) {
argv.oldPath = positional[0]!.toString();
}
if (!argv.newPath && positional.length > 1) {
argv.newPath = positional[1]!.toString();
}
if (!argv.outputFolder && positional.length > 2) {
argv.outputFolder = positional[2]!.toString();
}
if (!argv.oldPath || !argv.newPath) {
throw new Error('Both oldPath and newPath are required');
}
// Verify paths exist
if (!fs.existsSync(argv.oldPath)) {
throw new Error(`oldPath does not exist: ${argv.oldPath}`);
}
if (!fs.existsSync(argv.newPath)) {
throw new Error(`newPath does not exist: ${argv.newPath}`);
}
return true;
})
.help()
.alias('help', 'h')
.parseSync();
}