Help us shape the future of Go! Take the 2026 Go Developer Survey

preprocess

package
v1.224.0 Latest Latest
Warning

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

Go to latest
Published: Jul 23, 2026 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type FlagInfo

type FlagInfo interface {
	// GetName returns the flag's name (e.g., "identity").
	GetName() string
	// GetShorthand returns the flag's shorthand (e.g., "i").
	GetShorthand() string
	// GetNoOptDefVal returns the flag's NoOptDefVal sentinel value.
	GetNoOptDefVal() string
	// GetNoOptDefValConsumesNextArg reports whether "--flag value" should be
	// rewritten to "--flag=value".
	GetNoOptDefValConsumesNextArg() bool
}

FlagInfo represents the information needed about a flag for preprocessing. This interface matches the methods needed from flags.Flag, avoiding circular imports.

type NoOptDefValPreprocessor

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

NoOptDefValPreprocessor rewrites space-separated syntax to equals syntax for flags with NoOptDefVal set.

This works around a Cobra/pflag limitation where NoOptDefVal only works with equals syntax (--flag=value), not space-separated syntax (--flag value). See: https://github.com/spf13/pflag/issues/134, pflag#321, cobra#1962

Example transformation:

Input:  ["--identity", "prod", "plan"]
Output: ["--identity=prod", "plan"]

Without preprocessing, "prod" would be treated as a positional argument because Cobra's NoOptDefVal assumes the user wants the default value when no equals sign is present.

func NewNoOptDefValPreprocessor

func NewNoOptDefValPreprocessor(flags []FlagInfo) *NoOptDefValPreprocessor

NewNoOptDefValPreprocessor creates a new preprocessor with the given flags. The flags slice should contain all flags that may have NoOptDefVal set.

func (*NoOptDefValPreprocessor) Preprocess

func (p *NoOptDefValPreprocessor) Preprocess(args []string) []string

Preprocess rewrites space-separated flag syntax to equals syntax for flags that have NoOptDefVal set.

type Pipeline

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

Pipeline runs multiple preprocessors in sequence. This allows composing multiple preprocessing steps in a clear, testable manner.

func NewPipeline

func NewPipeline(preprocessors ...Preprocessor) *Pipeline

NewPipeline creates a new preprocessing pipeline with the given preprocessors. Preprocessors are run in the order they are provided.

func (*Pipeline) Run

func (p *Pipeline) Run(args []string) []string

Run executes all preprocessors in sequence, passing the output of each as the input to the next.

type Preprocessor

type Preprocessor interface {
	// Preprocess transforms args and returns the modified args.
	// Implementations should not modify the input slice.
	Preprocess(args []string) []string
}

Preprocessor transforms command-line arguments before Cobra parses them. This is distinct from compatibility flags (pkg/flags/compat) which translate external tool syntax like Terraform's -var.

Preprocessing handles native Atmos flag behavior that requires argument transformation before Cobra's parsing phase.

Jump to

Keyboard shortcuts

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