mirror of
https://github.com/jorgebucaran/fisher
synced 2024-08-17 12:31:05 +02:00
* Add Mizuki to THANKS for help with Japanese translation of the QuickStart Guide. * fisher --list should return 1 (fail) if no plugins are installed. Closes #101. * More consistent style 'Usage' instead of 'usage'. * Silence index check in case $fisher_cache/.index does not exist. * Add more descriptive message if plugin is not found. * Silence search failure in case $fisher_cache/.index does not exist.
105 lines
2.3 KiB
Markdown
105 lines
2.3 KiB
Markdown
getopts(1) -- Parse CLI options
|
|
===============================
|
|
|
|
## SYNOPSIS
|
|
|
|
`getopts` [*options* ...]<br>
|
|
`getopts` [*options* ...] `|` `while` read -l key value; ...; `end`<br>
|
|
|
|
## DESCRIPTION
|
|
|
|
`Getopts` is a command line parser implemented in `awk(1)`, designed to process command line arguments in the easiest way possible.
|
|
|
|
## USAGE
|
|
|
|
The best way to understand how `getopts` work is by studying a simple example.
|
|
|
|
```
|
|
getopts -ab1 --foo=bar baz
|
|
```
|
|
|
|
And its output.
|
|
|
|
```
|
|
a
|
|
b 1
|
|
foo bar
|
|
_ baz
|
|
```
|
|
|
|
The items on the left represent the option flags or *keys* associated with the CLI. The items on the right are the option *values*. The underscore `_` character is the default *key* for arguments without a key.
|
|
|
|
Use `read(1)` to process the generated stream and `switch(1)` to match patterns:
|
|
|
|
```
|
|
getopts -ab1 --foo=bar baz | while read -l key option
|
|
switch $key
|
|
case _
|
|
case a
|
|
case b
|
|
case foo
|
|
end
|
|
end
|
|
```
|
|
|
|
## OPTIONS
|
|
|
|
None.
|
|
|
|
## EXAMPLES
|
|
|
|
The following is a mock of `fish(1)` CLI missing the implementation:
|
|
|
|
```
|
|
function fish
|
|
set -l mode
|
|
set -l flags
|
|
set -l commands
|
|
set -l debug_level
|
|
|
|
getopts $argv | while read -l key value
|
|
switch $key
|
|
case c command
|
|
set commands $commands $value
|
|
|
|
case d debug-level
|
|
set debug_level $value
|
|
|
|
case i interactive
|
|
set mode $value
|
|
|
|
case l login
|
|
set mode $value
|
|
|
|
case n no-execute
|
|
set mode $value
|
|
|
|
case p profile
|
|
set flags $flags $value
|
|
|
|
case h help
|
|
printf "Usage: $_ [OPTIONS] [-c command] [FILE [ARGUMENTS...]]\n"
|
|
return
|
|
|
|
case \*
|
|
printf "$_: '%s' is not a valid option.\n" $key
|
|
return 1
|
|
end
|
|
end
|
|
|
|
# Implementation
|
|
end
|
|
```
|
|
|
|
## BUGS
|
|
|
|
* getopts does *not* read the standard input. Use getopts to collect options and the standard input to process a stream of data relevant to your program.
|
|
|
|
* A double dash, `--`, marks the end of options. Arguments after this sequence are placed in the default underscore key, `_`.
|
|
|
|
* The getopts described in this document is *not* equivalent to the getopts *builtin* found in other shells.
|
|
|
|
## AUTHORS
|
|
|
|
Jorge Bucaran <j@bucaran.me>.
|