mirror of
https://github.com/LukeHagar/vercel.git
synced 2025-12-10 04:22:12 +00:00
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:
2
.changeset/strange-zoos-sit.md
Normal file
2
.changeset/strange-zoos-sit.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
---
|
||||||
@@ -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,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
Reference in New Issue
Block a user