Documentation
¶
Overview ¶
Package cli contains code for Thelma's command-line interface
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type HookError ¶ added in v0.0.23
type HookError struct {
CommandName string // CommandName key of the Thelma command the hook belongs to
Err error // Err underlying error returned by the hook
// contains filtered or unexported fields
}
HookError is an error returned from the execution of a single ThelmaCommand hook
type Option ¶ added in v0.0.23
type Option func(*Options)
Option configuration option for a ThelmaCLI
type Options ¶ added in v0.0.23
type Options struct {
// contains filtered or unexported fields
}
Options configuration options for a ThelmaCLI
func DefaultOptions ¶ added in v0.0.23
func DefaultOptions() *Options
DefaultOptions default options
func (*Options) AddCommand ¶ added in v0.0.23
func (opts *Options) AddCommand(name string, cmd ThelmaCommand)
AddCommand add a subcommand to the ThelmaCLI
func (*Options) ConfigureThelma ¶ added in v0.0.23
func (opts *Options) ConfigureThelma(hook func(builder.ThelmaBuilder))
ConfigureThelma add a configuration hook for Thelma
func (*Options) SetArgs ¶ added in v0.0.23
SetArgs set CLI args to the given list instead of os.Args
type RunContext ¶ added in v0.0.23
type RunContext interface {
// Args returns user-supplied positional arguments for the leaf command.
Args() []string
// CobraCommand returns the Cobra command associated with the Thelma command that is currently executing.
CobraCommand() *cobra.Command
// Parent returns the parent of the Thelma command that is currently executing.
Parent() ThelmaCommand
// SetOutput sets the output for this command (will be converted to YAML, JSON, dump, or raw based on user-supplied arguments, and printed to stdout)
SetOutput(data interface{})
// HasOutput returns true if output has been set for this command
HasOutput() bool
// Output returns output for this command, or nil if none has been set
Output() interface{}
// CommandName returns the name components for this command. Eg. ["render"] for `thelma render`, ["bee", "list"] for `thelma bee list`
CommandName() []string
}
RunContext provides information about the current Thelma execution to PreRun, Run, and PostRun hooks
type RunError ¶ added in v0.0.23
type RunError struct {
CommandName string // CommandName key of the Thelma command that was executed
SetFlagsFromEnvironmentErrors []*HookError // SetFlagsFromEnvironmentErrors errors that occurred while setting flags from environment
PreRunError *HookError // PreRunError error returned by PreRun hook
RunError *HookError // RunError error returned by Run hook
PostRunErrors []*HookError // PostRunErrors all errors returned by PostRun hooks
Count int // Count number of errors wrapped by this error
}
RunError aggregates errors that can occur during execution of a ThelmaCommand
type ThelmaCLI ¶
type ThelmaCLI interface {
// Execute is the main entry point for Thelma execution. It can only be called once for a given ThelmaCLI.
Execute() error
}
func NewWithOptions ¶ added in v0.0.23
type ThelmaCommand ¶ added in v0.0.23
type ThelmaCommand interface {
// ConfigureCobra is a hook for adding flags, description, and other configuration to the Cobra command associated with this Thelma subcommand
ConfigureCobra(cobraCommand *cobra.Command)
// PreRun is a hook for running some code before Run is called. Conventionally, flag and argumnent validation are
// performed here. Note that:
// * PreRun hooks are inherited by child commands, and run in order of inheritance. Eg.
// for the command "thelma charts import", the root command's PreRun will be run first,
// then the `chart` command's PreRun, and finally the `import` command's PreRun.
// If an error occurs in a prent PreRun hook, it will be returned; child/descendant PreRun hooks will not be executed.
// * If any PreRun hook returns an error, the command's Run hook will not be executed, but its PostRun hooks will be.
PreRun(app app.ThelmaApp, ctx RunContext) error
// Run is where the main body of a subcommand should be implemented. Note that:
// * For commands with subcommands (eg. the "charts" command in "thelma charts import"), the Run hook is ignored.
// * If PreRun returns an error, Run is not called but PostRun is.
Run(app app.ThelmaApp, ctx RunContext) error
// PostRun is a hook for running some code after Run is called. Conventionally, cleanup goes here.
// Note that:
// * PostRun hooks are inherited by child commands, and run in reverse order of inheritance. Eg.
// for the command "thelma charts import", the `import` command's PostRun will be run first,
// then the `chart` command's PostRun, and finally the root command's PostRun.
// * Unlike PreRun hooks, PostRun hooks are guaranteed to run, even if an earlier PostRun, PreRun, or Run hook fails.
// * PostRun hooks should be written carefully to avoid errors in the event of an earlier failure (check pointers for nil, etc).
PostRun(app app.ThelmaApp, ctx RunContext) error
}
ThelmaCommand must be implemented by all Thelma subcommands.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
commands
|
|
|
Package flags contains common utilities for interacting with CLI flags
|
Package flags contains common utilities for interacting with CLI flags |