#!/usr/bin/env node import meow from "meow"; import { barrel } from "../barreler/index"; import { BarrelerOptions } from "../barreler/model"; const cli = meow( ` Usage $ barreler Options --mode, -m Select mode values = ['all-level-index', 'multifile-index'], Default: 'multifile-index' --extensions, -ext Selects mode how extensions will be rendered, values = ['none', 'same-as-file', 'custom'], Default: 'none' - none, generates: export {} from './file' - same-as-file, generates: export {} from './file.ts' - custom, assuming --customExt=mjs generates: export {} from './file.mjs' --customExt, -ce Sets extension for custom extension mode --include, -i Sets pattern for file inclusion. Comma separated list. default: *.[jt]s(x)? --exclude, -e Sets pattern for file exclusion. Comma separated list. default: *(spec|test).[jt]s(x)?,*__tests__/*.[jt]s(x)?,*__snapshots__/* Examples $ barreler ./file.ts ./folder `, { flags: { mode: { type: "string", shortFlag: "m", }, extensions: { type: "string", shortFlag: "ext", }, customExt: { type: "string", shortFlat: "ce", }, include: { type: "string", shortFlag: "i", }, exclude: { type: "string", shortFlag: "e", }, }, } ); const run = async (files: string[], flags: any) => { if (!files || files.length === 0) { cli.showHelp(); return; } const options: Partial = {}; if (flags.mode) options.mode = flags.mode; if (flags.include) options.include = flags.include.split(","); if (flags.exclude) options.exclude = flags.exclude.split(","); if (flags.extensions) options.extensions = flags.extensions; if (flags.customExt) options.customExtension = flags.customExt; await barrel(files, options); console.log("Barreler finished."); }; run(cli.input, cli.flags);