Skip to main content
Module

x/args/README.md

Extensible CLI arguments parser for Deno with intelligent TypeScript inference
Go to Latest
File

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