From fc3742212cfea57f119e2b488125f29813ba99a2 Mon Sep 17 00:00:00 2001 From: cellarspoon Date: Tue, 21 Dec 2021 01:48:37 +0100 Subject: [PATCH] fix: more reliable syncing --- cli/recipe/sync.go | 19 +------------------ pkg/compose/compose.go | 7 +++++++ pkg/recipe/recipe.go | 6 +++--- 3 files changed, 11 insertions(+), 21 deletions(-) diff --git a/cli/recipe/sync.go b/cli/recipe/sync.go index f1f532c5..6caf4b6c 100644 --- a/cli/recipe/sync.go +++ b/cli/recipe/sync.go @@ -177,28 +177,11 @@ will know that things are likely to change. } mainService := "app" - var services []string - hasAppService := false - for _, service := range recipe.Config.Services { - services = append(services, service.Name) - if service.Name == "app" { - hasAppService = true - logrus.Debugf("detected app service in %s", recipe.Name) - } - } - - if !hasAppService { - logrus.Fatalf("%s has no main app service?", recipe.Name) - } - - logrus.Debugf("selecting %s as the service to sync version label", mainService) - label := fmt.Sprintf("coop-cloud.${STACK_NAME}.version=%s", nextTag) if !internal.Dry { - if err := recipe.UpdateLabel(mainService, label); err != nil { + if err := recipe.UpdateLabel("compose.y*ml", mainService, label); err != nil { logrus.Fatal(err) } - logrus.Infof("synced label %s to service %s", label, mainService) } else { logrus.Infof("dry run: not syncing label %s for recipe %s", nextTag, recipe.Name) } diff --git a/pkg/compose/compose.go b/pkg/compose/compose.go index 7433e1a3..27c8d278 100644 --- a/pkg/compose/compose.go +++ b/pkg/compose/compose.go @@ -130,11 +130,18 @@ func UpdateLabel(pattern, serviceName, label, recipeName string) error { old := fmt.Sprintf("coop-cloud.${STACK_NAME}.version=%s", value) replacedBytes := strings.Replace(string(bytes), old, label, -1) + if old == label { + logrus.Warnf("%s is already set, nothing to do?", label) + return nil + } + logrus.Debugf("updating %s to %s in %s", old, label, compose.Filename) if err := ioutil.WriteFile(compose.Filename, []byte(replacedBytes), 0644); err != nil { return err } + + logrus.Infof("synced label %s to service %s", label, serviceName) } } diff --git a/pkg/recipe/recipe.go b/pkg/recipe/recipe.go index e0769b5f..76d88aa1 100644 --- a/pkg/recipe/recipe.go +++ b/pkg/recipe/recipe.go @@ -25,9 +25,9 @@ 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, r.Name); err != nil { +func (r Recipe) UpdateLabel(pattern, serviceName, label string) error { + fullPattern := fmt.Sprintf("%s/%s/%s", config.APPS_DIR, r.Name, pattern) + if err := compose.UpdateLabel(fullPattern, serviceName, label, r.Name); err != nil { return err } return nil