@@ -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