cmdx

package
v0.0.0-...-398cf1c Latest Latest
Warning

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

Go to latest
Published: Mar 11, 2025 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FlagEndpoint      = "endpoint"
	FlagSkipTLSVerify = "skip-tls-verify"
	FlagHeaders       = "http-header"
)
View Source
const (
	FlagPageSize  = "page-size"
	FlagPageToken = "page-token"
)
View Source
const (
	FormatQuiet       format = "quiet"
	FormatTable       format = "table"
	FormatJSON        format = "json"
	FormatJSONPath    format = "jsonpath"
	FormatJSONPointer format = "jsonpointer"
	FormatJSONPretty  format = "json-pretty"
	FormatYAML        format = "yaml"
	FormatDefault     format = "default"

	FlagFormat = "format"

	None = "<none>"
)
View Source
const (
	FlagQuiet = "quiet"
)

Variables

View Source
var (
	// ErrNilDependency is returned if a dependency is missing.
	ErrNilDependency = fmt.Errorf("a dependency was expected to be defined but is nil. Please open an issue with the stack trace")
	// ErrNoPrintButFail is returned to detect a failure state that was already reported to the user in some way
	ErrNoPrintButFail = fmt.Errorf("this error should never be printed")
)

Functions

func AddUsageTemplateFunc

func AddUsageTemplateFunc(name string, f interface{})

AddUsageTemplateFunc adds a template function to the usage template.

func AskForConfirmation

func AskForConfirmation(s string, stdin io.Reader, stdout io.Writer) bool

asks for confirmation with the question string s and reads the answer pass nil to use os.Stdin and os.Stdout

func AskScannerForConfirmation

func AskScannerForConfirmation(s string, reader *bufio.Reader, stdout io.Writer) (bool, error)

func AssertUsageTemplates

func AssertUsageTemplates(t require.TestingT, cmd *cobra.Command)

AssertUsageTemplates asserts that the usage string of the commands are properly templated.

func CheckResponse

func CheckResponse(err error, expectedStatusCode int, response *http.Response)

CheckResponse fatals if err is nil or the response.StatusCode does not match the expectedStatusCode Deprecated: do not use this function in commands, as it makes it impossible to test them. Instead, return the error.

func DisableUsageTemplating

func DisableUsageTemplating(cmds ...*cobra.Command)

DisableUsageTemplating resets the commands usage template to the default. This can be used to undo the effects of EnableUsageTemplating, specifically for a subcommand.

func EnableUsageTemplating

func EnableUsageTemplating(cmds ...*cobra.Command)

EnableUsageTemplating enables gotemplates for usage strings, i.e. cmd.Short, cmd.Long, and cmd.Example. The data for the template is the command itself. Especially useful are `.Root.Name` and `.CommandPath`. This will be inherited by all subcommands, so enabling it on the root command is sufficient.

func EnvVarExamplesHelpMessage

func EnvVarExamplesHelpMessage(name string) string

EnvVarExamplesHelpMessage returns a string containing documentation on how to use environment variables.

func ExactArgs

func ExactArgs(cmd *cobra.Command, args []string, l int)

ExactArgs fatals if args does not equal l.

func Exec

func Exec(t testing.TB, cmd *cobra.Command, stdIn io.Reader, args ...string) (string, string, error)

Exec runs the provided cobra command with the given reader as STD_IN and the given args. Returns STD_OUT, STD_ERR and the error from the execution.

func ExecBackgroundCtx

func ExecBackgroundCtx(ctx context.Context, cmd *cobra.Command, stdIn io.Reader, stdOut, stdErr io.Writer, args ...string) *errgroup.Group

ExecBackgroundCtx runs the cobra command in the background.

func ExecCtx

func ExecCtx(ctx context.Context, cmd *cobra.Command, stdIn io.Reader, args ...string) (string, string, error)

func ExecExpectedErr

func ExecExpectedErr(t testing.TB, cmd *cobra.Command, args ...string) string

ExecExpectedErr is a helper that assumes a failing run from Exec returning ErrNoPrintButFail Returns STD_ERR.

func ExecExpectedErrCtx

func ExecExpectedErrCtx(ctx context.Context, t require.TestingT, cmd *cobra.Command, args ...string) string

func ExecNoErr

func ExecNoErr(t testing.TB, cmd *cobra.Command, args ...string) string

ExecNoErr is a helper that assumes a successful run from Exec. Returns STD_OUT.

func ExecNoErrCtx

