Documentation ¶
Overview ¶
Package cli is a helper package for "github.com/maruel/subcommands".
It adds a non-intrusive integration with context.Context.
Index ¶
- func GetContext(app subcommands.Application, cmd subcommands.CommandRun, env subcommands.Env) context.Context
- func Getenv(ctx context.Context, key string) string
- func LookupEnv(ctx context.Context, key string) subcommands.EnvVar
- func MakeGetEnv(ctx context.Context) func(string) string
- type Application
- func (a *Application) GetCommands() []*subcommands.Command
- func (a *Application) GetEnvVars() map[string]subcommands.EnvVarDefinition
- func (a *Application) GetErr() io.Writer
- func (a *Application) GetName() string
- func (a *Application) GetOut() io.Writer
- func (a *Application) GetTitle() string
- func (a *Application) ModifyContext(ctx context.Context) context.Context
- type ContextModificator
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetContext ¶
func GetContext(app subcommands.Application, cmd subcommands.CommandRun, env subcommands.Env) context.Context
GetContext sniffs ContextModificator in the app and in the cmd and uses them to derive a context for the command.
Embeds the subcommands.Env into the Context (if any), which can be accessed with the *env methods in this package.
Subcommands can use it to get an initial context in their 'Run' methods.
Returns the background context if app doesn't implement ContextModificator.
func Getenv ¶
Getenv returns the given value from the embedded subcommands.Env, or "" if the value was unset and had no default.
Types ¶
type Application ¶
type Application struct { Name string Title string Context func(context.Context) context.Context Commands []*subcommands.Command EnvVars map[string]subcommands.EnvVarDefinition // contains filtered or unexported fields }
Application is like subcommands.DefaultApplication, except it also implements ContextModificator.
func (*Application) GetCommands ¶
func (a *Application) GetCommands() []*subcommands.Command
GetCommands implements interface subcommands.Application.
func (*Application) GetEnvVars ¶
func (a *Application) GetEnvVars() map[string]subcommands.EnvVarDefinition
GetEnvVars implements interface subcommands.Application.
func (*Application) GetErr ¶
func (a *Application) GetErr() io.Writer
GetErr implements interface subcommands.Application.
func (*Application) GetName ¶
func (a *Application) GetName() string
GetName implements interface subcommands.Application.
func (*Application) GetOut ¶
func (a *Application) GetOut() io.Writer
GetOut implements interface subcommands.Application.
func (*Application) GetTitle ¶
func (a *Application) GetTitle() string
GetTitle implements interface subcommands.Application.
func (*Application) ModifyContext ¶
func (a *Application) ModifyContext(ctx context.Context) context.Context
ModifyContext implements interface ContextModificator.
'ctx' here is always context.Background().
type ContextModificator ¶
ContextModificator takes a context, adds something, and returns a new one.
It is implemented by Application and can optionally by implemented by subcommands.CommandRun instances. It will be called by GetContext to modify initial context.