Back to godoc.org

Package cli

v0.0.0-...-1557bcf
Latest Go to latest

The latest major version is .

Published: Aug 13, 2020 | License: Apache-2.0 | Module: github.com/luci/luci-go

Overview

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

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

Index

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

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.

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.

Package Files

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier