autoprompt
Simple TypeScript CLI library that bridges the gap between "commander" and "enquirer" . Automatically.
Most of the time when you are building a CLI, you want to use "commander" to parse the command line arguments and "enquirer" to prompt the user for input. This library makes it easy to use both together.
Getting Started
npm install autoprompt enquirer commander
yarn add autoprompt enquirer commander
pnpm add autoprompt enquirer commander
Usage
import { autoprompt } from 'autoprompt';
import { program } from 'commander';
interface Pizza {
name: string;
size: number;
cheese: boolean;
crust: "hand-tossed" | "pan" | "thin";
toppings: ("pepperoni" | "cheese" | "sausage" | "pineapple")[];
}
program
.option("-n, --name <string>", "Pizza name")
.option("-s, --size <number>", "Pizza size")
.option("-c, --cheese <boolean>", "Add cheese")
.option("-r, --crust <oneof:hand-tossed|pan|thin>", "Crust type")
.option(
"-t, --toppings <of:pepperoni|cheese|sausage|pineapple>",
"Toppings",
).action((opts: Pizza) => {
console.log(opts);
});
program.parse(process.argv);
await autoprompt(program);
A couple of things of note that are required for autoprompt
to work:
- The
autoprompt
function must be called after all the options have been defined. - All of the program options must have a type specified inside of
<>
after the option name. This is how autoprompt
knows what type of prompt to use. - Pass a template type to
autoprompt
that is a combination of the Command
and Enquirer
options in order for the return type to be correct.
Limitations
Right now autoprompt
only supports the following types/prompts:
string
-> input
number
-> numeral
boolean
-> confirm
oneof:<values>
-> select
of:<values>
-> multiselect
PRs are welcome to add more types/prompts!
Contributing
This repo uses biome
and pnpm
.
pnpm install
pnpm -r test
pnpm -r check
pnpm -r check --apply
pnpm -r build
pnpm -F autoprompt start
pnpm -F integration tsx bin/test.ts
pnpm -F integration tsx bin/test.ts --name "hi"