@@ -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