Files
cli/ts/gitzone.cli.ts
T

138 lines
3.9 KiB
TypeScript

import * as plugins from "./plugins.js";
import * as paths from "./paths.js";
import {
getProcessUserArgv,
getRawCliMode,
parseCliArgv,
} from "./helpers.climode.js";
import { commitinfo } from "./00_commitinfo_data.js";
const runParsedCommand = async (argvArg: any): Promise<void> => {
const command = argvArg._?.[0];
switch (command) {
case undefined:
case "help": {
const modStandard = await import("./mod_standard/index.js");
await modStandard.run(argvArg);
break;
}
case "commit": {
const modCommit = await import("./mod_commit/index.js");
await modCommit.run(argvArg);
break;
}
case "release": {
const modRelease = await import("./mod_release/index.js");
await modRelease.run(argvArg);
break;
}
case "deprecate": {
const modDeprecate = await import("./mod_deprecate/index.js");
await modDeprecate.run();
break;
}
case "docker": {
const modDocker = await import("./mod_docker/index.js");
await modDocker.run(argvArg);
break;
}
case "format": {
const modFormat = await import("./mod_format/index.js");
await modFormat.run({
...argvArg,
write: argvArg.write || argvArg.w,
dryRun: argvArg["dry-run"],
yes: argvArg.yes || argvArg.y,
planOnly: argvArg["plan-only"] || argvArg.planOnly,
savePlan: argvArg["save-plan"] || argvArg.savePlan,
fromPlan: argvArg["from-plan"] || argvArg.fromPlan,
detailed: argvArg.detailed,
interactive: argvArg.interactive !== false,
verbose: argvArg.verbose,
diff: argvArg.diff,
});
break;
}
case "meta": {
const modMeta = await import("./mod_meta/index.js");
await modMeta.run(argvArg);
break;
}
case "open": {
const modOpen = await import("./mod_open/index.js");
await modOpen.run(argvArg);
break;
}
case "template": {
const modTemplate = await import("./mod_template/index.js");
await modTemplate.run(argvArg);
break;
}
case "start": {
const modStart = await import("./mod_start/index.js");
await modStart.run(argvArg);
break;
}
case "helpers": {
const modHelpers = await import("./mod_helpers/index.js");
await modHelpers.run(argvArg);
break;
}
case "tools": {
const modTools = await import("./mod_tools/index.js");
await modTools.run(argvArg);
break;
}
case "config": {
const modConfig = await import("./mod_config/index.js");
await modConfig.run(argvArg);
break;
}
case "services": {
const modServices = await import("./mod_services/index.js");
await modServices.run(argvArg);
break;
}
default: {
const modStandard = await import("./mod_standard/index.js");
await modStandard.run(argvArg);
}
}
};
export let run = async () => {
const rawCliMode = await getRawCliMode();
// get packageInfo
const projectInfo = new plugins.projectinfo.ProjectInfo(paths.packageDir);
const projectInfoVersion = (projectInfo.npm as any)?.version;
const packageVersion =
typeof projectInfoVersion === "string" && projectInfoVersion.length > 0
? projectInfoVersion
: commitinfo.version;
// check for updates
if (rawCliMode.checkUpdates) {
const smartupdateInstance = new plugins.smartupdate.SmartUpdate();
try {
await smartupdateInstance.check(
"gitzone",
packageVersion,
"http://gitzone.gitlab.io/gitzone/changelog.html",
);
} catch {
// Update checks must never block actual CLI commands.
}
}
if (rawCliMode.output === "human") {
console.log("---------------------------------------------");
}
const argvArg = parseCliArgv(getProcessUserArgv());
if (argvArg.v || argvArg.version) {
console.log(packageVersion);
return;
}
await runParsedCommand(argvArg);
};