From a0da916e0c79f8399d65a7d51ee7c21e81c9508c Mon Sep 17 00:00:00 2001 From: David Byron Date: Sun, 26 Jan 2025 12:08:50 -0800 Subject: [PATCH] fix(helm): support floating point override values in values files before this, the values file would contain a string, even if rawOverrides is true. In other words, `--set my-override=1.234` would become ``` my-override: "1.234" ``` After this change, it's: ``` my-override: 1.234 ``` --- .../rosco/manifests/helm/HelmSetArgumentParser.java | 8 +++++++- .../rosco/manifests/helm/HelmSetArgumentParserTest.java | 4 +++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/rosco-manifests/src/main/java/com/netflix/spinnaker/rosco/manifests/helm/HelmSetArgumentParser.java b/rosco-manifests/src/main/java/com/netflix/spinnaker/rosco/manifests/helm/HelmSetArgumentParser.java index f173b0462..e6a3a6d87 100644 --- a/rosco-manifests/src/main/java/com/netflix/spinnaker/rosco/manifests/helm/HelmSetArgumentParser.java +++ b/rosco-manifests/src/main/java/com/netflix/spinnaker/rosco/manifests/helm/HelmSetArgumentParser.java @@ -536,7 +536,13 @@ private Object typedVal(String value) { try { return Long.parseLong(value); } catch (NumberFormatException e) { - // Not a Long, return the string itself + // Not a Long, let's see if it's a Double + } + + try { + return Double.parseDouble(value); + } catch (NumberFormatException e) { + // Not a Double either, return the string itself. } } diff --git a/rosco-manifests/src/test/java/com/netflix/spinnaker/rosco/manifests/helm/HelmSetArgumentParserTest.java b/rosco-manifests/src/test/java/com/netflix/spinnaker/rosco/manifests/helm/HelmSetArgumentParserTest.java index 65e14a73e..3af072725 100644 --- a/rosco-manifests/src/test/java/com/netflix/spinnaker/rosco/manifests/helm/HelmSetArgumentParserTest.java +++ b/rosco-manifests/src/test/java/com/netflix/spinnaker/rosco/manifests/helm/HelmSetArgumentParserTest.java @@ -160,7 +160,9 @@ private static Stream helmParseArgs() { Map.of("name1", Map.of("name2", Arrays.asList(null, Map.of("foo", "bar")))), true), Arguments.of("key[0]=value,key=value", Map.of("key", "value"), true), - Arguments.of("key1.key2=value,key1=value", Map.of("key1", "value"), true)); + Arguments.of("key1.key2=value,key1=value", Map.of("key1", "value"), true), + Arguments.of("key=1.234", Map.of("key", "1.234"), true), + Arguments.of("key=1.234", Map.of("key", 1.234), false)); } private static Stream helmParseArgsError() {