Deno Args
Extensible CLI arguments parser for Deno with intelligent TypeScript inference.
Usage Examples
import args from "https://deno.land/x/args@1.0.5/wrapper.ts";
import {
EarlyExitFlag,
Option,
} from "https://deno.land/x/args@1.0.5/flag-types.ts";
import {
FiniteNumber,
Choice,
} from "https://deno.land/x/args@1.0.5/value-types.ts";
const parser = args
.with(
EarlyExitFlag("help", {
describe: "Show help",
exit() {
console.log(parser.help());
return Deno.exit();
},
})
)
.with(
Option("a", {
type: FiniteNumber,
describe: "Value of a",
})
)
.with(
Option("b", {
type: FiniteNumber,
describe: "Value of b",
})
)
.with(
Option("operator", {
type: Choice<"add" | "sub">(
{
value: "add",
describe: "Add two numbers",
},
{
value: "sub",
describe: "Subtract two numbers",
}
),
alias: ["o"],
describe: "Operator to use",
})
);
const res = parser.parse(Deno.args);
if (res.error) {
console.error("Failed to parse CLI arguments");
for (const e of res.error) {
console.error(e.toString);
}
Deno.exit(1);
} else {
const { a, b, operator } = res.value;
switch (operator) {
case "add":
console.log(a + b);
case "sub":
console.log(a - b);
}
}
Sample Apps
Become a Patron
Development
All tasks are in Drakefile.ts.
Run all tests
deno -A Drakefile.ts all
Fix files
env UPDATE=true deno -A Drakefile.ts all