import { __toESM, bumpConfigDefaults, isReleaseType, loadBumpConfig, log_symbols_default, require_picocolors, versionBump } from "../chunk-L3LY4KGC.mjs"; // package.json var version = "9.1.0"; // src/cli/parse-args.ts var import_picocolors = __toESM(require_picocolors()); import { valid as isValidVersion } from "semver"; import cac from "cac"; async function parseArgs() { var _a; try { const cli = cac("bumpp"); cli.version(version).usage("[...files]").option("--preid ", "ID for prerelease").option("--all", `Include all files (default: ${bumpConfigDefaults.all})`).option("-c, --commit [msg]", `Commit message (default: ${bumpConfigDefaults.commit})`).option("-t, --tag [tag]", `Tag name (default: ${bumpConfigDefaults.tag})`).option("-p, --push", `Push to remote (default: ${bumpConfigDefaults.push})`).option("-y, --yes", `Skip confirmation (default: ${!bumpConfigDefaults.confirm})`).option("-r, --recursive", `Bump package.json files recursively (default: ${bumpConfigDefaults.recursive})`).option("--no-verify", "Skip git verification").option("--ignore-scripts", `Ignore scripts (default: ${bumpConfigDefaults.ignoreScripts})`).option("-q, --quiet", "Quiet mode").option("-v, --version ", "Tagert version").option("-x, --execute ", "Commands to execute after version bumps").help(); const result = cli.parse(); const args = result.options; const parsedArgs = { help: args.help, version: args.version, quiet: args.quiet, options: await loadBumpConfig({ preid: args.preid, commit: args.commit, tag: args.tag, push: args.push, all: args.all, confirm: !args.yes, noVerify: !args.verify, files: [...args["--"] || [], ...result.args], ignoreScripts: args.ignoreScripts, execute: args.execute, recursive: !!args.recursive }) }; if (parsedArgs.options.files && parsedArgs.options.files.length > 0) { const firstArg = parsedArgs.options.files[0]; if (firstArg === "prompt" || isReleaseType(firstArg) || isValidVersion(firstArg)) { parsedArgs.options.release = firstArg; parsedArgs.options.files.shift(); } } if (parsedArgs.options.recursive) { if ((_a = parsedArgs.options.files) == null ? void 0 : _a.length) console.log(import_picocolors.default.yellow("The --recursive option is ignored when files are specified")); else parsedArgs.options.files = ["package.json", "package-lock.json", "packages/**/package.json"]; } return parsedArgs; } catch (error) { return errorHandler(error); } } function errorHandler(error) { console.error(error.message); return process.exit(9 /* InvalidArgument */); } // src/cli/index.ts async function main() { try { process.on("uncaughtException", errorHandler2); process.on("unhandledRejection", errorHandler2); const { help, version: version2, quiet, options } = await parseArgs(); if (help) { process.exit(0 /* Success */); } else if (version2) { console.log(version); process.exit(0 /* Success */); } else { if (!quiet) options.progress = options.progress ? options.progress : progress; await versionBump(options); } } catch (error) { errorHandler2(error); } } function progress({ event, script, updatedFiles, skippedFiles, newVersion }) { switch (event) { case "file updated" /* FileUpdated */: console.log(log_symbols_default.success, `Updated ${updatedFiles.pop()} to ${newVersion}`); break; case "file skipped" /* FileSkipped */: console.log(log_symbols_default.info, `${skippedFiles.pop()} did not need to be updated`); break; case "git commit" /* GitCommit */: console.log(log_symbols_default.success, "Git commit"); break; case "git tag" /* GitTag */: console.log(log_symbols_default.success, "Git tag"); break; case "git push" /* GitPush */: console.log(log_symbols_default.success, "Git push"); break; case "npm script" /* NpmScript */: console.log(log_symbols_default.success, `Npm run ${script}`); break; } } function errorHandler2(error) { let message = error.message || String(error); if (process.env.DEBUG || process.env.NODE_ENV === "development") message = error.stack || message; console.error(message); process.exit(1 /* FatalError */); } export { main };