Merge provider defaults into one owned copy

This commit is contained in:
2026-11-05 14:00:57 +00:00
parent 0aceff8c08
commit 6112ee8fb4
3 changed files with 44 additions and 6 deletions

View File

@@ -138,24 +138,33 @@ func overlayProviderMap(lower, upper map[string]any) (map[string]any, error) {
if merged == nil {
merged = make(map[string]any)
}
if err := overlayOwnedProviderMap(merged, upper); err != nil {
return nil, err
}
return merged, nil
}
func overlayOwnedProviderMap(merged, upper map[string]any) error {
for key, value := range upper {
if child, ok := value.(map[string]any); ok {
if existing, ok := merged[key].(map[string]any); ok {
combined, err := overlayProviderMap(existing, child)
if err != nil {
return nil, err
if existing == nil {
existing = make(map[string]any)
merged[key] = existing
}
if err := overlayOwnedProviderMap(existing, child); err != nil {
return err
}
merged[key] = combined
continue
}
}
copied, err := jsonvalue.Copy(value)
if err != nil {
return nil, err
return err
}
merged[key] = copied
}
return merged, nil
return nil
}
func (state *loaded) lookupProfile(ctx context.Context, id string) (domain.ExecutionProfile, error) {