Documentation
¶
Overview ¶
Package cli provides small, dependency-free helpers for building CLIs with flags, positional arguments, and environment variables. It focuses on:
- registering flags and env vars against shared pointers
- formatted usage output with wrapped descriptions
- optional support for custom flag.FlagSet values
Typical usage is to define []Opt and []Arg, call New or CreateCLI, then parse environment variables and arguments.
Index ¶
- Variables
- func ApplyEnvFileIfExists() error
- type Arg
- type CLI
- func Create(name string, description string, usage string, version string, options []Opt, ...) *CLI
- func CreateCLI(name string, description string, usage string, version string, options []Opt, ...) (*CLI, error)
- func New(name string, description string, usage string, version string, options []Opt, ...) *CLI
- func NewCLI(name string, description string, usage string, version string, options []Opt, ...) (*CLI, error)
- type CLIOpt
- type Opt
Constants ¶
This section is empty.
Variables ¶
var ( // ErrMissingArgs is returned when required arguments are missing when parsing program args. ErrMissingArgs = errors.New("required arguments were not provided") // ErrInvalidArg is returned when a provided program argument was invalid. ErrInvalidArg = errors.New("invalid argument") // ErrInvalidEnv is returned when the value of an environment variable was invalid. ErrInvalidEnv = errors.New("invalid environment variable value") )
Functions ¶
func ApplyEnvFileIfExists ¶ added in v0.0.4
func ApplyEnvFileIfExists() error
ApplyEnvFileIfExists looks in the working directory for a ".env" file and, if present, applies all lines in the format key=value with os.Setenv. Lines starting with "#" or "//" (after trimming whitespace) are treated as comments and skipped. Lines that cannot be parsed into a key-value pair are ignored. An error is returned only when there is an error reading the file.
Types ¶
type Arg ¶
type Arg struct {
// Name of the program argument.
Name string
// Desc is the description of the argument.
Desc string
// Ptr is a pointer to the value to set. Supported types are string, int,
// bool, and flag.Value.
Ptr any
}
Arg describes a positional argument parsed after flags.
type CLI ¶
type CLI struct {
// contains filtered or unexported fields
}
CLI represents a configured command-line interface with options, args, and environment bindings.
func Create ¶
func Create( name string, description string, usage string, version string, options []Opt, arguments []Arg, cliOpts ...CLIOpt, ) *CLI
Create behaves like CreateCLI but prints the error to stderr and exits the program when initialization fails.
func CreateCLI ¶ added in v0.0.2
func CreateCLI( name string, description string, usage string, version string, options []Opt, arguments []Arg, cliOpts ...CLIOpt, ) (*CLI, error)
CreateCLI creates a new CLI, reads environment variables, and parses program flags all at once. This is equivalent to calling NewCLI, CLI.ReadEnv, and CLI.Parse. Note that CLI.Parse will exit the program on missing required args.
func New ¶
func New( name string, description string, usage string, version string, options []Opt, arguments []Arg, cliOpts ...CLIOpt, ) *CLI
New behaves like NewCLI but prints the error to stderr and exits the program when initialization fails.
func NewCLI ¶ added in v0.0.2
func NewCLI( name string, description string, usage string, version string, options []Opt, arguments []Arg, cliOptions ...CLIOpt, ) (*CLI, error)
NewCLI registers environment variables and program flags according to the provided options, and installs a usage func on the flag set. Call CLI.ReadEnv to load environment variables and CLI.Parse or CLI.ParseArgs to parse flags.
func (*CLI) Parse ¶
Parse reads the program flags into the values pointed to by the options using the global flag set. It exits the program on missing required args.
func (*CLI) ParseArgs ¶ added in v0.0.2
ParseArgs parses flags from the provided argument list, which should not include the command name. The return value will be flag.ErrHelp if -help or -h were set but not defined. ErrMissingArgs is returned if there are missing required args.
type CLIOpt ¶ added in v0.0.2
type CLIOpt func(c *CLI)
CLIOpt is an option that is applied to a CLI to configure behavior such as where to direct output or how to fetch environment variables.
func GetEnv ¶ added in v0.0.2
GetEnv configures a CLI to get environment variables using the provided func.
func UseFlagSet ¶ added in v0.0.2
UseFlagSet configures the CLI to use a specific flag.FlagSet. If no argument is provided, a new FlagSet is created. This function panics if more than one FlagSet is provided or the provided FlagSet is nil.
type Opt ¶
type Opt struct {
// Name of the program flag. If empty, no program flag is registered.
Name string
// Desc is the description of the option.
Desc string
// Env is an optional environment variable to register.
Env string
// Ptr is a pointer to the value to set. Supported types are string, int,
// bool, time.Duration, and flag.Value. If the value being pointed to is
// non-zero it will be used as the default value for the option.
Ptr any
// DocumentationOnly is set to document environment variables which are not
// parsed through this package. It is permitted only on Opts where both Name
// and Ptr fields are unspecified.
DocumentationOnly bool
// TypeName is an optional hint to the user about the option's type.
// If unset, the type name implied by Ptr will be used.
TypeName string
// contains filtered or unexported fields
}
Opt is a program option configurable by user input or environment variables.