diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-06-13 17:43:10 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-06-13 17:43:10 +0800 |
commit | 83401de7ffd726cb02903f0db1f45f981da30c3f (patch) | |
tree | 297fe44e1ab758cadf9c01801b64daaabd89eaf8 /deno/tools/manage-service.ts | |
parent | f0d4e0d641d4c5b2ce6bd1ad447944c8958d5f1d (diff) | |
download | crupest-83401de7ffd726cb02903f0db1f45f981da30c3f.tar.gz crupest-83401de7ffd726cb02903f0db1f45f981da30c3f.tar.bz2 crupest-83401de7ffd726cb02903f0db1f45f981da30c3f.zip |
deno: use yargs in manage-service.
Diffstat (limited to 'deno/tools/manage-service.ts')
-rw-r--r-- | deno/tools/manage-service.ts | 73 |
1 files changed, 38 insertions, 35 deletions
diff --git a/deno/tools/manage-service.ts b/deno/tools/manage-service.ts index 45e09ec..148f55a 100644 --- a/deno/tools/manage-service.ts +++ b/deno/tools/manage-service.ts @@ -1,39 +1,42 @@ -import { parseArgs } from "@std/cli"; -import { TemplateDir } from "./template.ts"; import { join } from "@std/path"; +// @ts-types="npm:@types/yargs" +import yargs from "yargs"; -if (import.meta.main) { - const args = parseArgs(Deno.args, { - string: ["project-dir"], - boolean: ["no-dry-run"], - }); - - if (args._.length === 0) { - throw new Error("You must specify a command."); - } - - const projectDir = args["project-dir"]; - if (projectDir == null) { - throw new Error("You must specify project-dir."); - } - - const command = String(args._[0]); +import { TemplateDir } from "./template.ts"; - switch (command) { - case "gen-tmpl": - new TemplateDir( - join(projectDir, "services/templates"), - ).generateWithVariableFiles( - [ - join(projectDir, "data/config"), - join(projectDir, "services/config.template"), - ], - args["no-dry-run"] === true - ? join(projectDir, "services/generated") - : undefined, - ); - break; - default: - throw new Error(command + " is not a valid command."); - } +if (import.meta.main) { + await yargs(Deno.args) + .scriptName("manage-service") + .option("project-dir", { + type: "string", + }) + .demandOption("project-dir") + .command({ + command: "gen-tmpl", + describe: "generate files for templates", + builder: (builder) => { + return builder + .option("dry-run", { + type: "boolean", + default: true, + }) + .strict(); + }, + handler: (argv) => { + const { projectDir, dryRun } = argv; + new TemplateDir( + join(projectDir, "services/templates"), + ).generateWithVariableFiles( + [ + join(projectDir, "data/config"), + join(projectDir, "services/config.template"), + ], + dryRun ? undefined : join(projectDir, "services/generated"), + ); + }, + }) + .demandCommand(1, "One command must be specified.") + .help() + .strict() + .parse(); } |