Migrate build argument parsing (#11492)

Migrate `vc build` to use updated argument parsing helpers.

Adds `try/catch` and `handleError` logic that was previously missing.
This commit is contained in:
Erika Rowland
2024-04-30 14:23:41 -07:00
committed by GitHub
parent 52e435aa5d
commit d6412be6bc
3 changed files with 22 additions and 15 deletions

View File

@@ -0,0 +1,2 @@
---
---

View File

@@ -10,7 +10,7 @@ export const buildCommand: Command = {
name: 'prod', name: 'prod',
description: 'Build a production deployment', description: 'Build a production deployment',
shorthand: null, shorthand: null,
type: String, type: Boolean,
deprecated: false, deprecated: false,
}, },
{ {

View File

@@ -43,7 +43,7 @@ import type { VercelConfig } from '@vercel/client';
import pull from '../pull'; import pull from '../pull';
import { staticFiles as getFiles } from '../../util/get-files'; import { staticFiles as getFiles } from '../../util/get-files';
import Client from '../../util/client'; import Client from '../../util/client';
import getArgs from '../../util/get-args'; import { parseArguments } from '../../util/get-args';
import cmd from '../../util/output/cmd'; import cmd from '../../util/output/cmd';
import * as cli from '../../util/pkg-name'; import * as cli from '../../util/pkg-name';
import cliPkg from '../../util/pkg'; import cliPkg from '../../util/pkg';
@@ -66,12 +66,13 @@ import {
import { importBuilders } from '../../util/build/import-builders'; import { importBuilders } from '../../util/build/import-builders';
import { initCorepack, cleanupCorepack } from '../../util/build/corepack'; import { initCorepack, cleanupCorepack } from '../../util/build/corepack';
import { sortBuilders } from '../../util/build/sort-builders'; import { sortBuilders } from '../../util/build/sort-builders';
import { toEnumerableError } from '../../util/error'; import { handleError, toEnumerableError } from '../../util/error';
import { validateConfig } from '../../util/validate-config'; import { validateConfig } from '../../util/validate-config';
import { setMonorepoDefaultSettings } from '../../util/build/monorepo'; import { setMonorepoDefaultSettings } from '../../util/build/monorepo';
import { help } from '../help'; import { help } from '../help';
import { buildCommand } from './command'; import { buildCommand } from './command';
import { scrubArgv } from '../../util/build/scrub-argv'; import { scrubArgv } from '../../util/build/scrub-argv';
import { getFlagsSpecification } from '../../util/get-flags-specification';
type BuildResult = BuildResultV2 | BuildResultV3; type BuildResult = BuildResultV2 | BuildResultV3;
@@ -133,22 +134,26 @@ export default async function main(client: Client): Promise<number> {
process.env.__VERCEL_BUILD_RUNNING = '1'; process.env.__VERCEL_BUILD_RUNNING = '1';
} }
// Parse CLI args let parsedArgs = null;
const argv = getArgs(client.argv.slice(2), {
'--output': String,
'--prod': Boolean,
'--yes': Boolean,
'-y': '--yes',
});
if (argv['--help']) { const flagsSpecification = getFlagsSpecification(buildCommand.options);
// Parse CLI args
try {
parsedArgs = parseArguments(client.argv.slice(2), flagsSpecification);
} catch (error) {
handleError(error);
return 1;
}
if (parsedArgs.flags['--help']) {
output.print(help(buildCommand, { columns: client.stderr.columns })); output.print(help(buildCommand, { columns: client.stderr.columns }));
return 2; return 2;
} }
// Build `target` influences which environment variables will be used // Build `target` influences which environment variables will be used
const target = argv['--prod'] ? 'production' : 'preview'; const target = parsedArgs.flags['--prod'] ? 'production' : 'preview';
const yes = Boolean(argv['--yes']); const yes = Boolean(parsedArgs.flags['--yes']);
try { try {
await validateNpmrc(cwd); await validateNpmrc(cwd);
@@ -213,8 +218,8 @@ export default async function main(client: Client): Promise<number> {
// Delete output directory from potential previous build // Delete output directory from potential previous build
const defaultOutputDir = join(cwd, projectRootDirectory, OUTPUT_DIR); const defaultOutputDir = join(cwd, projectRootDirectory, OUTPUT_DIR);
const outputDir = argv['--output'] const outputDir = parsedArgs.flags['--output']
? resolve(argv['--output']) ? resolve(parsedArgs.flags['--output'])
: defaultOutputDir; : defaultOutputDir;
await Promise.all([ await Promise.all([
fs.remove(outputDir), fs.remove(outputDir),