loader

package
v2.1.1 Latest Latest
Warning

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

Go to latest
Published: May 16, 2024 License: Apache-2.0 Imports: 28 Imported by: 8

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, configDetails types.ConfigDetails, model map[string]any, options *Options, included []string) error

func InvalidProjectNameErr

func InvalidProjectNameErr(v string) error

func Load

func Load(configDetails types.ConfigDetails, options ...func(*Options)) (*types.Project, error)

Load reads a ConfigDetails and returns a fully loaded configuration. Deprecated: use LoadWithContext.

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 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 ParseYAML

func ParseYAML(source []byte) (map[string]interface{}, error)

ParseYAML reads the bytes from a file, parses the bytes into a mapping structure, and returns it.

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 WithSkipValidation

func WithSkipValidation(opts *Options)

WithSkipValidation sets the Options to skip validation when loading sections

Types

type Listener

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

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
	// 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
	// contains filtered or unexported fields
}

Options supported by Load

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 {
	yaml.Unmarshaler

	// 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