Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/therebelrobot/incli
▶️streamline cli creation
https://github.com/therebelrobot/incli
Last synced: 9 days ago
JSON representation
▶️streamline cli creation
- Host: GitHub
- URL: https://github.com/therebelrobot/incli
- Owner: therebelrobot
- License: mit
- Created: 2018-05-16T21:59:15.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-06-07T17:36:29.000Z (over 1 year ago)
- Last Synced: 2024-12-25T02:04:30.633Z (16 days ago)
- Language: JavaScript
- Homepage:
- Size: 18.6 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# incli
a light wrapper for yargs to streamline cli creation - nodeExample usage:
```js
#!/usr/bin/env nodeconst incli = require('incli');
const path = require('path');
const fs = require('fs');const log = console.log;
const respond = console.log;const commands = {
run: {
description: 'run a lambda api wrapped handler',
options: [
{ option: 'path', alias: 'p', describe: 'path to the lambda wrapped handler file', default: null },
{ option: 'formData', alias: 'f', describe: 'JSON object, representing url-encoded form data to send', default: null },
{ option: 'jsonData', alias: 'j', describe: 'JSON object, representing json-encoded form data to send', default: null },
{ option: 'multipartData', alias: 'm', describe: 'JSON object, representing multipart-form-data to send', default: null },
],
callback: async (args) => {
const { path: filePath } = args
const cwd = process.cwd();
const absolutePath = path.resolve(cwd, filePath);
const relativePath = path.relative(__dirname, absolutePath);
if (fs.existsSync(`${absolutePath}.js`)) {
const { handler } = require(relativePath);
if (!handler) { throw new Error(`${filePath}.js is not exporting the underlying handler. Please make sure \`handler\` is being properly exported.`)}
const params = { log, respond, verbose: true };
if (args.formData) {
try {
params.formData = JSON.parse(args.formData);
} catch (e) {
console.error(e)
throw new Error(`formData improperly formatted. Must be valid JSON.`)
}
}
return handler(params)
}
throw new Error(`${filePath}.js does not exist`);
},
},
};incli(commands);
```