Documentation
¶
Index ¶
- Constants
- func FolderMetadataKey(folderPath, metaName string) string
- func RemoteMachineKey(name string) string
- func RemoteOrgFolderKey(orgID, folderPath, name string) string
- func RemoteOrgKey(orgID, name string) string
- func UserFolderKey(folderPath, name string) string
- func UserGlobalKey(name string) string
- type ConfigSource
- type LocalConfigField
- type RemoteConfigField
- type Resolver
- type Scope
Constants ¶
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.
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 ¶
FolderMetadataKey returns the key for folder metadata (preferred_org, base_branch, etc.). Format: folder:<folderPath>:<metaName>
func RemoteMachineKey ¶
RemoteMachineKey returns the key for machine-level remote config. Format: remote:machine:<name>
func RemoteOrgFolderKey ¶
RemoteOrgFolderKey returns the key for per-folder remote config within an org. Format: remote:<orgId>:folder:<folderPath>:<name>
func RemoteOrgKey ¶
RemoteOrgKey returns the key for org-level remote config (LDX-Sync). Format: remote:<orgId>:<name>
func UserFolderKey ¶
UserFolderKey returns the key for a user-set folder override. Format: user:folder:<folderPath>:<name>
func UserGlobalKey ¶
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 ¶
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 ¶
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 ¶
func New(conf configuration.Configuration, fm workflow.ConfigurationOptionsMetaData) *Resolver
New creates a Resolver backed by the given Configuration and ConfigurationOptionsMetaData.
func (*Resolver) IsLocked ¶
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 ¶
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.