71 lines
2.0 KiB
Go
71 lines
2.0 KiB
Go
package app
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"gitea.maximumdirect.net/eric/narratio/internal/config"
|
|
"gitea.maximumdirect.net/eric/narratio/internal/manifest"
|
|
)
|
|
|
|
func effectiveConfigProvenance(cfg *config.Config) *manifest.EffectiveConfigProvenance {
|
|
if cfg == nil || cfg.Pipeline == nil {
|
|
return nil
|
|
}
|
|
provenance := &manifest.EffectiveConfigProvenance{
|
|
EffectiveConfigDigest: config.EffectivePipelineDigest(cfg.Pipeline),
|
|
}
|
|
if selected, ok := config.SelectedPipelineProfile(cfg.Pipeline); ok {
|
|
provenance.SelectedProfile = &manifest.SelectedProfileProvenance{
|
|
Name: selected.Name,
|
|
Source: selected.Source,
|
|
}
|
|
}
|
|
if provenance.SelectedProfile == nil && provenance.EffectiveConfigDigest == "" {
|
|
return nil
|
|
}
|
|
return provenance
|
|
}
|
|
|
|
func applyEffectiveConfigProvenance(m *manifest.Manifest, cfg *config.Config) {
|
|
if m != nil {
|
|
m.EffectiveConfig = effectiveConfigProvenance(cfg)
|
|
}
|
|
}
|
|
|
|
func applyEffectiveConfigProvenanceToRun(m *manifest.RunManifest, cfg *config.Config) {
|
|
if m != nil {
|
|
m.EffectiveConfig = effectiveConfigProvenance(cfg)
|
|
}
|
|
}
|
|
|
|
func effectiveConfigSummary(cfg *config.Config) string {
|
|
provenance := effectiveConfigProvenance(cfg)
|
|
if provenance == nil {
|
|
return "profile=none digest=unavailable"
|
|
}
|
|
profile := "none"
|
|
if provenance.SelectedProfile != nil {
|
|
profile = provenance.SelectedProfile.Name + " (" + provenance.SelectedProfile.Source + ")"
|
|
}
|
|
digest := provenance.EffectiveConfigDigest
|
|
if digest == "" {
|
|
digest = "unavailable"
|
|
}
|
|
return fmt.Sprintf("profile=%s digest=%s", profile, digest)
|
|
}
|
|
|
|
func persistedEffectiveConfigSummary(provenance *manifest.EffectiveConfigProvenance) string {
|
|
if provenance == nil {
|
|
return "profile=none digest=unavailable"
|
|
}
|
|
profile := "none"
|
|
if provenance.SelectedProfile != nil {
|
|
profile = provenance.SelectedProfile.Name + " (" + provenance.SelectedProfile.Source + ")"
|
|
}
|
|
digest := provenance.EffectiveConfigDigest
|
|
if digest == "" {
|
|
digest = "unavailable"
|
|
}
|
|
return fmt.Sprintf("profile=%s digest=%s", profile, digest)
|
|
}
|