From d32449b2d29701b4e8400e07f9df1653e3da5aa8 Mon Sep 17 00:00:00 2001
From: Evan Lezar <elezar@nvidia.com>
Date: Fri, 7 Mar 2025 15:52:03 +0200
Subject: [PATCH] Allow nvidia-ctk config --set to accept comma-separated lists

The urfave update to v2.27.6 fixes the behaviour when disabling a separator
for repeated StringSliceFlags. This change updates the nvidia-ctk config
command to allow list options to be specified as comma-separated values.

Signed-off-by: Evan Lezar <elezar@nvidia.com>
---
 cmd/nvidia-ctk/config/config.go | 9 ++++++++-
 cmd/nvidia-ctk/main.go          | 1 +
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/cmd/nvidia-ctk/config/config.go b/cmd/nvidia-ctk/config/config.go
index e1e163ca..197f6a2d 100644
--- a/cmd/nvidia-ctk/config/config.go
+++ b/cmd/nvidia-ctk/config/config.go
@@ -194,7 +194,14 @@ func setFlagToKeyValue(setFlag string, setListSeparator string) (string, interfa
 	case reflect.String:
 		return key, value, nil
 	case reflect.Slice:
-		valueParts := strings.Split(value, setListSeparator)
+		valueParts := []string{value}
+		for _, sep := range []string{setListSeparator, ","} {
+			if !strings.Contains(value, sep) {
+				continue
+			}
+			valueParts = strings.Split(value, sep)
+			break
+		}
 		switch field.Elem().Kind() {
 		case reflect.String:
 			return key, valueParts, nil
diff --git a/cmd/nvidia-ctk/main.go b/cmd/nvidia-ctk/main.go
index 9a12ae16..011887e8 100644
--- a/cmd/nvidia-ctk/main.go
+++ b/cmd/nvidia-ctk/main.go
@@ -49,6 +49,7 @@ func main() {
 
 	// Create the top-level CLI
 	c := cli.NewApp()
+	c.DisableSliceFlagSeparator = true
 	c.Name = "NVIDIA Container Toolkit CLI"
 	c.UseShortOptionHandling = true
 	c.EnableBashCompletion = true