2020-08-16 17:20:37 +00:00
|
|
|
import { Cliffy, Path, Colors } from "./deps.ts";
|
2020-07-28 17:43:58 +00:00
|
|
|
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";
|
2020-08-02 21:40:12 +00:00
|
|
|
import deprecateCMD from "./commands/deprecate.ts";
|
2020-08-16 17:28:27 +00:00
|
|
|
import upgradeCMD from "./commands/upgrade.ts";
|
2020-07-28 17:43:58 +00:00
|
|
|
|
2020-08-16 17:37:09 +00:00
|
|
|
let version = "unknown";
|
|
|
|
|
|
|
|
try {
|
|
|
|
const v = await import("./version.ts");
|
|
|
|
version = v.version;
|
|
|
|
} catch (err) {}
|
|
|
|
|
2020-07-28 17:43:58 +00:00
|
|
|
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")
|
2020-08-16 17:37:09 +00:00
|
|
|
.version(version)
|
2020-07-28 17:43:58 +00:00
|
|
|
.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,
|
|
|
|
})
|
2020-07-31 17:45:14 +00:00
|
|
|
.option("-v, --verbose [verbose:boolean]", "Verbose", {
|
2020-07-28 17:43:58 +00:00
|
|
|
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))
|
2020-08-16 09:39:56 +00:00
|
|
|
.option("-d, --dry [dry:boolean]", "Dry run", {
|
|
|
|
default: false,
|
|
|
|
})
|
2020-07-28 17:43:58 +00:00
|
|
|
)
|
|
|
|
.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))
|
|
|
|
)
|
2020-08-02 21:40:12 +00:00
|
|
|
.command(
|
|
|
|
"deprecate",
|
|
|
|
new Cliffy.Command()
|
|
|
|
.description("Deprecate package")
|
|
|
|
.action(commandWrapper(deprecateCMD))
|
|
|
|
)
|
2020-08-16 17:28:27 +00:00
|
|
|
.command(
|
|
|
|
"upgrade",
|
|
|
|
new Cliffy.Command()
|
|
|
|
.description("Upgrade to latest version of denreg cli")
|
|
|
|
.action(commandWrapper(upgradeCMD))
|
|
|
|
)
|
2020-07-28 17:43:58 +00:00
|
|
|
.command("completions", new Cliffy.CompletionsCommand())
|
|
|
|
.parse(Deno.args);
|
|
|
|
|
|
|
|
await init(flags.options);
|
|
|
|
|
|
|
|
if (command) {
|
2020-08-16 17:20:37 +00:00
|
|
|
try {
|
|
|
|
await Promise.resolve((command as CommandHandler)(...opts));
|
|
|
|
} catch (err) {
|
|
|
|
console.log(Colors.bold(Colors.red("An error occured:")), err.message);
|
|
|
|
}
|
2020-07-28 17:43:58 +00:00
|
|
|
}
|