Skip to content

babarot/getopts-1

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

getopts

Synopsis

getopts arguments

Description

getopts is a command line parser written in AWK, designed to process command line arguments according to the POSIX Utility Syntax Guidelines.

Install

git clone https://github.com/bucaran/getopts

Drop getopts.{awk,fish} in your ~/.config/fish/functions if you are using fish or edit your $fpath or similar for bash or zsh.

Usage

In the following 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.

Examples

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

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

See Also

About

CLI parser in AWK

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 76.4%
  • Awk 23.6%