From 30f06fb0537c508e929b9a6a2adba028982695a8 Mon Sep 17 00:00:00 2001 From: Timofey Kirillov Date: Mon, 31 Jan 2022 16:17:56 +0300 Subject: [PATCH] feat(images-dependencies): stapel deps configuration for dependencies stage Signed-off-by: Timofey Kirillov --- pkg/build/stage/dependencies.go | 13 +++++- pkg/build/stage/dependencies_test.go | 63 ++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/pkg/build/stage/dependencies.go b/pkg/build/stage/dependencies.go index 487cd0a108..5842b2c3c8 100644 --- a/pkg/build/stage/dependencies.go +++ b/pkg/build/stage/dependencies.go @@ -38,7 +38,18 @@ func getImports(imageBaseConfig *config.StapelImageBase, options *getImportsOpti } func getDependencies(imageBaseConfig *config.StapelImageBase, options *getImportsOptions) []*config.Dependency { - return nil // TODO(images-dependencies) + var dependencies []*config.Dependency + + for _, dep := range imageBaseConfig.Dependencies { + switch { + case dep.Before != "" && string(options.Before) == dep.Before: + dependencies = append(dependencies, dep) + case dep.After != "" && string(options.After) == dep.After: + dependencies = append(dependencies, dep) + } + } + + return dependencies } func newDependenciesStage(imports []*config.Import, dependencies []*config.Dependency, name StageName, baseStageOptions *NewBaseStageOptions) *DependenciesStage { diff --git a/pkg/build/stage/dependencies_test.go b/pkg/build/stage/dependencies_test.go index ee646b285b..32e37e02ce 100644 --- a/pkg/build/stage/dependencies_test.go +++ b/pkg/build/stage/dependencies_test.go @@ -5,6 +5,8 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + + "github.com/werf/werf/pkg/config" ) var _ = Describe("DependenciesStage", func() { @@ -200,3 +202,64 @@ var _ = Describe("DependenciesStage", func() { }), ) }) + +var _ = Describe("getDependencies helper", func() { + When("using stapel image dependencies", func() { + It("", func() { + img := &config.StapelImageBase{ + Dependencies: []*config.Dependency{ + { + ImageName: "one", + Before: "setup", + }, + { + ImageName: "two", + Before: "setup", + }, + { + ImageName: "three", + Before: "install", + }, + { + ImageName: "four", + After: "install", + }, + { + ImageName: "five", + After: "install", + }, + { + ImageName: "six", + After: "setup", + }, + }, + } + + { + deps := getDependencies(img, &getImportsOptions{Before: "install"}) + Expect(len(deps)).To(Equal(1)) + Expect(deps[0].ImageName).To(Equal("three")) + } + + { + deps := getDependencies(img, &getImportsOptions{After: "install"}) + Expect(len(deps)).To(Equal(2)) + Expect(deps[0].ImageName).To(Equal("four")) + Expect(deps[1].ImageName).To(Equal("five")) + } + + { + deps := getDependencies(img, &getImportsOptions{Before: "setup"}) + Expect(len(deps)).To(Equal(2)) + Expect(deps[0].ImageName).To(Equal("one")) + Expect(deps[1].ImageName).To(Equal("two")) + } + + { + deps := getDependencies(img, &getImportsOptions{After: "setup"}) + Expect(len(deps)).To(Equal(1)) + Expect(deps[0].ImageName).To(Equal("six")) + } + }) + }) +})