import { Command } from 'commander' import { resolveTargets } from './targets' import type { BuildArgs } from './types' const DEFAULT_MANIFEST_PATH = 'scripts/build/config/server-prod-resources.json' export function parseBuildArgs(argv: string[]): BuildArgs { const program = new Command() program .allowUnknownOption(false) .allowExcessArguments(false) .exitOverride((error) => { throw new Error(error.message) }) .option('--target ', 'Build target ids or "all"', 'all') .option( '--manifest ', 'Resource manifest path', DEFAULT_MANIFEST_PATH, ) .option('--upload', 'Upload artifact zips to R2') .option('--no-upload', 'Skip zip upload to R2') program.parse(argv, { from: 'user' }) const options = program.opts<{ target: string manifest: string upload: boolean }>() return { targets: resolveTargets(options.target), manifestPath: options.manifest, upload: options.upload ?? true, } }