Documentation

Overview

    Package cli is a helper package for "github.com/maruel/subcommands".

    It adds a non-intrusive integration with context.Context.

    Index

    Constants

    This section is empty.

    Variables

    This section is empty.

    Functions

    func GetContext

      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

      func Getenv(ctx context.Context, key string) string

        Getenv returns the given value from the embedded subcommands.Env, or "" if the value was unset and had no default.

        func LookupEnv

        func LookupEnv(ctx context.Context, key string) subcommands.EnvVar

          LookupEnv returns the given value from the embedded subcommands.Env as-is.

          func MakeGetEnv

          func MakeGetEnv(ctx context.Context) func(string) string

            MakeGetEnv returns a function bound to the supplied Context that has the same semantics as os.Getenv. This can be used to simplify environment compatibility.

            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

                            type ContextModificator interface {
                            	ModifyContext(context.Context) context.Context
                            }

                              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.