import * as plugins from "./plugins.js"; import * as paths from "./paths.js"; import { GitzoneConfig } from "./classes.gitzoneconfig.js"; import { getRawCliMode } from "./helpers.climode.js"; const gitzoneSmartcli = new plugins.smartcli.Smartcli(); export let run = async () => { const done = plugins.smartpromise.defer(); const rawCliMode = await getRawCliMode(); // get packageInfo const projectInfo = new plugins.projectinfo.ProjectInfo(paths.packageDir); // check for updates if (rawCliMode.checkUpdates) { const smartupdateInstance = new plugins.smartupdate.SmartUpdate(); await smartupdateInstance.check( "gitzone", projectInfo.npm.version, "http://gitzone.gitlab.io/gitzone/changelog.html", ); } if (rawCliMode.output === "human") { console.log("---------------------------------------------"); } gitzoneSmartcli.addVersion(projectInfo.npm.version); // ======> Standard task <====== /** * standard task */ gitzoneSmartcli.standardCommand().subscribe(async (argvArg) => { const modStandard = await import("./mod_standard/index.js"); await modStandard.run(argvArg); }); gitzoneSmartcli.addCommand("help").subscribe(async (argvArg) => { const modStandard = await import("./mod_standard/index.js"); await modStandard.run(argvArg); }); // ======> Specific tasks <====== /** * commit something */ gitzoneSmartcli.addCommand("commit").subscribe(async (argvArg) => { const modCommit = await import("./mod_commit/index.js"); await modCommit.run(argvArg); }); /** * deprecate a package on npm */ gitzoneSmartcli.addCommand("deprecate").subscribe(async (argvArg) => { const modDeprecate = await import("./mod_deprecate/index.js"); await modDeprecate.run(); }); /** * docker */ gitzoneSmartcli.addCommand("docker").subscribe(async (argvArg) => { const modDocker = await import("./mod_docker/index.js"); await modDocker.run(argvArg); }); /** * Update all files that comply with the gitzone standard */ gitzoneSmartcli.addCommand("format").subscribe(async (argvArg) => { const config = GitzoneConfig.fromCwd(); const modFormat = await import("./mod_format/index.js"); // Handle format with options // Default is dry-mode, use --write/-w to apply changes await modFormat.run({ ...argvArg, write: argvArg.write || argvArg.w, dryRun: argvArg["dry-run"], yes: argvArg.yes, planOnly: argvArg["plan-only"], savePlan: argvArg["save-plan"], fromPlan: argvArg["from-plan"], detailed: argvArg.detailed, interactive: argvArg.interactive !== false, verbose: argvArg.verbose, diff: argvArg.diff, }); }); /** * run meta commands */ gitzoneSmartcli.addCommand("meta").subscribe(async (argvArg) => { const config = GitzoneConfig.fromCwd(); const modMeta = await import("./mod_meta/index.js"); modMeta.run(argvArg); }); /** * open assets */ gitzoneSmartcli.addCommand("open").subscribe(async (argvArg) => { const modOpen = await import("./mod_open/index.js"); modOpen.run(argvArg); }); /** * add a readme to a project */ gitzoneSmartcli.addCommand("template").subscribe(async (argvArg) => { const modTemplate = await import("./mod_template/index.js"); modTemplate.run(argvArg); }); /** * start working on a project */ gitzoneSmartcli.addCommand("start").subscribe(async (argvArg) => { const modTemplate = await import("./mod_start/index.js"); modTemplate.run(argvArg); }); gitzoneSmartcli.addCommand("helpers").subscribe(async (argvArg) => { const modHelpers = await import("./mod_helpers/index.js"); modHelpers.run(argvArg); }); /** * manage release configuration */ gitzoneSmartcli.addCommand("config").subscribe(async (argvArg) => { const modConfig = await import("./mod_config/index.js"); await modConfig.run(argvArg); }); /** * manage development services (MongoDB, S3/MinIO) */ gitzoneSmartcli.addCommand("services").subscribe(async (argvArg) => { const modServices = await import("./mod_services/index.js"); await modServices.run(argvArg); }); // start parsing of the cli gitzoneSmartcli.startParse(); return await done.promise; };