Skip to content

Commit

Permalink
Override the default values
Browse files Browse the repository at this point in the history
Signed-off-by: Rizwana777 <[email protected]>
  • Loading branch information
Rizwana777 committed Nov 8, 2024
1 parent bb2bc84 commit ff8912d
Showing 1 changed file with 27 additions and 22 deletions.
49 changes: 27 additions & 22 deletions controllers/argocd/deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -343,48 +343,53 @@ func isMergable(extraArgs []string, cmd []string) error {
return nil
}

// appendUniqueArgs appends extraArgs to cmd while ignoring any duplicate flags.
// appendUniqueArgs appends extraArgs to cmd while ignoring any duplicate flags.
func appendUniqueArgs(cmd []string, extraArgs []string) []string {
// Parse cmd into a map to track both flags and their associated values
existingArgs := make(map[string]string)
// Parse cmd into a map to track flags and their indices
existingArgs := make(map[string]int) // Map to track index of each flag in cmd
for i := 0; i < len(cmd); i++ {
arg := cmd[i]
if strings.HasPrefix(arg, "--") {
// Check if the next item is a value (not another flag)
if i+1 < len(cmd) && !strings.HasPrefix(cmd[i+1], "--") {
existingArgs[arg] = cmd[i+1] // Store flag-value pair
i++ // Skip the value
existingArgs[arg] = i
i++ // Skip the value
} else {
existingArgs[arg] = "" // Store flag without value
existingArgs[arg] = i
}
}
}

// Iterate over extraArgs and append only if the flag and value do not already exist in cmd
// Iterate over extraArgs to append or override existing flags
for i := 0; i < len(extraArgs); i++ {
arg := extraArgs[i]
if strings.HasPrefix(arg, "--") {
// If this flag already exists in cmd, skip it
if _, exists := existingArgs[arg]; exists {
if index, exists := existingArgs[arg]; exists {
// If the flag exists, check if we need to override its value
if i+1 < len(extraArgs) && !strings.HasPrefix(extraArgs[i+1], "--") {
i++ // Skip the associated value
// If the flag has a value in extraArgs, update it in cmd
if index+1 < len(cmd) && !strings.HasPrefix(cmd[index+1], "--") {
cmd[index+1] = extraArgs[i+1] // Override the existing value
} else {
// Insert the new value if it didn't previously have one
cmd = append(cmd[:index+1], append([]string{extraArgs[i+1]}, cmd[index+1:]...)...)
}
i++ // Skip the value in extraArgs
}
continue
}

// Append the flag to cmd
cmd = append(cmd, arg)

// Check if this flag has an associated value
if i+1 < len(extraArgs) && !strings.HasPrefix(extraArgs[i+1], "--") {
cmd = append(cmd, extraArgs[i+1])
existingArgs[arg] = extraArgs[i+1] // Track flag-value pair
i++ // Skip the value
} else {
existingArgs[arg] = "" // Track flag without a value
// Append the new flag and its value if not present
cmd = append(cmd, arg)
if i+1 < len(extraArgs) && !strings.HasPrefix(extraArgs[i+1], "--") {
cmd = append(cmd, extraArgs[i+1])
existingArgs[arg] = len(cmd) - 2 // Update index tracking
i++ // Skip the value
} else {
existingArgs[arg] = len(cmd) - 1 // Update index tracking
}
}
} else {
// If it's not a flag, append it directly (non-flag argument)
// Append non-flag arguments directly
cmd = append(cmd, arg)
}
}
Expand Down

0 comments on commit ff8912d

Please sign in to comment.