Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit a2753f9

Browse files
authored
Merge pull request #84 from mnottale/helm-split
helm: Split big function in smaller bits.
2 parents 429ddbe + 262a67b commit a2753f9

2 files changed

Lines changed: 38 additions & 28 deletions

File tree

gometalinter.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,6 @@
3939
"vet"
4040
],
4141

42-
"Cyclo": 25,
42+
"Cyclo": 16,
4343
"LineLength": 200
4444
}

renderer/helm.go

Lines changed: 37 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -230,32 +230,8 @@ func helmRender(appname string, targetDir string, composeFiles []string, setting
230230
return ioutil.WriteFile(filepath.Join(targetDir, "templates", "stack.yaml"), stackData, 0644)
231231
}
232232

233-
// Helm renders an app as an Helm Chart
234-
func Helm(appname string, composeFiles []string, settingsFile []string, env map[string]string, render bool) error {
235-
appname, cleanup, err := packager.Extract(appname)
236-
if err != nil {
237-
return err
238-
}
239-
defer cleanup()
240-
targetDir := utils.AppNameFromDir(appname) + ".chart"
241-
if err := os.Mkdir(targetDir, 0755); err != nil && !os.IsExist(err) {
242-
return err
243-
}
244-
err = makeChart(appname, targetDir)
245-
if err != nil {
246-
return err
247-
}
248-
if render {
249-
return helmRender(appname, targetDir, composeFiles, settingsFile, env)
250-
}
251-
data, err := ioutil.ReadFile(filepath.Join(appname, "docker-compose.yml"))
252-
if err != nil {
253-
return err
254-
}
255-
variables, err := packager.ExtractVariables(string(data))
256-
if err != nil {
257-
return errors.Wrap(err, "failed to parse docker-compose.yml, maybe because it is a template")
258-
}
233+
//makeStack converts data into a helm template for a stack
234+
func makeStack(appname string, targetDir string, data []byte) error {
259235
parsed, err := loader.ParseYAML(data)
260236
if err != nil {
261237
return errors.Wrap(err, "failed to parse template compose")
@@ -294,10 +270,44 @@ func Helm(appname string, composeFiles []string, settingsFile []string, env map[
294270
if err != nil {
295271
return err
296272
}
297-
err = ioutil.WriteFile(filepath.Join(targetDir, "templates", "stack.yaml"), stackData, 0644)
273+
return ioutil.WriteFile(filepath.Join(targetDir, "templates", "stack.yaml"), stackData, 0644)
274+
}
275+
276+
// Helm renders an app as an Helm Chart
277+
func Helm(appname string, composeFiles []string, settingsFile []string, env map[string]string, render bool) error {
278+
appname, cleanup, err := packager.Extract(appname)
279+
if err != nil {
280+
return err
281+
}
282+
defer cleanup()
283+
targetDir := utils.AppNameFromDir(appname) + ".chart"
284+
if err := os.Mkdir(targetDir, 0755); err != nil && !os.IsExist(err) {
285+
return err
286+
}
287+
err = makeChart(appname, targetDir)
288+
if err != nil {
289+
return err
290+
}
291+
if render {
292+
return helmRender(appname, targetDir, composeFiles, settingsFile, env)
293+
}
294+
data, err := ioutil.ReadFile(filepath.Join(appname, "docker-compose.yml"))
295+
if err != nil {
296+
return err
297+
}
298+
variables, err := packager.ExtractVariables(string(data))
299+
if err != nil {
300+
return errors.Wrap(err, "failed to parse docker-compose.yml, maybe because it is a template")
301+
}
302+
err = makeStack(appname, targetDir, data)
298303
if err != nil {
299304
return err
300305
}
306+
return makeValues(appname, targetDir, settingsFile, env, variables)
307+
}
308+
309+
// makeValues updates helm values.yaml with used variables from settings and env
310+
func makeValues(appname, targetDir string, settingsFile []string, env map[string]string, variables []string) error {
301311
// merge our variables into Values.yaml
302312
sf := []string{filepath.Join(appname, "settings.yml")}
303313
sf = append(sf, settingsFile...)

0 commit comments

Comments
 (0)