DenReg/cli/denreg.ts
Fabian Stamm ccc48b0480
All checks were successful
continuous-integration/drone/push Build is passing
Add dry run upload and adding additional verbose output
2020-08-16 11:39:56 +02:00

85 lines
2.4 KiB
TypeScript

import { Cliffy, Path } from "./deps.ts";
import { init } from "./global.ts";
import setupCMD from "./commands/setup.ts";
import initCMD from "./commands/init.ts";
import bumpCMD from "./commands/bump.ts";
import publishCMD from "./commands/publish.ts";
import deprecateCMD from "./commands/deprecate.ts";
const HOME_FOLDER = Deno.env.get("HOME") || Deno.env.get("USERPROFILE") || "";
type CommandHandler = (...opts: any[]) => void | Promise<void>;
let command: CommandHandler | undefined = undefined;
let opts: any[] = [];
// const debounce = (fnc: any) => (...args: any[]) => {
// new Promise((y) => setTimeout(y, 0)).then(() => fnc(...args));
// }; //Put function call into queue
const commandWrapper = (cmd: CommandHandler) => {
return (...params: any[]) => {
command = cmd;
opts = params;
};
};
const flags = await new Cliffy.Command()
.name("denreg")
.version("1.1.9")
.description("CLI for the Open Source DenReg package registry")
.option("-i, --interactive [interactive:boolean]", "Interactive mode", {
default: true,
global: true,
})
.option("-c, --config <config>", "Config file", {
default: Path.resolve(HOME_FOLDER, ".denreg"),
global: true,
})
.option("-v, --verbose [verbose:boolean]", "Verbose", {
default: false,
global: true,
})
.command(
"setup",
new Cliffy.Command()
.description("Configure cli")
.action(commandWrapper(setupCMD))
)
.command(
"publish",
new Cliffy.Command()
.description("Upload package")
.action(commandWrapper(publishCMD))
.option("-d, --dry [dry:boolean]", "Dry run", {
default: false,
})
)
.command(
"init",
new Cliffy.Command()
.description("Create meta.json")
.action(commandWrapper(initCMD))
)
.command(
"bump",
new Cliffy.Command()
.complete("major|minor|patch", () => ["major", "minor", "patch"])
.arguments("<major|minor|patch>")
.description("Change package version")
.action(commandWrapper(bumpCMD))
)
.command(
"deprecate",
new Cliffy.Command()
.description("Deprecate package")
.action(commandWrapper(deprecateCMD))
)
.command("completions", new Cliffy.CompletionsCommand())
.parse(Deno.args);
await init(flags.options);
if (command) {
await Promise.resolve((command as CommandHandler)(...opts));
}