Skip to content

Commit

Permalink
feat(hooks): add hooks installation checks
Browse files Browse the repository at this point in the history
  • Loading branch information
umbopepato committed Oct 30, 2020
1 parent 66f127f commit 98c9f43
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 21 deletions.
12 changes: 9 additions & 3 deletions src/cli/commands/export.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
import { Command } from "../../../deps.ts";
import { ScriptIdType } from "../script_id_type.ts";
import { ConfigData } from "../../load_config.ts";
import { exportScripts } from "../../export_scripts.ts";
import { checkGitHooks } from "../../git_hooks.ts";
import { validateConfigData } from "../../validate_config_data.ts";

export class ExportCommand extends Command {
constructor(private configData: ConfigData | null) {
super();
this.description("Export one or more scripts as executable files")
.type("scriptid", new ScriptIdType(this.configData))
.arguments("[scripts...:scriptid]")
.option(
"-o, --out-dir [dir:string]",
"The folder where the scripts will be exported",
)
.action(async (options, scripts: string[]) => {
await exportScripts(this.configData, scripts, options.outDir);
validateConfigData(this.configData);
await checkGitHooks(this.configData as ConfigData);
await exportScripts(
this.configData as ConfigData,
scripts,
options.outDir,
);
});
}
}
8 changes: 5 additions & 3 deletions src/cli/commands/run.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
import { Command } from "../../../deps.ts";
import { ScriptIdType } from "../script_id_type.ts";
import { ConfigData } from "../../load_config.ts";
import { runScript } from "../../run_script.ts";
import { checkGitHooks } from "../../git_hooks.ts";
import { validateConfigData } from "../../validate_config_data.ts";

export class RunCommand extends Command {
constructor(private configData: ConfigData | null) {
super();
this.description("Run a script")
.type("scriptid", new ScriptIdType(this.configData))
.arguments("<script:scriptid> [additionalArgs...]")
.useRawArgs()
.action(async (options, script: string, ...additionalArgs: string[]) => {
if (script === "--help" || script === "-h") {
console.log(this.getHelp());
return;
}
await runScript(this.configData, script, additionalArgs);
validateConfigData(this.configData);
await checkGitHooks(this.configData as ConfigData);
await runScript(this.configData as ConfigData, script, additionalArgs);
});
}
}
21 changes: 16 additions & 5 deletions src/cli/commands/vr.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import { Command, CompletionsCommand } from "../../../deps.ts";
import { version } from "../../version.ts";
import { ScriptIdType } from "../script_id_type.ts";
import { ScriptIdType } from "../types/script_id_type.ts";
import { ConfigData } from "../../load_config.ts";
import { RunCommand } from "./run.ts";
import { ExportCommand } from "./export.ts";
import { runScript } from "../../run_script.ts";
import { RunHookCommand } from "./run_hook.ts";
import { VR_HOOKS, VR_LOG, VR_SHELL } from "../../consts.ts";
import { checkGitHooks } from "../../git_hooks.ts";
import { validateConfigData } from "../../validate_config_data.ts";

export class VrCommand extends Command {
constructor(private configData: ConfigData | null) {
Expand All @@ -15,20 +19,27 @@ export class VrCommand extends Command {
"🦖 Velociraptor\nAn npm-style script runner for Deno\n\nDocs: https://velociraptor.run",
)
.env(
"VR_SHELL=<value:string>",
`${VR_SHELL}=<value:string>`,
"The path to a shell executable to be used for executing scripts",
)
.env(
"VR_LOG=<value:string>",
`${VR_LOG}=<value:string>`,
"Log verbosity. One of: DEBUG, INFO, WARNING, ERROR, CRITICAL",
)
.type("scriptid", new ScriptIdType(this.configData))
.env(
`${VR_HOOKS}=<value:boolean>`,
"If 'false', prevents velociraptor from installing and running git hooks (ie for CI)",
)
.type("scriptid", new ScriptIdType(this.configData), { global: true })
.arguments("[script:scriptid] [additionalArgs...]")
.stopEarly()
.action(async (options, script: string, additionalArgs: string[]) => {
await runScript(this.configData, script, additionalArgs);
validateConfigData(this.configData);
await checkGitHooks(this.configData as ConfigData);
await runScript(this.configData as ConfigData, script, additionalArgs);
})
.command("run", new RunCommand(this.configData))
.command("run-hook", new RunHookCommand(this.configData))
.command("export", new ExportCommand(this.configData))
.command("completions", new CompletionsCommand())
.reset();
Expand Down
8 changes: 0 additions & 8 deletions src/cli/types/hook_type.ts

This file was deleted.

4 changes: 2 additions & 2 deletions src/cli/script_id_type.ts → src/cli/types/script_id_type.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { StringType } from "../../deps.ts";
import { ConfigData } from "../load_config.ts";
import { StringType } from "../../../deps.ts";
import { ConfigData } from "../../load_config.ts";

export class ScriptIdType extends StringType {
constructor(private configData: ConfigData | null) {
Expand Down

0 comments on commit 98c9f43

Please sign in to comment.