github.com/Davidgamba/go-getoptions (go): Package getoptions - Go option parser inspired on the flexibility of Perl’s GetOpt::Long.  It will operate on any given slice of strings and return the remaining (non used) command line arguments. This allows to easily subcommand.  The following is a basic example:  • Allow passing options and non-options in any order.  • Support for `--long` options.  • Support for short (`-s`) options with flexible behaviour (see https://github.com/DavidGamba/go-getoptions#operation_modes for details):  • Boolean, String, Int and Float64 type options.  • Multiple aliases for the same option. e.g. `help`, `man`.  • Negatable Boolean options. For example: `--verbose`, `--no-verbose` or `--noverbose`.  • Options with Array arguments. The same option can be used multiple times with different arguments. The list of arguments will be saved into an Array like structure inside the program.  • Options with array arguments and multiple entries.  • When using integer array options with multiple arguments, positive integer ranges are allowed. For example: `1..3` to indicate `1 2 3`.  • Options with key value arguments and multiple entries.  • Options with Key Value arguments. This allows the same option to be used multiple times with arguments of key value type. For example: `rpmbuild --define name=myrpm --define version=123`.  • Supports passing `--` to stop parsing arguments (everything after will be left in the `remaining []string`).  • Supports subcommands (stop parsing arguments when non option is passed).  • Supports command line options with '='. For example: You can use `--string=mystring` and `--string mystring`.  • Allows passing arguments to options that start with dash `-` when passed after equal. For example: `--string=--hello` and `--int=-123`.  • Options with optional arguments. If the default argument is not passed the default is set.  • Allows abbreviations when the provided option is not ambiguous.  • Called method indicates if the option was passed on the command line.  • Errors exposed as public variables to allow overriding them for internationalization.  • Multiple ways of managing unknown options:  • Require order: Allows for subcommands. Stop parsing arguments when the first non-option is found. When mixed with Pass through, it also stops parsing arguments when the first unmatched option is found.  • Support for the lonesome dash "-". To indicate, for example, when to read input from STDIO.  • Incremental options. Allows the same option to be called multiple times to increment a counter.  • Supports case sensitive options. For example, you can use `v` to define `verbose` and `V` to define `Version`.  The library will panic if it finds that the programmer (not end user):  • Defined the same alias twice.  • Defined wrong min and max values for SliceMulti methods.
Keywords: argument-parser|autocomplete|cli|command-line|flag|getopt|golang|hacktoberfest|option-parser