aboutsummaryrefslogtreecommitdiff
path: root/packages/upgrade
diff options
context:
space:
mode:
Diffstat (limited to 'packages/upgrade')
-rw-r--r--packages/upgrade/src/actions/context.ts28
-rw-r--r--packages/upgrade/test/context.test.js4
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']);