flaggy

Zero dependency command flag generator from a simple javascript object

Usage no npm install needed!

<script type="module">
  import flaggy from 'https://cdn.skypack.dev/flaggy';
</script>

README

flaggy

tests

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

You can install locally

npm i flaggy

Usage

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

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 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

Acknowledgements