diff options
Diffstat (limited to 'packages/upgrade')
-rw-r--r-- | packages/upgrade/src/actions/context.ts | 28 | ||||
-rw-r--r-- | packages/upgrade/test/context.test.js | 4 |
2 files changed, 17 insertions, 15 deletions
diff --git a/packages/upgrade/src/actions/context.ts b/packages/upgrade/src/actions/context.ts index cd9028e85..2103a5327 100644 --- a/packages/upgrade/src/actions/context.ts +++ b/packages/upgrade/src/actions/context.ts @@ -1,13 +1,13 @@ import { pathToFileURL } from 'node:url'; -import { parseArgs } from 'node:util'; import { prompt } from '@astrojs/cli-kit'; +import arg from 'arg'; import detectPackageManager from 'preferred-pm'; export interface Context { help: boolean; prompt: typeof prompt; version: string; - dryRun: boolean; + dryRun?: boolean; cwd: URL; stdin?: typeof process.stdin; stdout?: typeof process.stdout; @@ -28,20 +28,22 @@ export interface PackageInfo { } export async function getContext(argv: string[]): Promise<Context> { - const args = parseArgs({ - args: argv, - allowPositionals: true, - strict: false, - options: { - 'dry-run': { type: 'boolean' }, - help: { type: 'boolean', short: 'h' }, + const flags = arg( + { + '--dry-run': Boolean, + '--help': Boolean, + + '-h': '--help', }, - }); + { argv, permissive: true }, + ); const packageManager = (await detectPackageManager(process.cwd()))?.name ?? 'npm'; - const version = args.positionals[0] ?? 'latest'; - const help = !!args.values.help; - const dryRun = !!args.values['dry-run']; + const { + _: [version = 'latest'] = [], + '--help': help = false, + '--dry-run': dryRun, + } = flags; return { help, diff --git a/packages/upgrade/test/context.test.js b/packages/upgrade/test/context.test.js index 5ba484740..bbc887c2a 100644 --- a/packages/upgrade/test/context.test.js +++ b/packages/upgrade/test/context.test.js @@ -6,12 +6,12 @@ describe('context', () => { it('no arguments', async () => { const ctx = await getContext([]); assert.equal(ctx.version, 'latest'); - assert.equal(ctx.dryRun, false); + assert.equal(ctx.dryRun, undefined); }); it('tag', async () => { const ctx = await getContext(['beta']); assert.equal(ctx.version, 'beta'); - assert.equal(ctx.dryRun, false); + assert.equal(ctx.dryRun, undefined); }); it('dry run', async () => { const ctx = await getContext(['--dry-run']); |