Skip to content
/ cli Public

🖥 Wrap the standard flag package for a cleaner CLI

License

Notifications You must be signed in to change notification settings

gowww/cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gowww cli GoDoc Build Coverage Go Report Status Testing

Package cli wraps the standard flag package for a cleaner command line interface.

Installing

  1. Get package:

    go get -u github.com/gowww/cli
  2. Import it in your code:

    import "github.com/gowww/cli"

Usage

Henceforth, by "command" we mean "subcommand" (like the build part in go build)…

The order in which you define commands and flags is important!
When you define a main flag, it will be added to the top-level flag set but also to all commands already defined.

Obviously, each command can also define its own flags.

For the sake of clarity for the developer and ease of use for the final user, the usage pattern is simple and always the same : program [command] [flags]. No flags before command, and no commands of commands.

Example

package main

import "github.com/gowww/cli"

var (
	flagForMain    string // Flag "-m"
	flagForCommand string // Flag "-c"
	flagForAll     string // Flag "-a"
)

func main() {
	cli.SetUsageText("Command line interface example.")

	cli.String(&flagForMain, "m", "", "Example flag for main function.")

	cli.Command("command", command, "Example command.").
		String(&flagForCommand, "c", "", `Example flag for this command only.`)

	cli.String(&flagForAll, "a", "", "Example flag for main function and all commands defined previously.")

	cli.Parse()
}

func command() {
	// Do the command job.
}

Usage output

For example -help
Command line interface example.

Usage:

	example [command] [flags]

Commands:

	command  Example command.

Flags:

	-a  Example flag for main function and all commands defined previously.
	-m  Example flag for main function.
For example command -help
Example command.

Usage:

	example command [flags]

Flags:

	-a  Example flag for main function and all commands defined previously.
	-c  Example flag for this command only.