commands

package
v3.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 18, 2023 License: MIT Imports: 26 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BoolFromString

func BoolFromString(b string) (*upcloud.Boolean, error)

BoolFromString parses a string and returns *upcloud.Boolean

func HandleError

func HandleError(exec Executor, key string, err error) (output.Output, error)

HandleError updates error details to progress log message identified by given key. Returns (nil, err), where err is the err passed in as input.

func Parse

func Parse(in string) ([]string, error)

Parse calls `ParseN()` with `n` -1: eg. `--foo bar=baz,flop=flip` returns `[]string{"bar","baz","flop","flip"}` and `--foo bar=baz,flop=flip=1` returns `[]string{"bar","baz","flop","flip","1"}`

func ParseN

func ParseN(in string, n int) ([]string, error)

ParseN parses a complex, querystring-type argument from `in` and splits values to `n` amount of substrings e.g. with `n` 2: `--foo bar=baz,flop=flip=1` returns `[]string{"bar","baz","flop","flip=1"}`

func ParseSSHKeys

func ParseSSHKeys(sshKeys []string) ([]string, error)

ParseSSHKeys parses strings that can be either actual public keys or file names referring public key files.

func SearchResources

func SearchResources(
	ids []string,
	searchFn func(id string) (interface{}, error),
	getUUID func(interface{}) string,
) ([]string, error)

SearchResources is a convenience method to map a list of resources to uuids. Any input strings that are uuids are returned as such and any other string is passed on to searchFn, the results of which are passed on to getUUID which is expected to return a uuid.

func ToArray

func ToArray(in interface{}) []interface{}

ToArray turns an interface{} to a slice of interface{}s. If the underlying type is also a slice, the elements will be returned as the return values elements.. Otherwise, the input element is wrapped in a slice.

func WrapLongDescription

func WrapLongDescription(message string) string

WrapLongDescription wraps Long description messages at 80 characters and removes trailing whitespace from the message.

Types

type BaseCommand

type BaseCommand struct {
	// contains filtered or unexported fields
}

BaseCommand is the base type for all commands, implementing Command

func New

func New(name, usage string, examples ...string) *BaseCommand

New returns a BaseCommand that implements Command. It is used as a base to create custom commands from.

func (*BaseCommand) AddFlags

func (s *BaseCommand) AddFlags(flags *pflag.FlagSet)

AddFlags adds a flagset to the command and binds config value into it with namespace

func (*BaseCommand) Cobra

func (s *BaseCommand) Cobra() *cobra.Command

Cobra returns the underlying *cobra.Command

func (*BaseCommand) InitCommand

func (s *BaseCommand) InitCommand()

InitCommand can be overridden to handle flag registration. A hook to handle flag registration. The config values are not available during this hook. Register a cobra hook to use them. You can set defaults though.

func (*BaseCommand) InitCommandWithConfig

func (s *BaseCommand) InitCommandWithConfig(*config.Config)

InitCommandWithConfig is a hook for running additional initialisations with access to config. E.g., can be used to set flag completion functions. Note that the config might not be initialized when this function is called. Thus, config has to be used in a hook function, e.g. Cobras Command.RegisterFlagCompletionFunc.

func (*BaseCommand) MaximumExecutions

func (s *BaseCommand) MaximumExecutions() int

MaximumExecutions return the max executed workers

type CobraCommand

type CobraCommand interface {
	Cobra() *cobra.Command
}

CobraCommand is an interface for commands that can refer back to their base cobra.Command

type Command

type Command interface {
	InitCommand()
	InitCommandWithConfig(*config.Config)
	CobraCommand
}

Command is the base command type for all commands.

func BuildCommand

func BuildCommand(child Command, parent *cobra.Command, config *config.Config) Command

BuildCommand sets up a Command with the specified config and adds it to Cobra

type Executor

type Executor interface {
	Context() context.Context
	PushProgressUpdate(messages.Update)
	PushProgressStarted(msg string)
	PushProgressUpdateMessage(key, msg string)
	PushProgressSuccess(msg string)
	StopProgressLog()
	WaitFor(waitFn func() error, timeout time.Duration) error
	Server() service.Server
	Storage() service.Storage
	Network() service.Network
	Firewall() service.Firewall
	IPAddress() service.IPAddress
	Account() service.Account
	All() internal.AllServices
	Debug(msg string, args ...interface{})
	WithLogger(args ...interface{}) Executor
}

Executor represents the execution context for commands

func NewExecutor

func NewExecutor(cfg *config.Config, svc internal.AllServices, logger flume.Logger) Executor

NewExecutor creates the default Executor

type MultipleArgumentCommand

type MultipleArgumentCommand interface {
	Command
	MaximumExecutions() int
	Execute(exec Executor, arg string) (output.Output, error)
}

MultipleArgumentCommand is a command that can accept multiple positional arguments, each of which will result in a (parallel) call to Execute() with the argument.

type NoArgumentCommand

type NoArgumentCommand interface {
	Command
	ExecuteWithoutArguments(exec Executor) (output.Output, error)
}

NoArgumentCommand is a command that does not care about the positional arguments.

type OfflineCommand

type OfflineCommand interface {
	DoesNotUseServices()
}

OfflineCommand is a command that does not need connect to the API, e.g. upctl version.

type SingleArgumentCommand

type SingleArgumentCommand interface {
	Command
	ExecuteSingleArgument(exec Executor, arg string) (output.Output, error)
}

SingleArgumentCommand is a command that accepts exactly one positional argument.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL