https://github.com/sporeball/yeow
CLI helper with attitude
https://github.com/sporeball/yeow
arguments cli command-line javascript
Last synced: over 1 year ago
JSON representation
CLI helper with attitude
- Host: GitHub
- URL: https://github.com/sporeball/yeow
- Owner: sporeball
- License: mit
- Created: 2021-02-23T22:23:31.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-07-27T00:20:25.000Z (almost 5 years ago)
- Last Synced: 2024-04-24T11:29:06.415Z (about 2 years ago)
- Topics: arguments, cli, command-line, javascript
- Language: JavaScript
- Homepage:
- Size: 20.5 KB
- Stars: 16
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# yeow
**yeow** is a CLI helper with attitude — part [meow](https://github.com/sindresorhus/meow), part [yargs](https://github.com/yargs/yargs), and built to spite the both of them.
things yeow **does**:
- parse arguments
- assert types
- fail if given incorrect arguments
things yeow **doesn't do**:
- negate arguments with `--no-`
- interpret arguments as an array
- restrict valid values to a predetermined list
### install
```
$ npm i --save yeow
```
### usage
```js
#!/usr/bin/env node
const args = require("yeow")({
"exclamation": {
type: "string",
required: true
},
"int": {
type: "number",
aliases: "--integer",
default: 16
}
});
console.log(args);
```
```
$ ./logger.js "yeow!"
{ exclamation: 'yeow!', int: 16 }
$ ./logger.js "cool!" --integer 100
{ exclamation: 'cool!', int: 100 }
```
## API
### yeow(obj)
returns an `object` of parsed arguments from the passed `obj`.
#### obj
type: `object`
each key is a human-readable argument name. the value is an object with any of:
##### type
type: `string`
type of the argument.
possible values:
- `string`
- `number`
- `file`
if this is omitted, the argument will become a simple `true`/`false` flag.
##### required
type: `boolean`\
default: `false`
whether the argument is required. required arguments ignore `aliases` and `default`.
the *n*-th argument for which `required` is set to `true` **must** be passed as the *n*-th argument to the program.
##### missing
type: `string`
error message to output if the argument is omitted.
if the argument is not `required`, this will be ignored.
##### aliases
type: `string`
valid aliases for the argument, space-slash-space separated.
example values:
- `-a`
- `-a / --argument`
if the argument is `required`, this will be ignored.
##### extensions
type: `string`
valid file extensions for the argument, space-slash-space separated.
example values:
- `.txt`
- `.js / .jsx`
if the argument's `type` is not `file`, this will be ignored.\
if this is omitted, the argument will accept files of any extension.
##### default
type: `string | number`
a default value the argument will have if it is omitted. the value's type should match the argument's `type`.
if the argument is `required`, this will be ignored.
##### invalid
type: `string`
error message to output if the argument is passed with an invalid type.
### example
```js
const args = require("yeow")({
"script": {
type: "file",
extensions: ".js",
required: true,
missing: "a file must be passed",
invalid: "not a .js file"
},
"delay": {
type: "number",
aliases: "-d / --delay",
default: 1
},
"input": {
type: "string",
aliases: "--input",
},
"verbose": {
aliases: "-v / --verbose"
}
});
```
### donate
you can support the development of this project and others via Patreon:
[](https://patreon.com/sporeball)