loader

package
v2.12.1 Latest Latest
Warning

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

Go to latest
Published: Jun 22, 2026 License: Apache-2.0 Imports: 29 Imported by: 36

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ApplyExtends

func ApplyExtends(ctx context.Context, dict map[string]any, opts *Options, tracker *cycleTracker, post PostProcessor) error

func ApplyInclude

func ApplyInclude(ctx context.Context, workingDir string, environment types.Mapping, model map[string]any, options *Options, included []string, processor PostProcessor) error

func InvalidProjectNameErr

func InvalidProjectNameErr(v string) error

func LoadConfigFiles added in v2.4.0

func LoadConfigFiles(ctx context.Context, configFiles []string, workingDir string, options ...func(*Options)) (*types.ConfigDetails, error)

LoadConfigFiles ingests config files with ResourceLoader and returns config details with paths to local copies

func LoadModelWithContext

func LoadModelWithContext(ctx context.Context, configDetails types.ConfigDetails, options ...func(*Options)) (map[string]any, error)

LoadModelWithContext reads a ConfigDetails and returns a fully loaded configuration as a yaml dictionary

func LoadWithContext

func LoadWithContext(ctx context.Context, configDetails types.ConfigDetails, options ...func(*Options)) (*types.Project, error)

LoadWithContext reads a ConfigDetails and returns a fully loaded configuration as a compose-go Project

func ModelToProject added in v2.8.0

func ModelToProject(dict map[string]interface{}, opts *Options, configDetails types.ConfigDetails) (*types.Project, error)

ModelToProject binds a canonical yaml dict into compose-go structs

func Normalize

func Normalize(dict map[string]any, env types.Mapping) (map[string]any, error)

Normalize compose project by moving deprecated attributes to their canonical position and injecting implicit defaults

func NormalizeProjectName

func NormalizeProjectName(s string) string

func OmitEmpty added in v2.4.0

func OmitEmpty(yaml map[string]any) map[string]any

OmitEmpty removes empty attributes which are irrelevant when unset

func ResolveEnvironment added in v2.1.4

func ResolveEnvironment(dict map[string]any, environment types.Mapping)

ResolveEnvironment update the environment variables for the format {- VAR} (without interpolation)

func ResolveRelativePaths

func ResolveRelativePaths(project *types.Project) error

ResolveRelativePaths resolves relative paths based on project WorkingDirectory

func Transform

func Transform(source interface{}, target interface{}) error

Transform converts the source into the target struct with compose types transformer and the specified transformers if any.

func WithDiscardEnvFiles

func WithDiscardEnvFiles(opts *Options)

WithDiscardEnvFiles sets the Options to discard the `env_file` section after resolving to the `environment` section

func WithProfiles

func WithProfiles(profiles []string) func(*Options)

WithProfiles sets profiles to be activated

func WithSelectedServices added in v2.12.0

func WithSelectedServices(services []string) func(*Options)

WithSelectedServices restricts the loaded project to the given services and their dependencies. An empty slice means "all services". When set, services not in the list are dropped from the project before environment resolution: their `env_file` and `label_file` entries will not be loaded from disk.

func WithSkipValidation

func WithSkipValidation(opts *Options)

WithSkipValidation sets the Options to skip validation when loading sections

func WithoutUnnecessaryResources added in v2.12.0

func WithoutUnnecessaryResources(opts *Options)

WithoutUnnecessaryResources drops networks/volumes/secrets/configs/models that are not referenced by services remaining after selection.

Types

type Listener

type Listener = func(event string, metadata map[string]any)

type NoopPostProcessor added in v2.9.1

type NoopPostProcessor struct{}

func (NoopPostProcessor) Apply added in v2.9.1

func (NoopPostProcessor) Apply(interface{}) error

type Options

type Options struct {
	// Skip schema validation
	SkipValidation bool
	// Skip interpolation
	SkipInterpolation bool
	// Skip normalization
	SkipNormalization bool
	// Resolve path
	ResolvePaths bool
	// Convert Windows path
	ConvertWindowsPaths bool
	// Skip consistency check
	SkipConsistencyCheck bool
	// Skip extends
	SkipExtends bool
	// SkipInclude will ignore `include` and only load model from file(s) set by ConfigDetails
	SkipInclude bool
	// SkipResolveEnvironment will ignore computing `environment` for services
	SkipResolveEnvironment bool
	// SkipDefaultValues will ignore missing required attributes
	SkipDefaultValues bool
	// Interpolation options
	Interpolate *interp.Options

	// Profiles set profiles to enable
	Profiles []string
	// SelectedServices restricts the project model to these services (and their dependencies)
	// after parsing. An empty slice means "all services". When set, services not in the list
	// are dropped from the project before environment resolution, so their env_file / label_file
	// entries are not loaded.
	SelectedServices []string
	// PruneUnnecessaryResources drops networks/volumes/secrets/configs/models that are not
	// referenced by active services after service selection.
	PruneUnnecessaryResources bool
	// ResourceLoaders manages support for remote resources
	ResourceLoaders []ResourceLoader
	// KnownExtensions manages x-* attribute we know and the corresponding go structs
	KnownExtensions map[string]any
	// Metada for telemetry
	Listeners []Listener
	// MaxNodeVisits caps total YAML node visits during reset/override resolution.
	// Zero means use the default. Useful for very large compose files that exceed the default cap.
	MaxNodeVisits int
	// contains filtered or unexported fields
}

Options supported by Load

func ToOptions added in v2.8.0

func ToOptions(configDetails *types.ConfigDetails, options []func(*Options)) *Options

func (Options) GetProjectName

func (o Options) GetProjectName() (string, bool)

func (*Options) ProcessEvent

func (o *Options) ProcessEvent(event string, metadata map[string]any)

Invoke all listeners for an event

func (Options) RemoteResourceLoaders

func (o Options) RemoteResourceLoaders() []ResourceLoader

RemoteResourceLoaders excludes localResourceLoader from ResourceLoaders

func (*Options) SetProjectName

func (o *Options) SetProjectName(name string, imperativelySet bool)

type PostProcessor

type PostProcessor interface {
	// Apply changes to compose model based on recorder metadata
	Apply(interface{}) error
}

PostProcessor is used to tweak compose model based on metadata extracted during yaml Unmarshal phase that hardly can be implemented using go-yaml and mapstructure

type ResetProcessor

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

func (*ResetProcessor) Apply

func (p *ResetProcessor) Apply(target any) error

Apply finds the go attributes matching recorded paths and reset them to zero value

func (*ResetProcessor) UnmarshalYAML

func (p *ResetProcessor) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML implement yaml.Unmarshaler

type ResourceLoader

type ResourceLoader interface {
	// Accept returns `true` is the resource reference matches ResourceLoader supported protocol(s)
	Accept(path string) bool
	// Load returns the path to a local copy of remote resource identified by `path`.
	Load(ctx context.Context, path string) (string, error)
	// Dir computes path to resource"s parent folder, made relative if possible
	Dir(path string) string
}

ResourceLoader is a plugable remote resource resolver

Jump to

Keyboard shortcuts

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