/cli-args-parser-kata

the goal of this kata is to learn to work incrementally by implementing a cli arguments parser.

MIT LicenseMIT

cli-args-parser-kata

The following is a TDD Kata: an exercise in coding, refactoring and test-first.

The goal of this program is to model a cli arguments parser. Given a series of input the program should produce a valid output according to the following specification.

Before you start

  • Try not to read ahead, do one task at a time (the trick is to learn to work incrementally)!
  • Make sure you only test for correct inputs;
  • You may use whatever programming language you prefer;
  • You should commit your code on GitHub or any other SCM repository you prefer;
  • You should release your work under an OSI-approved open-source license of your choice;
  • Remember to send a PR once you're done with the kata 😉

Specification

Choose one of the following input formats:

  • string like arguments "--foo bar"
  • array like arguments ["--foo", "bar"]

1. parse a simple flags

given the following input:

--foo

the program should produce either a dictionary or a JSON object as follows:

{"foo": true}

2. parse a composite flags

given the following input:

--foo bar

the program should produce either a dictionary or a JSON object as follows:

{"foo": "bar"}

3. parse a composite flags with integer values

given the following input:

--number 1

the program should produce either a dictionary or a JSON object as follows:

{"number": 1}

4. parse multiple flags at once

given the following input:

--foo --bar baz --number 1

the program should produce either a dictionary or a JSON object as follows:

{"bar": "baz", "foo": true, "number": 1}

5. try to support both string and array input formats

within the same function or a new function one of your choice.

Submitted solutions