From 8cc0a350e6687b806ac1e18f3eabf407316002ef Mon Sep 17 00:00:00 2001 From: decentral1se Date: Sat, 2 Oct 2021 23:00:09 +0200 Subject: [PATCH] fix: pass sample env when loading recipe Closes https://git.coopcloud.tech/coop-cloud/organising/issues/176. --- pkg/compose/compose.go | 26 ++++++++++++++++++++------ pkg/recipe/recipe.go | 4 ++-- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/pkg/compose/compose.go b/pkg/compose/compose.go index 0ad60a09a..84e09e5f2 100644 --- a/pkg/compose/compose.go +++ b/pkg/compose/compose.go @@ -3,18 +3,20 @@ package compose import ( "fmt" "io/ioutil" + "path" "path/filepath" "strings" "coopcloud.tech/abra/pkg/client/stack" loader "coopcloud.tech/abra/pkg/client/stack" + "coopcloud.tech/abra/pkg/config" composetypes "github.com/docker/cli/cli/compose/types" "github.com/docker/distribution/reference" "github.com/sirupsen/logrus" ) // UpdateTag updates an image tag in-place on file system local compose files. -func UpdateTag(pattern, image, tag string) error { +func UpdateTag(pattern, image, tag, recipeName string) error { composeFiles, err := filepath.Glob(pattern) if err != nil { return err @@ -24,8 +26,14 @@ func UpdateTag(pattern, image, tag string) error { for _, composeFile := range composeFiles { opts := stack.Deploy{Composefiles: []string{composeFile}} - emptyEnv := make(map[string]string) - compose, err := loader.LoadComposefile(opts, emptyEnv) + + envSamplePath := path.Join(config.ABRA_DIR, "apps", recipeName, ".env.sample") + sampleEnv, err := config.ReadEnv(envSamplePath) + if err != nil { + return err + } + + compose, err := loader.LoadComposefile(opts, sampleEnv) if err != nil { return err } @@ -74,7 +82,7 @@ func UpdateTag(pattern, image, tag string) error { } // UpdateLabel updates a label in-place on file system local compose files. -func UpdateLabel(pattern, serviceName, label string) error { +func UpdateLabel(pattern, serviceName, label, recipeName string) error { composeFiles, err := filepath.Glob(pattern) if err != nil { return err @@ -84,8 +92,14 @@ func UpdateLabel(pattern, serviceName, label string) error { for _, composeFile := range composeFiles { opts := stack.Deploy{Composefiles: []string{composeFile}} - emptyEnv := make(map[string]string) - compose, err := loader.LoadComposefile(opts, emptyEnv) + + envSamplePath := path.Join(config.ABRA_DIR, "apps", recipeName, ".env.sample") + sampleEnv, err := config.ReadEnv(envSamplePath) + if err != nil { + return err + } + + compose, err := loader.LoadComposefile(opts, sampleEnv) if err != nil { return err } diff --git a/pkg/recipe/recipe.go b/pkg/recipe/recipe.go index da9e4f5b3..2b4025eb3 100644 --- a/pkg/recipe/recipe.go +++ b/pkg/recipe/recipe.go @@ -26,7 +26,7 @@ type Recipe struct { // UpdateLabel updates a recipe label func (r Recipe) UpdateLabel(serviceName, label string) error { pattern := fmt.Sprintf("%s/%s/compose**yml", config.APPS_DIR, r.Name) - if err := compose.UpdateLabel(pattern, serviceName, label); err != nil { + if err := compose.UpdateLabel(pattern, serviceName, label, r.Name); err != nil { return err } return nil @@ -35,7 +35,7 @@ func (r Recipe) UpdateLabel(serviceName, label string) error { // UpdateTag updates a recipe tag func (r Recipe) UpdateTag(image, tag string) error { pattern := fmt.Sprintf("%s/%s/compose**yml", config.APPS_DIR, r.Name) - if err := compose.UpdateTag(pattern, image, tag); err != nil { + if err := compose.UpdateTag(pattern, image, tag, r.Name); err != nil { return err } return nil