From dd84b9d64fb98746a230cd24233ff50a562c39c9 Mon Sep 17 00:00:00 2001 From: 简律纯 Date: Fri, 28 Apr 2023 01:36:44 +0800 Subject: --- packages/turbo-ignore/src/args.ts | 89 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 packages/turbo-ignore/src/args.ts (limited to 'packages/turbo-ignore/src/args.ts') diff --git a/packages/turbo-ignore/src/args.ts b/packages/turbo-ignore/src/args.ts new file mode 100644 index 0000000..8d6015c --- /dev/null +++ b/packages/turbo-ignore/src/args.ts @@ -0,0 +1,89 @@ +import pkg from "../package.json"; +import { TurboIgnoreArgs } from "./types"; +import { + skipAllCommits, + forceAllCommits, + skipWorkspaceCommits, + forceWorkspaceCommits, +} from "./checkCommit"; + +export const help = ` +turbo-ignore + +Automatically ignore builds that have no changes + +Usage: + $ npx turbo-ignore [] [flags...] + +If is not provided, it will be inferred from the "name" +field of the "package.json" located at the current working directory. + +Flags: + --fallback= On Vercel, if no previously deployed SHA is available to compare against, + fallback to comparing against the provided ref + --help, -h Show this help message + --version, -v Show the version of this script + +--- + +turbo-ignore will also check for special commit messages to indicate if a build should be skipped or not. + +Skip turbo-ignore check and automatically ignore: +${[...skipAllCommits, ...skipWorkspaceCommits({ workspace: "" })] + .map((msg) => ` - ${msg}`) + .join("\n")} + +Skip turbo-ignore check and automatically deploy: +${[...forceAllCommits, ...forceWorkspaceCommits({ workspace: "" })] + .map((msg) => ` - ${msg}`) + .join("\n")} +`; + +// simple args parser because we don't want to pull in a dependency +// and we don't need many features +export default function parseArgs({ + argv, +}: { + argv: Array; +}): TurboIgnoreArgs { + const args: TurboIgnoreArgs = { directory: process.cwd() }; + + // find all flags + const flags = new Set( + argv + .filter((args) => args.startsWith("-")) + .map((flag) => flag.replace(/-/g, "")) + ); + + // handle help flag and exit + if (flags.has("help") || flags.has("h")) { + console.log(help); + process.exit(0); + } + // handle version flag and exit + if (flags.has("version") || flags.has("v")) { + console.log(pkg.version); + process.exit(0); + } + + // set workspace (if provided) + if (argv.length && !argv[0].startsWith("-")) { + args.workspace = argv[0]; + } + + // set task (if provided) + const taskArgSentinel = "--task="; + const taskArg = argv.find((arg) => arg.startsWith(taskArgSentinel)); + if (taskArg && taskArg.length > taskArgSentinel.length) { + args.task = taskArg.split("=")[1]; + } + + // set fallback (if provided) + const fallbackSentinel = "--fallback="; + const fallbackArg = argv.find((arg) => arg.startsWith(fallbackSentinel)); + if (fallbackArg && fallbackArg.length > fallbackSentinel.length) { + args.fallback = fallbackArg.split("=")[1]; + } + + return args; +} -- cgit v1.2.3-70-g09d2