An open API service indexing awesome lists of open source software.

https://github.com/simonecorsi/flaggy

⛳️ Zero dependency command flag generator from a simple javascript object
https://github.com/simonecorsi/flaggy

argv command flag javascript nodejs npm opt options parser stringify

Last synced: about 4 hours ago
JSON representation

⛳️ Zero dependency command flag generator from a simple javascript object

Awesome Lists containing this project

README

        

# flaggy

![tests](https://github.com/simonecorsi/flaggy/workflows/test/badge.svg)

## About

This packages aim is to simplify programmatically generate flags to use in Unix-style command by declaring them with an object literal and turning them into an array or a string of usable flags.

**Why?**

- You exec commands and need to provide options easily;
- You want to avoid string concatenation to test easily;
- you don't want to have an headache refactoring when needed.

## Table of contents

- [Installation](#installation)
- [Usage](#usage)
- [Arguments](#arguments)
- [Output sample](#output-sample)
- [Contributing](#contributing)
- [License](#license)
- [Contact](#contact)
- [Acknowledgements](#acknowledgements)

## Installation

You can install locally

```sh
npm i flaggy
```

## Usage

```js
const flaggy = require("flaggy");
flaggy({ d: true, path: "/some/path", verbose: true }); // ["--path", "/some/path", "--verbose", "-d"]
flaggy({ d: true, path: "/some/path", verbose: true }, true); // "--path /some/path --verbose" -d
```

### Arguments

| parameter | type | description | default |
| --------- | ------- | --------------------------------------------------------------------------- | ------- |
| [0] | Object | Object with the value to stringify as flags | null |
| [1] | Boolean | Stringify result? if false returns argv array else return stringified flags | false |

### Output sample

```js
const fstring = flaggy(
{
t: true,
number: 1,
boolean: true,
s: "short",
string: "hi",
iCantGetWhy: "This is so long",
weHaveListToo: ["one", "long value"],
},
true
);
// -t --number 1 --boolean -s short --string hi --i-cant-get-why="This is so long" --we-have-list-too one --we-have-list-too="long value"
```

## Contributing

Project is pretty simple and straight forward for what is my needs, but if you have any idea you're welcome.

This projects uses [commitizen](https://github.com/commitizen/cz-cli) so be sure to use standard commit format or PR won't be accepted

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'feat(scope): some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## License

Distributed under the MIT License. See `LICENSE` for more information.

## Contact

Simone Corsi - [@im_simonecorsi](https://twitter.com/im_simonecorsi)

## Acknowledgements

- [malcommac](https://github.com/malcommac) - for inspiration after seeing his string concatenations
- [jonschlinkert](https://github.com/jonschlinkert) - for his [dashify](https://github.com/jonschlinkert/dashify) function