cmdutil

package
v2.15.0 Latest Latest
Warning

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

Go to latest
Published: Oct 4, 2026 License: BSD-3-Clause Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ShowAllLimit is the sentinel the Arcane API uses for "return everything".
	// The backend honours it on every list path: DB-backed lists short-circuit to
	// paginateDBAll (bypassing the 100-item clamp), in-memory Docker lists return
	// the full slice, and the handlers that coerce a zero limit to 20 test for
	// exactly 0 so they leave it alone.
	ShowAllLimit = -1

	// AllFlagUsage is the shared help text for the --all flag on list commands.
	AllFlagUsage = "Return every item, ignoring pagination"

	// StartFlagUsage is the shared help text for the --start flag on list commands.
	// Database-backed resources (projects, repos, gitops-syncs, environments,
	// registries, users, events, api-keys, roles) derive a page number from
	// start/limit, so an offset that is not a multiple of --limit is rounded down.
	StartFlagUsage = "Offset for pagination (rounded down to a multiple of --limit on database-backed resources)"
)
View Source
const MaxPromptOptions = 20

MaxPromptOptions caps how many search matches the resolver offers interactively before asking the user to refine the query instead.

Variables

This section is empty.

Functions

func AbortUploadSession added in v2.9.0

func AbortUploadSession(ctx context.Context, c *client.Client, kind, sessionID string)

AbortUploadSession deletes a chunked upload session, ignoring errors. Use it when the consume step after a completed upload fails.

func AppendQuery added in v2.6.0

func AppendQuery(path string, extra url.Values) string

AppendQuery merges extra query parameters into a path, preserving any that are already present.

func ApplyPaginationParams

func ApplyPaginationParams(cmd *cobra.Command, path string, p ListParams) (string, error)

ApplyPaginationParams appends limit and start query params to a list path. It preserves any existing query parameters on the path.

func AssumeYes

func AssumeYes(cmd *cobra.Command) bool

AssumeYes returns true when prompts should be skipped.

func ClientFromCommand

func ClientFromCommand(cmd *cobra.Command) (*client.Client, error)

ClientFromCommand returns a configured authenticated client for the command.

func Confirm

func Confirm(cmd *cobra.Command, prompt string) (bool, error)

Confirm prompts the user unless --yes is enabled.

func DecodeJSON

func DecodeJSON[T any](resp *http.Response, out *T) error

DecodeJSON decodes JSON into out and enforces a successful HTTP status.

func EffectiveLimit

func EffectiveLimit(cmd *cobra.Command, resource, flagName string, flagValue, fallbackDefault int) int

EffectiveLimit resolves the final list limit with precedence: explicit flag > per-resource config > global config > fallback default. A limit of ShowAllLimit is passed straight through so that `--limit -1` reaches the server as the documented "return everything" sentinel.

func EnsureSuccessStatus

func EnsureSuccessStatus(resp *http.Response) error

EnsureSuccessStatus returns an error for non-2xx responses.

func JSONOutputEnabled

func JSONOutputEnabled(cmd *cobra.Command) bool

JSONOutputEnabled returns true if JSON output is enabled for this command.

func LooksLikeIDPrefix added in v2.10.0

func LooksLikeIDPrefix(identifierLower string) bool

LooksLikeIDPrefix reports whether identifier could be a hex ID prefix worth scanning the full list for.

func PrintJSON

func PrintJSON(v any) error

PrintJSON prints indented JSON to stdout.

func PrintRawJSON added in v2.6.0

func PrintRawJSON(body []byte) error

PrintRawJSON pretty-prints a raw JSON document, falling back to the bytes as-is.

func ReadJSONBody added in v2.6.0

func ReadJSONBody(resp *http.Response) ([]byte, error)

ReadJSONBody enforces a successful HTTP status and returns the raw response body. Use it when a command needs both to decode a response and to echo it verbatim, so that fields the CLI does not model — such as the counts and groups objects on the container, volume, network and gitops-sync list endpoints — survive --json output instead of being dropped by a re-marshal.

func RunList added in v2.10.0

func RunList[T any](cmd *cobra.Command, c *client.Client, spec ListSpec[T]) error

RunList executes one standard list command as described by spec.

func RunPostAction added in v2.10.0

func RunPostAction[T any](cmd *cobra.Command, c *client.Client, spec PostActionSpec) error

RunPostAction executes one POST action command as described by spec.

func UnauthClientFromCommand

func UnauthClientFromCommand(cmd *cobra.Command) (*client.Client, error)

UnauthClientFromCommand returns a configured unauthenticated client for the command.

func UploadFileInChunks added in v2.9.0

