4.0.0 • Published 1 year ago

@jclem/result v4.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

@jclem/cli

Parses command-line arguments into a set of positional args and a map of flags.

Usage

First, you can parse arguments into separate positional and named flags. All flags are parsed into arrays of (string | true) (value-less flags are parsed as true).

import { parseArgs } from "@jclem/cli";

// Bun.args = ["bun", "run-script", "--foo=foo", "--foo=foo2", "bar", "baz"]
const parsed = parseArgs(Bun.args.slice(2));

// {
//   positional: ["bar", "baz"],
//   flags: { foo: ["foo", "foo2"] }
// }

Although this package has no direct dependency on Zod, it is easy to use Zod to parse the flags into a more structured format.

import { z } from "zod";

const string = z.tuple([z.string()]).transform(([v]) => v);
const boolean = z.tuple([z.boolean()]).transform(([v]) => v);

const mySchema = z.object({
  positional: z.tuple([z.string(), z.coerce.number()]),
  flags: z.object({
    foo: string,
    t: boolean,
  }),
});

// Bun.args = ["bun", "run-script", "--foo=bar", "-t", "abc", "123"]
const parsedArgs = parseArgs(Bun.args.slice(2));
const result = mySchema.parse(parsedArgs);

// {
//   positional: ["abc", 123],
//   flags: { foo: "bar", t: true },
// }
4.0.0

1 year ago

3.0.1

2 years ago

3.0.0

2 years ago

2.0.1

2 years ago

2.0.0

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.2.2

3 years ago

0.2.1

3 years ago

0.2.0

3 years ago

0.1.0

3 years ago