@gmjs/cli-wrapper
Version:
99 lines (76 loc) • 1.96 kB
Markdown
this is arbitrary.
```ts
import { join } from 'node:path';
import { cli } from '@gmjs/cli-wrapper';
import { readPackageJsonSync } from '@gmjs/package-json';
export function run(): void {
const result = cli(
`
Usage
$ jsgen <input>
Options
--config, -c Path to config file
--output, -o Output directory
--project-name, -p Project name
Examples
$ jsgen --config config.json --output . --project-name my-project
`,
{
meta: {
version: readPackageJsonSync(join(__dirname, '..')).version ?? '',
},
options: {
config: {
type: 'string',
short: 'c',
required: true,
},
output: {
type: 'string',
short: 'o',
required: false,
},
projectName: {
type: 'string',
short: 'p',
required: false,
},
},
}
);
console.log(result);
// use result here however you want
}
run();
```
After executing `jsgen -c config.json -o output -p project`, the above code will output (from `console.log(result)`):
```
{
success: true,
options: {
config: { type: 'string', multiple: false, value: 'config.json' },
output: { type: 'string', multiple: false, value: 'output' },
projectName: { type: 'string', multiple: false, value: 'project' }
}
}
```
If there is an error, for example, if we omit a required parameter, like if we just used `jsgen`.
`cli()` function would output:
```
Missing required option 'config'.
```
And `console.log(result)` would output:
```
{ success: false, options: {} }
```
Use `--version` or `-v` to output version.
Use `--help` or `-h` to output help (which is the description passed in as the first parameter to `cli()`).
```bash
npm install --save @gmjs/cli-wrapper
```
As an example, we are implementing a command called `jsgen`, but