Skip to content

Commit 21bb614

Browse files
committed
INST-17866 - Fixing updating of provider config if provider already exists
1 parent 63d9188 commit 21bb614

File tree

1 file changed

+27
-23
lines changed

1 file changed

+27
-23
lines changed

internal/utils/utils.go

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"jfrog-credential-provider/internal/logger"
2222
"math/big"
2323
"os"
24+
"slices"
2425
"strconv"
2526

2627
"gopkg.in/yaml.v3"
@@ -183,32 +184,35 @@ func MergeFiles(file1, file2, outputFile string, isYaml, dryRun bool, logs *logg
183184
// Add the new provider to the config
184185
if !providerExist {
185186
config.Providers = append(config.Providers, provider)
187+
} else {
188+
// Delete the existing provider with the same artifactory url
189+
config.Providers = slices.DeleteFunc(config.Providers, func(p Provider) bool {
190+
return GetEnvVarValue(p.Env, "artifactory_url") == GetEnvVarValue(provider.Env, "artifactory_url")
191+
})
192+
// Add the new provider to the config
193+
config.Providers = append(config.Providers, provider)
194+
}
195+
var mergedData []byte
196+
var err error
197+
if isYaml {
198+
mergedData, err = yaml.Marshal(&config)
199+
} else {
200+
mergedData, err = json.MarshalIndent(&config, "", " ")
201+
}
202+
if err != nil {
203+
return fmt.Errorf("failed to marshal merged config: %w", err)
204+
}
186205

187-
// Write the merged config to the output file
188-
var mergedData []byte
189-
var err error
190-
if isYaml {
191-
mergedData, err = yaml.Marshal(&config)
192-
} else {
193-
mergedData, err = json.MarshalIndent(&config, "", " ")
194-
}
195-
if err != nil {
196-
return fmt.Errorf("failed to marshal merged config: %w", err)
197-
}
198-
199-
if dryRun {
200-
logs.Info("Dry run: Below config would be written to " + outputFile)
201-
logs.Info(string(mergedData))
202-
return nil
203-
}
206+
if dryRun {
207+
logs.Info("Dry run: Below config would be written to " + outputFile)
208+
logs.Info(string(mergedData))
209+
return nil
210+
}
204211

205-
if err := os.WriteFile(outputFile, mergedData, 0644); err != nil {
206-
return fmt.Errorf("failed to write output file: %w", err)
207-
}
208-
logs.Info("Merged config written to " + outputFile)
209-
} else {
210-
logs.Info("Provider with same artifactory url already exists. Skipping addition.")
212+
if err := os.WriteFile(outputFile, mergedData, 0644); err != nil {
213+
return fmt.Errorf("failed to write output file: %w", err)
211214
}
215+
logs.Info("Merged config written to " + outputFile)
212216
return nil
213217
}
214218

0 commit comments

Comments
 (0)