func ExecNoErrCtx(ctx context.Context, t require.TestingT, cmd *cobra.Command, args ...string) string

func ExpectDependency

func ExpectDependency(logger *logrusx.Logger, dependencies ...interface{})

ExpectDependency expects every dependency to be not nil or it fatals. Deprecated: do not use this function in commands, as it makes it impossible to test them. Instead, return the error.

func FailSilently

func FailSilently(cmd *cobra.Command) error

FailSilently is supposed to be used within a commands RunE function. It silences cobras error handling and returns the ErrNoPrintButFail error.

func Fatalf

func Fatalf(message string, args ...interface{})

Fatalf prints to os.Stderr and exists with code 1. Deprecated: do not use this function in commands, as it makes it impossible to test them. Instead, return the error.

func FormatResponse

func FormatResponse(o interface{}) string

FormatResponse takes an object and prints a json.MarshalIdent version of it or fatals. Deprecated: do not use this function in commands, as it makes it impossible to test them. Instead, return the error.

func MinArgs

func MinArgs(cmd *cobra.Command, args []string, min int)

MinArgs fatals if args does not satisfy min.

func Must

func Must(err error, message string, args ...interface{})

Must fatals with the optional message if err is not nil. Deprecated: do not use this function in commands, as it makes it impossible to test them. Instead, return the error.

func NewClient

func NewClient(cmd *cobra.Command) (*http.Client, *url.URL, error)

NewClient creates a new HTTP client.

func ParsePaginationArgs

func ParsePaginationArgs(cmd *cobra.Command, pageArg, perPageArg string) (page, perPage int64, err error)

ParsePaginationArgs parses pagination arguments from the command line.

func ParseTokenPaginationArgs

func ParseTokenPaginationArgs(cmd *cobra.Command) (page string, perPage int, err error)

ParseTokenPaginationArgs parses token-based pagination arguments from the command line.

func PrintErrors

func PrintErrors(cmd *cobra.Command, errs map[string]error)

func PrintJSONAble

func PrintJSONAble(cmd *cobra.Command, d interface{ String() string })

func PrintOpenAPIError

func PrintOpenAPIError(cmd *cobra.Command, err error) error

func PrintRow

func PrintRow(cmd *cobra.Command, row TableRow)

func PrintTable

func PrintTable(cmd *cobra.Command, table Table)

func RangeArgs

func RangeArgs(cmd *cobra.Command, args []string, r []int)

RangeArgs fatals if args does not satisfy any of the lengths set in r.

func RegisterFormatFlags

func RegisterFormatFlags(flags *pflag.FlagSet)

func RegisterHTTPClientFlags

func RegisterHTTPClientFlags(flags *pflag.FlagSet)

RegisterHTTPClientFlags registers HTTP client configuration flags.

func RegisterJSONFormatFlags

func RegisterJSONFormatFlags(flags *pflag.FlagSet)

func RegisterNoiseFlags

func RegisterNoiseFlags(flags *pflag.FlagSet)

func RegisterTokenPaginationFlags

func RegisterTokenPaginationFlags(cmd *cobra.Command) (pageSize int, pageToken string)

func Remote

func Remote(cmd *cobra.Command) (string, error)

Remote returns the remote endpoint for the given command.

func RemoteURI

func RemoteURI(cmd *cobra.Command) (*url.URL, error)

RemoteURI returns the remote URI for the given command.

func TemplateCommandField

func TemplateCommandField(cmd *cobra.Command, field string) (string, error)

func Version

func Version(gitTag, gitHash, buildTime *string) *cobra.Command

Version returns a *cobra.Command that handles the `version` command.

func ZeroOrTwoArgs

func ZeroOrTwoArgs(cmd *cobra.Command, args []string) error

ZeroOrTwoArgs requires either no or 2 arguments.

Types

type CallbackWriter

type CallbackWriter struct {
	Callbacks map[string]func([]byte) error
	// contains filtered or unexported fields
}

CallbackWriter will execute each callback once the message is received. The full matched message is passed to the callback. An error returned from the callback is returned by Write.

func (*CallbackWriter) String

func (c *CallbackWriter) String() string

func (*CallbackWriter) Write

func (c *CallbackWriter) Write(msg []byte) (int, error)

type CommandExecuter

type CommandExecuter struct {
	New            func() *cobra.Command
	Ctx            context.Context
	PersistentArgs []string
}

func (*CommandExecuter) Exec

func (c *CommandExecuter) Exec(stdin io.Reader, args ...string) (string, string, error)

