43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
#!/usr/bin/env node
|
|
import {
|
|
confirm,
|
|
multiselect,
|
|
select,
|
|
text,
|
|
} from "@suaveplan/cli/prompt/prompt";
|
|
import { runCli } from "../cli/cli.js";
|
|
import type { Prompter } from "../types/electrobun.types.js";
|
|
|
|
const cliPrompter: Prompter = {
|
|
text: (opts) => text(opts),
|
|
confirm: (opts) => confirm(opts),
|
|
select: <T extends string>(opts: {
|
|
message: string;
|
|
choices: ReadonlyArray<{ value: T; label: string }>;
|
|
default?: T;
|
|
}): Promise<T> =>
|
|
select<T>({
|
|
message: opts.message,
|
|
choices: [...opts.choices],
|
|
...(opts.default === undefined ? {} : { default: opts.default }),
|
|
}),
|
|
multiselect: <T extends string>(opts: {
|
|
message: string;
|
|
choices: ReadonlyArray<{ value: T; label: string }>;
|
|
}): Promise<readonly T[]> =>
|
|
multiselect<T>({
|
|
message: opts.message,
|
|
choices: [...opts.choices],
|
|
}) as Promise<readonly T[]>,
|
|
};
|
|
|
|
runCli(process.argv.slice(2), { prompter: cliPrompter }).then(
|
|
({ code }) => {
|
|
process.exit(code);
|
|
},
|
|
(err) => {
|
|
process.stderr.write(`${String(err)}\n`);
|
|
process.exit(2);
|
|
}
|
|
);
|