···11+# argsh
22+33+This is a simple shell wrapper for scripts that handles argument parsing, because argument parsing in bash is a pain in the ass.
44+55+## Usage
66+77+Put argsh in the shebang, instead of your shell as such:
88+99+```bash
1010+#!/bin/env argsh <arguments>
1111+```
1212+1313+And you define the arguments as a semicolon separated list of arguments.
1414+1515+The only valid characters for an argument are `a-z` and `-`.
1616+1717+A plain argument such as `arg` is a required argument, which will be passed to the script as a positional argument.
1818+1919+An argument starting with `$` such as `$arg` is an optional argument, which will be passed to the script as an environment variable like `$ARGSH_ARG`, where all `-` get converted to `_`.
2020+2121+Any additional positional arguments passed to the script get appended after the required arguments.
2222+2323+Optionally, you can set the shell to use as such `bash|name;count`, defaults to `sh` if ommited.
2424+2525+## Limitations
2626+2727+For the short version of arguments to work properly, all arguments must start with different characters.
2828+2929+All arguments must have a matching value, as such, flags aren't possible using argsh.
3030+3131+Limit of 256 arguments (if you have more than that please use an actual programming language).
3232+3333+## Testing
3434+3535+Run the test script as such and mess around with the arguments
3636+3737+```
3838+./test --required indeed --also-required nice --optional woah --second-optional crazy am additional
3939+```