func (*CommandExecuter) ExecBackground

func (c *CommandExecuter) ExecBackground(stdin io.Reader, stdOut, stdErr io.Writer, args ...string) *errgroup.Group

func (*CommandExecuter) ExecExpectedErr

func (c *CommandExecuter) ExecExpectedErr(t require.TestingT, args ...string) string

func (*CommandExecuter) ExecNoErr

func (c *CommandExecuter) ExecNoErr(t require.TestingT, args ...string) string

type ConditionalPrinter

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

func NewConditionalPrinter

func NewConditionalPrinter(w io.Writer, print bool) *ConditionalPrinter

func NewLoudErrPrinter

func NewLoudErrPrinter(cmd *cobra.Command) *ConditionalPrinter

NewLoudErrPrinter returns a ConditionalPrinter that only prints to cmd.ErrOrStderr when --quiet is not set

func NewLoudOutPrinter

func NewLoudOutPrinter(cmd *cobra.Command) *ConditionalPrinter

NewLoudOutPrinter returns a ConditionalPrinter that only prints to cmd.OutOrStdout when --quiet is not set

func NewLoudPrinter

func NewLoudPrinter(cmd *cobra.Command, w io.Writer) *ConditionalPrinter

NewLoudPrinter returns a ConditionalPrinter that only prints to w when --quiet is not set

func NewQuietErrPrinter

func NewQuietErrPrinter(cmd *cobra.Command) *ConditionalPrinter

NewQuietErrPrinter returns a ConditionalPrinter that only prints to cmd.ErrOrStderr when --quiet is set

func NewQuietOutPrinter

func NewQuietOutPrinter(cmd *cobra.Command) *ConditionalPrinter

NewQuietOutPrinter returns a ConditionalPrinter that only prints to cmd.OutOrStdout when --quiet is set

func NewQuietPrinter

func NewQuietPrinter(cmd *cobra.Command, w io.Writer) *ConditionalPrinter

NewQuietPrinter returns a ConditionalPrinter that only prints to w when --quiet is set

func (*ConditionalPrinter) Print

func (p *ConditionalPrinter) Print(a ...interface{}) (n int, err error)

func (*ConditionalPrinter) Printf

func (p *ConditionalPrinter) Printf(format string, a ...interface{}) (n int, err error)

func (*ConditionalPrinter) Println

func (p *ConditionalPrinter) Println(a ...interface{}) (n int, err error)

type Nil

type Nil struct{}

func (Nil) Interface

func (Nil) Interface() interface{}

func (Nil) String

func (Nil) String() string

type OutputIder

type OutputIder string

OutputIder outputs an ID

func (OutputIder) Columns

func (i OutputIder) Columns() []string

func (OutputIder) Header

func (OutputIder) Header() []string

func (OutputIder) Interface

func (i OutputIder) Interface() interface{}

type OutputIderCollection

type OutputIderCollection struct {
	Items []OutputIder
}

OutputIderCollection outputs a list of IDs

func (OutputIderCollection) Header

func (OutputIderCollection) Header() []string

func (OutputIderCollection) Interface

func (c OutputIderCollection) Interface() interface{}

func (OutputIderCollection) Len

func (c OutputIderCollection) Len() int

func (OutputIderCollection) Table

func (c OutputIderCollection) Table() [][]string

type PaginatedList

type PaginatedList struct {
	Collection interface {
		Table
		IDs() []string
	} `json:"-"`
	Items         []interface{} `json:"items"`
	NextPageToken string        `json:"next_page_token"`
	IsLastPage    bool          `json:"is_last_page"`
}

func (*PaginatedList) Header

func (r *PaginatedList) Header() []string

func (*PaginatedList) IDs

func (r *PaginatedList) IDs() []string

func (*PaginatedList) Interface

func (r *PaginatedList) Interface() interface{}

func (*PaginatedList) Len

func (r *PaginatedList) Len() int

func (*PaginatedList) Table

func (r *PaginatedList) Table() [][]string

type Table

type Table interface {
	TableHeader
	Table() [][]string
	Interface() interface{}
	Len() int
}

type TableHeader

type TableHeader interface {
	Header() []string
}

type TableRow

type TableRow interface {
	TableHeader
	Columns() []string
	Interface() interface{}
}

type URL

type URL struct {
	url.URL
}

func (*URL) Set

func (u *URL) Set(s string) error

func (*URL) Type

func (*URL) Type() string

Jump to

Keyboard shortcuts

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