@@ -115,14 +115,18 @@ func localCmd() *cobra.Command {
115115}
116116
117117func (l * local ) run () error {
118+ if err := l .prepareStdinValues (); err != nil {
119+ return err
120+ }
121+
118122 manifest1 , err := l .renderChart (l .chart1 )
119123 if err != nil {
120- return fmt .Errorf ("Failed to render chart %s: %w" , l .chart1 , err )
124+ return fmt .Errorf ("failed to render chart %s: %w" , l .chart1 , err )
121125 }
122126
123127 manifest2 , err := l .renderChart (l .chart2 )
124128 if err != nil {
125- return fmt .Errorf ("Failed to render chart %s: %w" , l .chart2 , err )
129+ return fmt .Errorf ("failed to render chart %s: %w" , l .chart2 , err )
126130 }
127131
128132 excludes := []string {manifest .Helm3TestHook , manifest .Helm2TestSuccessHook }
@@ -145,6 +149,36 @@ func (l *local) run() error {
145149 return nil
146150}
147151
152+ func (l * local ) prepareStdinValues () error {
153+ for i , valueFile := range l .valueFiles {
154+ if strings .TrimSpace (valueFile ) == "-" {
155+ data , err := io .ReadAll (os .Stdin )
156+ if err != nil {
157+ return err
158+ }
159+
160+ tmpfile , err := os .CreateTemp ("" , "helm-diff-stdin-values" )
161+ if err != nil {
162+ return err
163+ }
164+ defer os .Remove (tmpfile .Name ())
165+
166+ if _ , err := tmpfile .Write (data ); err != nil {
167+ tmpfile .Close ()
168+ return err
169+ }
170+
171+ if err := tmpfile .Close (); err != nil {
172+ return err
173+ }
174+
175+ l .valueFiles [i ] = tmpfile .Name ()
176+ break
177+ }
178+ }
179+ return nil
180+ }
181+
148182func (l * local ) renderChart (chartPath string ) ([]byte , error ) {
149183 flags := []string {}
150184
@@ -165,33 +199,7 @@ func (l *local) renderChart(chartPath string) ([]byte, error) {
165199 }
166200
167201 for _ , valueFile := range l .valueFiles {
168- if strings .TrimSpace (valueFile ) == "-" {
169- bytes , err := io .ReadAll (os .Stdin )
170- if err != nil {
171- return nil , err
172- }
173-
174- tmpfile , err := os .CreateTemp ("" , "helm-diff-stdin-values" )
175- if err != nil {
176- return nil , err
177- }
178- defer func () {
179- _ = os .Remove (tmpfile .Name ())
180- }()
181-
182- if _ , err := tmpfile .Write (bytes ); err != nil {
183- _ = tmpfile .Close ()
184- return nil , err
185- }
186-
187- if err := tmpfile .Close (); err != nil {
188- return nil , err
189- }
190-
191- flags = append (flags , "--values" , tmpfile .Name ())
192- } else {
193- flags = append (flags , "--values" , valueFile )
194- }
202+ flags = append (flags , "--values" , valueFile )
195203 }
196204
197205 for _ , value := range l .values {
@@ -229,6 +237,10 @@ func (l *local) renderChart(chartPath string) ([]byte, error) {
229237 args := []string {"template" , l .release , chartPath }
230238 args = append (args , flags ... )
231239
232- cmd := exec .Command (os .Getenv ("HELM_BIN" ), args ... )
240+ helmBin := os .Getenv ("HELM_BIN" )
241+ if helmBin == "" {
242+ helmBin = "helm"
243+ }
244+ cmd := exec .Command (helmBin , args ... )
233245 return outputWithRichError (cmd )
234246}
0 commit comments