configresolver

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: May 26, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AnnotationScope       = "config.scope"
	AnnotationRemoteKey   = "config.remoteKey"
	AnnotationDisplayName = "config.displayName"
	AnnotationDescription = "config.description"
	AnnotationWriteOnly   = "config.writeOnly"
)

Annotation key constants for pflag.Flag.Annotations used by the flagset-native config system.

View Source
const (
	PrefixUser   = "user"
	PrefixRemote = "remote"
	PrefixFolder = "folder"
)

Key prefix constants. Colons are safe as viper's delimiter is ".".

Variables

This section is empty.

Functions

func FolderMetadataKey

func FolderMetadataKey(folderPath, metaName string) string

FolderMetadataKey returns the key for folder metadata (preferred_org, base_branch, etc.). Format: folder:<folderPath>:<metaName>

func RemoteMachineKey

func RemoteMachineKey(name string) string

RemoteMachineKey returns the key for machine-level remote config. Format: remote:machine:<name>

func RemoteOrgFolderKey

func RemoteOrgFolderKey(orgID, folderPath, name string) string

RemoteOrgFolderKey returns the key for per-folder remote config within an org. Format: remote:<orgId>:folder:<folderPath>:<name>

func RemoteOrgKey

func RemoteOrgKey(orgID, name string) string

RemoteOrgKey returns the key for org-level remote config (LDX-Sync). Format: remote:<orgId>:<name>

func UserFolderKey

func UserFolderKey(folderPath, name string) string

UserFolderKey returns the key for a user-set folder override. Format: user:folder:<folderPath>:<name>

func UserGlobalKey

func UserGlobalKey(name string) string

UserGlobalKey returns the key for a user-set global value. Format: user:global:<name>

Types

type ConfigSource

type ConfigSource int

ConfigSource identifies which layer of the precedence chain resolved a value.

const (
	ConfigSourceDefault            ConfigSource = iota // default value from flag registration
	ConfigSourceLocal                                  // set locally (env var, CLI flag, config file, or explicit Set)
	ConfigSourceUserGlobal                             // user:global:<name>
	ConfigSourceUserFolderOverride                     // user:folder:<folderPath>:<name> (org-scope override)
	ConfigSourceRemote                                 // remote:<orgId>:*
	ConfigSourceRemoteLocked                           // remote:<orgId>:*
)

type LocalConfigField

type LocalConfigField struct {
	Value   any  `json:"value"`
	Changed bool `json:"changed"`
}

LocalConfigField holds a single user-provided configuration value. Changed must be true for the resolver to treat this as an active override. Wire protocol semantics (as *LocalConfigField):

  • nil pointer = omitted (don't change)
  • Changed: true + Value: non-nil = set override
  • Changed: true + Value: nil = clear/reset to default

type RemoteConfigField

type RemoteConfigField struct {
	Value    any
	IsLocked bool
	Origin   string
}

RemoteConfigField holds a single configuration value received from remote config (e.g. LDX-Sync). IsLocked: admin prevents any override; LS rejects edit attempts.

type Resolver

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

Resolver is a stateless resolver that applies the precedence chain for each configuration scope (machine, folder). effectiveOrg and folderPath are parameters, never stored state.

func New

New creates a Resolver backed by the given Configuration and ConfigurationOptionsMetaData.

func (*Resolver) IsLocked

func (r *Resolver) IsLocked(name, effectiveOrg string, folderPath ...string) bool

IsLocked reports whether the setting is locked in the remote config. For machine-scope flags, folderPath is ignored. The folderPath parameter is only used for folder level scope and thus optional.

func (*Resolver) Resolve

func (r *Resolver) Resolve(name, effectiveOrg, folderPath string) (any, ConfigSource)

Resolve returns the effective value and its source for the named setting given an effective organization ID and folder path. Both effectiveOrg and folderPath are stateless parameters.

Precedence rules (org can have both machine and folder level settings):

  • Machine: locked remote > user global > remote > default
  • Folder: locked remote > folder value > remote > user global > default

func (*Resolver) ResolveBool

func (r *Resolver) ResolveBool(name, effectiveOrg, folderPath string) bool

ResolveBool is a typed convenience wrapper around Resolve. Handles native bool, string representations ("true", "1", etc.), and all Go numeric types (int*, uint*, float*) where non-zero means true.

type Scope

type Scope string
const FolderScope Scope = "folder"
const MachineScope Scope = "machine"

Jump to

Keyboard shortcuts

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