Skip to content

Commit c5e6f82

Browse files
committed
fix: address PR review comments for local subcommand
- Lowercase error messages to follow Go conventions - Extract stdin reading into prepareStdinValues() to avoid double-read when rendering both charts - Add HELM_BIN env var validation with "helm" default fallback Signed-off-by: yxxhero <aiopsclub@163.com>
1 parent 9b7e101 commit c5e6f82

1 file changed

Lines changed: 42 additions & 30 deletions

File tree

cmd/local.go

Lines changed: 42 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,18 @@ func localCmd() *cobra.Command {
115115
}
116116

117117
func (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+
148182
func (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

Comments
 (0)