renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
80 lines (79 loc) • 4.25 kB
JavaScript
import { pkg } from "../../../../expose.js";
import { regEx } from "../../../../util/regex.js";
import { logger } from "../../../../logger/index.js";
import { getOptions } from "../../../../config/options/index.js";
import { coersions } from "./coersions.js";
import { Command } from "commander";
//#region lib/workers/global/config/parse/cli.ts
function getCliName(option) {
if (option.cli === false) return "";
return `--${option.name.replace(regEx(/([A-Z])/g), "-$1").toLowerCase()}`;
}
function createProgram() {
const options = getOptions();
let program = new Command().arguments("[repositories...]");
options.forEach((option) => {
if (option.cli !== false) {
const param = `<${option.type}>`.replace("<boolean>", "[boolean]");
const optionString = `${getCliName(option)} ${param}`;
program = program.option(optionString, option.description, coersions[option.type]);
}
});
/* istanbul ignore next */
function helpConsole() {
console.log(" Examples:");
console.log("");
console.log(" $ renovate --token 123test singapore/lint-condo");
console.log(" $ LOG_LEVEL=debug renovate --labels=renovate,dependency --ignore-unstable=false singapore/lint-condo");
console.log(" $ renovate singapore/lint-condo singapore/package-test");
console.log(` $ renovate singapore/lint-condo --onboarding-config='{"extends":["config:recommended"]}'`);
}
return program.version(pkg.version, "-v, --version").on("--help", helpConsole);
}
/**
* Massage migrated configuration keys.
* This must run before any Commander parse call so that
* deprecated/bare flags like `--dry-run` (no value) are rewritten
* before Commander tries to consume them.
*/
function migrateArgs(input) {
return input.map((a) => a.replace("--allow-post-upgrade-command-templating", "--allow-command-templating").replace("--allowed-post-upgrade-commands", "--allowed-commands").replace("--endpoints=", "--host-rules=").replace("--expose-env=true", "--trust-level=high").replace("--expose-env", "--trust-level=high").replace("--renovate-fork", "--include-forks").replace("\"platform\":\"", "\"hostType\":\"").replace("\"endpoint\":\"", "\"matchHost\":\"").replace("\"host\":\"", "\"matchHost\":\"").replace("--azure-auto-complete", "--platform-automerge").replace("--git-lab-automerge", "--platform-automerge").replace(/^--dry-run$/, "--dry-run=true").replace(/^--require-config$/, "--require-config=true").replace("--aliases", "--registry-aliases").replace("--include-forks=true", "--fork-processing=enabled").replace("--include-forks", "--fork-processing=enabled").replace("--recreate-closed=false", "--recreate-when=auto").replace("--recreate-closed=true", "--recreate-when=always").replace("--recreate-closed", "--recreate-when=always")).filter((a) => !a.startsWith("--git-fs"));
}
function parseEarlyFlags(input = process.argv) {
createProgram().allowUnknownOption().allowExcessArguments().parse(migrateArgs(input));
}
function getConfig(input) {
const argv = migrateArgs(input);
const options = getOptions();
const config = {};
createProgram().action((repositories, opts) => {
if (repositories?.length) config.repositories = repositories;
for (const option of options) if (option.cli !== false) {
if (opts[option.name] !== void 0) {
config[option.name] = opts[option.name];
if (option.name === "dryRun") {
if (config[option.name] === "true") {
logger.warn("cli config dryRun property has been changed to full");
config[option.name] = "full";
} else if (config[option.name] === "false") {
logger.warn("cli config dryRun property has been changed to null");
config[option.name] = null;
} else if (config[option.name] === "null") config[option.name] = null;
}
if (option.name === "requireConfig") {
if (config[option.name] === "true") {
logger.warn("cli config requireConfig property has been changed to required");
config[option.name] = "required";
} else if (config[option.name] === "false") {
logger.warn("cli config requireConfig property has been changed to optional");
config[option.name] = "optional";
}
}
}
}
}).parse(argv);
return config;
}
//#endregion
export { getConfig, parseEarlyFlags };
//# sourceMappingURL=cli.js.map