From aa3d497139906a28ed95f723eaecc4472ffac825 Mon Sep 17 00:00:00 2001 From: jmug Date: Fri, 30 Oct 2026 13:32:35 -0700 Subject: [PATCH] feat: Support setting the value of array/map secrets from a json file. --- internal/clis/hmsecrets/set-arr.go | 27 +++++++++++++++++++++++++-- internal/clis/hmsecrets/set-map.go | 27 +++++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/internal/clis/hmsecrets/set-arr.go b/internal/clis/hmsecrets/set-arr.go index eb60d6b..ad97de5 100644 --- a/internal/clis/hmsecrets/set-arr.go +++ b/internal/clis/hmsecrets/set-arr.go @@ -1,22 +1,35 @@ package hmsecrets import ( + "encoding/json" + "fmt" + "os" + "github.com/spf13/cobra" ) var arrValue []string +var arrFile string func init() { rootCmd.AddCommand(setArrCmd) setArrCmd.Flags().StringArrayVarP( &arrValue, - "array-value", + "value", "v", nil, "array value to store in the secret", ) - setArrCmd.MarkFlagRequired("array-value") + setArrCmd.Flags().StringVarP( + &arrFile, + "value-file", + "f", + "", + "file that contains the secret value (in json) to set", + ) + + setArrCmd.MarkFlagsOneRequired("value-file", "value") } var setArrCmd = &cobra.Command{ @@ -25,6 +38,16 @@ var setArrCmd = &cobra.Command{ Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { cli := getClient() + if arrFile != "" { + arrJSONBytes, err := os.ReadFile(arrFile) + if err != nil { + return fmt.Errorf("reading array value file: %w", err) + } + err = json.Unmarshal(arrJSONBytes, &arrValue) + if err != nil { + return fmt.Errorf("reading value from array file: %w", err) + } + } err := cli.PutStringArr(args[0], arrValue) if err != nil { return err diff --git a/internal/clis/hmsecrets/set-map.go b/internal/clis/hmsecrets/set-map.go index 597905c..3d2f9c1 100644 --- a/internal/clis/hmsecrets/set-map.go +++ b/internal/clis/hmsecrets/set-map.go @@ -1,22 +1,35 @@ package hmsecrets import ( + "encoding/json" + "fmt" + "os" + "github.com/spf13/cobra" ) var mapValue map[string]string +var mapFile string func init() { rootCmd.AddCommand(setMapCmd) setMapCmd.Flags().StringToStringVarP( &mapValue, - "map-value", + "value", "v", nil, "map value to store in the secret", ) - setArrCmd.MarkFlagRequired("map-value") + setMapCmd.Flags().StringVarP( + &mapFile, + "value-file", + "f", + "", + "file that contains the secret value (in json) to set", + ) + + setMapCmd.MarkFlagsOneRequired("value-file", "value") } var setMapCmd = &cobra.Command{ @@ -25,6 +38,16 @@ var setMapCmd = &cobra.Command{ Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { cli := getClient() + if mapFile != "" { + mapJSONBytes, err := os.ReadFile(mapFile) + if err != nil { + return fmt.Errorf("reading map value file: %w", err) + } + err = json.Unmarshal(mapJSONBytes, &mapValue) + if err != nil { + return fmt.Errorf("reading value from map file: %w", err) + } + } err := cli.PutStringMap(args[0], mapValue) if err != nil { return err