Skip to main content
Deno 2 is finally here 🎉️
Learn more

Deno Args

Travis Build Status

Extensible CLI arguments parser for Deno with intelligent TypeScript inference.

Usage Examples

import args from "https://deno.land/x/args@1.0.7/wrapper.ts";
import {
  EarlyExitFlag,
  Option,
} from "https://deno.land/x/args@1.0.7/flag-types.ts";
import {
  FiniteNumber,
  Choice,
} from "https://deno.land/x/args@1.0.7/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

My Patreon Page.

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

License

MIT © Hoàng Văn Khải