func UploadFileInChunks(ctx context.Context, c *client.Client, kind, filePath string, showProgress bool) (string, error)

UploadFileInChunks streams a local file to the server through a chunked upload session of the given kind and returns the completed session ID. The file is sent as independently retried chunks so reverse-proxy body limits never see the full size. On failure the session is deleted server-side. When showProgress is true a progress bar is rendered.

Types

type HTTPStatusError

type HTTPStatusError struct {
	StatusCode int
	Body       string
}

HTTPStatusError represents a non-2xx HTTP response.

func (*HTTPStatusError) Error

func (e *HTTPStatusError) Error() string

type ListParams added in v2.6.0

type ListParams struct {
	// Resource is the canonical resource name used to look up a configured
	// per-resource limit. See clitypes.KnownPaginatedResources.
	Resource string
	// Limit is the value of the command's --limit flag.
	Limit int
	// FallbackDefault applies when neither the flag nor config supplies a limit.
	FallbackDefault int
	// Start is the value of the command's --start flag.
	Start int
	// All requests every item, ignoring pagination entirely.
	All bool
}

ListParams describes how a list command wants its results paginated.

type ListSpec added in v2.10.0

type ListSpec[T any] struct {
	// Resource names the collection in error messages and the trailing
	// "Showing x of y <resource>" line.
	Resource string
	// Endpoint is the list path (environment already applied).
	Endpoint string
	// Params configures pagination from the command's flags.
	Params ListParams
	// Query holds extra query parameters, applied after pagination.
	Query url.Values
	// JSON selects raw JSON passthrough output.
	JSON bool

	Headers []string
	Row     func(T) []string
}

ListSpec describes one standard list command: fetch a paginated endpoint, echo the raw body for --json (so unmodeled fields like counts and groups survive, see ReadJSONBody), otherwise render a table.

type PostActionSpec added in v2.10.0

type PostActionSpec struct {
	// Path is the fully built action path.
	Path string
	// Body is the optional JSON request body.
	Body any
	// FailureMessage wraps transport and status errors.
	FailureMessage string
	// SuccessMessage is the preformatted human-readable success line.
	SuccessMessage string
	// Timeout optionally extends the client timeout for slow actions.
	Timeout time.Duration
	// JSON prints the decoded response data instead of the success line.
	JSON bool
}

PostActionSpec describes one resolve→POST→decode→report action command. T is the API envelope's data payload.

type ResourceRef added in v2.10.0

type ResourceRef[D any, S any] struct {
	// Singular and Plural name the resource in prompts and error messages
	// ("container", "containers").
	Singular string
	Plural   string
	// IDHint completes "use <IDHint> or run `<ListCmd>`" guidance
	// ("the container ID", "the volume name").
	IDHint  string
	ListCmd string

	// GetPath builds the GET-by-identifier path; ListPath the list endpoint
	// that Resolve queries with ?search=<identifier>&limit=-1.
	GetPath  func(envID, identifier string) string
	ListPath func(envID string) string
	// SearchCandidates replaces the standard list search for resources with
	// specialized matching rules.
	SearchCandidates func(context.Context, *client.Client, string) ([]S, error)
	// SelectCandidate replaces the standard ambiguity handling while keeping
	// direct lookup and not-found behavior in Resolve.
	SelectCandidate func([]S, string, bool) (*S, error)
	// Validate checks a successful direct lookup before Resolve returns it.
	Validate func(D, string) error

	// Matches reports whether a listed item matches the identifier.
	Matches func(item S, identifierLower, original string) bool
	// Label renders one match as an interactive prompt option.
	Label func(S) string
	// Promote converts a selected summary into the detail shape.
	Promote func(S) *D

	// IDOf enables the last-resort ID-prefix scan over the full list for
	// resources addressed by opaque IDs (containers, images). Leave nil to
	// skip that fallback.
	IDOf func(S) string

	// Exact optionally reports an exact identifier match. When set and
	// exactly one search match is exact, it wins without prompting even if
	// broader substring matches exist.
	Exact func(item S, identifierLower, original string) bool
}

ResourceRef describes how one resource kind is resolved from a name, ID, or prefix. D is the detail type returned by the GET-by-identifier endpoint and S the summary type returned by the list endpoint.

func (ResourceRef[D, S]) Resolve added in v2.10.0

func (ref ResourceRef[D, S]) Resolve(ctx context.Context, c *client.Client, identifier string, allowPrompt bool) (*D, bool, error)

Resolve finds one resource by exact identifier or search. The bool result reports whether the returned details are complete (fetched from the GET-by-identifier endpoint) rather than promoted from a list row.

Jump to

Keyboard shortcuts

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