diff --git a/cmd/cleanup.go b/cmd/cleanup.go index 0a11d7ee..f9ea1fbe 100644 --- a/cmd/cleanup.go +++ b/cmd/cleanup.go @@ -22,7 +22,7 @@ import ( . "github.com/mudler/luet/pkg/config" config "github.com/mudler/luet/pkg/config" - "github.com/mudler/luet/pkg/helpers" + fileHelper "github.com/mudler/luet/pkg/helpers/file" . "github.com/mudler/luet/pkg/logger" "github.com/spf13/cobra" @@ -47,7 +47,7 @@ var cleanupCmd = &cobra.Command{ LuetCfg.System.DatabasePath = dbpath LuetCfg.System.Rootfs = rootfs // Check if cache dir exists - if helpers.Exists(LuetCfg.GetSystem().GetSystemPkgsCacheDirPath()) { + if fileHelper.Exists(LuetCfg.GetSystem().GetSystemPkgsCacheDirPath()) { files, err := ioutil.ReadDir(LuetCfg.GetSystem().GetSystemPkgsCacheDirPath()) if err != nil { diff --git a/cmd/root.go b/cmd/root.go index 016dcaea..79d85f3b 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -25,6 +25,7 @@ import ( "github.com/marcsauter/single" bus "github.com/mudler/luet/pkg/bus" + fileHelper "github.com/mudler/luet/pkg/helpers/file" extensions "github.com/mudler/cobra-extensions" config "github.com/mudler/luet/pkg/config" @@ -252,7 +253,7 @@ func initConfig() { } homeDir := helpers.GetHomeDir() - if helpers.Exists(filepath.Join(pwdDir, ".luet.yaml")) || (homeDir != "" && helpers.Exists(filepath.Join(homeDir, ".luet.yaml"))) { + if fileHelper.Exists(filepath.Join(pwdDir, ".luet.yaml")) || (homeDir != "" && fileHelper.Exists(filepath.Join(homeDir, ".luet.yaml"))) { viper.AddConfigPath(".") if homeDir != "" { viper.AddConfigPath(homeDir) diff --git a/cmd/util/unpack.go b/cmd/util/unpack.go index 5addc31f..0293483b 100644 --- a/cmd/util/unpack.go +++ b/cmd/util/unpack.go @@ -23,7 +23,7 @@ import ( "github.com/docker/docker/api/types" "github.com/docker/go-units" "github.com/mudler/luet/pkg/config" - "github.com/mudler/luet/pkg/helpers" + "github.com/mudler/luet/pkg/helpers/docker" . "github.com/mudler/luet/pkg/logger" "github.com/spf13/cobra" @@ -77,7 +77,7 @@ func NewUnpackCommand() *cobra.Command { RegistryToken: registryToken, } - info, err := helpers.DownloadAndExtractDockerImage(temp, image, destination, auth, verify) + info, err := docker.DownloadAndExtractDockerImage(temp, image, destination, auth, verify) if err != nil { Error(err.Error()) os.Exit(1) diff --git a/pkg/box/exec.go b/pkg/box/exec.go index 39ad183f..ac96694c 100644 --- a/pkg/box/exec.go +++ b/pkg/box/exec.go @@ -23,9 +23,9 @@ import ( "strings" "syscall" - "github.com/pkg/errors" + fileHelper "github.com/mudler/luet/pkg/helpers/file" - helpers "github.com/mudler/luet/pkg/helpers" + "github.com/pkg/errors" ) type Box interface { @@ -107,7 +107,7 @@ func (b *DefaultBox) Exec() error { func (b *DefaultBox) Run() error { - if !helpers.Exists(b.Root) { + if !fileHelper.Exists(b.Root) { return errors.New(b.Root + " does not exist") } diff --git a/pkg/bus/events.go b/pkg/bus/events.go index 868a7556..5c8f2d81 100644 --- a/pkg/bus/events.go +++ b/pkg/bus/events.go @@ -1,9 +1,8 @@ package bus import ( - . "github.com/mudler/luet/pkg/logger" - "github.com/mudler/go-pluggable" + "github.com/sirupsen/logrus" ) var ( @@ -46,6 +45,13 @@ var ( EventRepositoryPreBuild pluggable.EventType = "repository.pre.build" // EventRepositoryPostBuild is the event fired after a repository was built EventRepositoryPostBuild pluggable.EventType = "repository.post.build" + + // Image unpack + + // EventImagePreUnPack is the event fired before unpacking an image to a local dir + EventImagePreUnPack pluggable.EventType = "image.pre.unpack" + // EventImagePostUnPack is the event fired after unpacking an image to a local dir + EventImagePostUnPack pluggable.EventType = "image.post.unpack" ) // Manager is the bus instance manager, which subscribes plugins to events emitted by Luet @@ -66,6 +72,8 @@ var Manager *Bus = &Bus{ EventImagePostBuild, EventImagePostPull, EventImagePostPush, + EventImagePreUnPack, + EventImagePostUnPack, }, ), } @@ -80,9 +88,9 @@ func (b *Bus) Initialize(plugin ...string) { for _, e := range b.Manager.Events { b.Manager.Response(e, func(p *pluggable.Plugin, r *pluggable.EventResponse) { if r.Errored() { - Fatal("Plugin", p.Name, "at", p.Executable, "Error", r.Error) + logrus.Fatal("Plugin", p.Name, "at", p.Executable, "Error", r.Error) } - Debug( + logrus.Debug( "plugin_event", "received from", p.Name, diff --git a/pkg/compiler/backend/simpledocker.go b/pkg/compiler/backend/simpledocker.go index e5c292dd..193ceaf1 100644 --- a/pkg/compiler/backend/simpledocker.go +++ b/pkg/compiler/backend/simpledocker.go @@ -24,6 +24,7 @@ import ( "strings" bus "github.com/mudler/luet/pkg/bus" + fileHelper "github.com/mudler/luet/pkg/helpers/file" capi "github.com/mudler/docker-companion/api" @@ -237,7 +238,7 @@ func (b *SimpleDocker) ExtractRootfs(opts Options, keepPerms bool) error { return errors.Wrap(err, "Error met while unpacking rootfs") } - manifest, err := helpers.Read(filepath.Join(rootfs, "manifest.json")) + manifest, err := fileHelper.Read(filepath.Join(rootfs, "manifest.json")) if err != nil { return errors.Wrap(err, "Error met while reading image manifest") } diff --git a/pkg/compiler/backend/simpledocker_test.go b/pkg/compiler/backend/simpledocker_test.go index f7369427..ff9ececb 100644 --- a/pkg/compiler/backend/simpledocker_test.go +++ b/pkg/compiler/backend/simpledocker_test.go @@ -21,12 +21,12 @@ import ( "github.com/mudler/luet/pkg/compiler/backend" . "github.com/mudler/luet/pkg/compiler/backend" "github.com/mudler/luet/pkg/compiler/types/artifact" + fileHelper "github.com/mudler/luet/pkg/helpers/file" "io/ioutil" "os" "path/filepath" - helpers "github.com/mudler/luet/pkg/helpers" pkg "github.com/mudler/luet/pkg/package" "github.com/mudler/luet/pkg/tree" . "github.com/onsi/ginkgo" @@ -60,7 +60,7 @@ var _ = Describe("Docker backend", func() { err = lspec.WriteBuildImageDefinition(filepath.Join(tmpdir, "Dockerfile")) Expect(err).ToNot(HaveOccurred()) - dockerfile, err := helpers.Read(filepath.Join(tmpdir, "Dockerfile")) + dockerfile, err := fileHelper.Read(filepath.Join(tmpdir, "Dockerfile")) Expect(err).ToNot(HaveOccurred()) Expect(dockerfile).To(Equal(` FROM alpine @@ -79,11 +79,11 @@ ENV PACKAGE_CATEGORY=app-admin`)) Expect(b.BuildImage(opts)).ToNot(HaveOccurred()) Expect(b.ExportImage(opts)).ToNot(HaveOccurred()) - Expect(helpers.Exists(filepath.Join(tmpdir2, "output1.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(tmpdir2, "output1.tar"))).To(BeTrue()) err = lspec.WriteStepImageDefinition(lspec.Image, filepath.Join(tmpdir, "LuetDockerfile")) Expect(err).ToNot(HaveOccurred()) - dockerfile, err = helpers.Read(filepath.Join(tmpdir, "LuetDockerfile")) + dockerfile, err = fileHelper.Read(filepath.Join(tmpdir, "LuetDockerfile")) Expect(err).ToNot(HaveOccurred()) Expect(dockerfile).To(Equal(` FROM luet/base @@ -103,7 +103,7 @@ RUN echo bar > /test2`)) Expect(b.BuildImage(opts2)).ToNot(HaveOccurred()) Expect(b.ExportImage(opts2)).ToNot(HaveOccurred()) - Expect(helpers.Exists(filepath.Join(tmpdir, "output2.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(tmpdir, "output2.tar"))).To(BeTrue()) artifacts := []artifact.ArtifactNode{{ Name: "/luetbuild/LuetDockerfile", @@ -132,7 +132,7 @@ RUN echo bar > /test2`)) } Expect(b.ImageDefinitionToTar(opts2)).ToNot(HaveOccurred()) - Expect(helpers.Exists(filepath.Join(tmpdir, "output3.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(tmpdir, "output3.tar"))).To(BeTrue()) Expect(b.ImageExists(opts2.ImageName)).To(BeFalse()) }) diff --git a/pkg/compiler/compiler.go b/pkg/compiler/compiler.go index df56c700..9e4d0c5f 100644 --- a/pkg/compiler/compiler.go +++ b/pkg/compiler/compiler.go @@ -36,6 +36,7 @@ import ( "github.com/mudler/luet/pkg/compiler/types/options" compilerspec "github.com/mudler/luet/pkg/compiler/types/spec" "github.com/mudler/luet/pkg/helpers" + fileHelper "github.com/mudler/luet/pkg/helpers/file" . "github.com/mudler/luet/pkg/logger" pkg "github.com/mudler/luet/pkg/package" "github.com/mudler/luet/pkg/solver" @@ -319,7 +320,7 @@ func (cs *LuetCompiler) buildPackageImage(image, buildertaggedImage, packageImag defer os.RemoveAll(buildDir) // clean up // First we copy the source definitions into the output - we create a copy which the builds will need (we need to cache this phase somehow) - err = helpers.CopyDir(p.GetPackage().GetPath(), buildDir) + err = fileHelper.CopyDir(p.GetPackage().GetPath(), buildDir) if err != nil { return builderOpts, runnerOpts, errors.Wrap(err, "Could not copy package sources") } @@ -1173,7 +1174,7 @@ func (cs *LuetCompiler) templatePackage(vals []map[string]interface{}, pack pkg. if err != nil { return nil, errors.Wrap(err, "while marshalling values file") } - f := filepath.Join(valuesdir, helpers.RandStringRunes(20)) + f := filepath.Join(valuesdir, fileHelper.RandStringRunes(20)) if err := ioutil.WriteFile(f, out, os.ModePerm); err != nil { return nil, errors.Wrap(err, "while writing temporary values file") } diff --git a/pkg/compiler/compiler_test.go b/pkg/compiler/compiler_test.go index 2228c3ce..e6a9b4c1 100644 --- a/pkg/compiler/compiler_test.go +++ b/pkg/compiler/compiler_test.go @@ -25,6 +25,7 @@ import ( "github.com/mudler/luet/pkg/compiler/types/options" compilerspec "github.com/mudler/luet/pkg/compiler/types/spec" helpers "github.com/mudler/luet/pkg/helpers" + fileHelper "github.com/mudler/luet/pkg/helpers/file" pkg "github.com/mudler/luet/pkg/package" "github.com/mudler/luet/pkg/tree" . "github.com/onsi/ginkgo" @@ -59,15 +60,15 @@ var _ = Describe("Compiler", func() { artifact, err := compiler.Compile(false, spec) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).To(BeTrue()) - content1, err := helpers.Read(spec.Rel("test5")) + content1, err := fileHelper.Read(spec.Rel("test5")) Expect(err).ToNot(HaveOccurred()) - content2, err := helpers.Read(spec.Rel("test6")) + content2, err := fileHelper.Read(spec.Rel("test6")) Expect(err).ToNot(HaveOccurred()) Expect(content1).To(Equal("artifact5\n")) Expect(content2).To(Equal("artifact6\n")) @@ -99,11 +100,11 @@ var _ = Describe("Compiler", func() { artifact, err := compiler.Compile(false, spec) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("result"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("bina/busybox"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("result"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("bina/busybox"))).To(BeTrue()) }) It("Compiles it correctly with Join", func() { @@ -129,11 +130,11 @@ var _ = Describe("Compiler", func() { artifact, err := compiler.Compile(false, spec) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("newc"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test4"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test3"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("newc"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test4"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test3"))).To(BeTrue()) }) }) @@ -164,7 +165,7 @@ var _ = Describe("Compiler", func() { artifacts, errs := compiler.CompileParallel(false, compilerspec.NewLuetCompilationspecs(spec, spec2)) Expect(errs).To(BeNil()) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } @@ -227,23 +228,23 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts)).To(Equal(3)) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } - Expect(helpers.Exists(spec.Rel("test3"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test4"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test3"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test4"))).To(BeTrue()) - content1, err := helpers.Read(spec.Rel("c")) + content1, err := fileHelper.Read(spec.Rel("c")) Expect(err).ToNot(HaveOccurred()) - content2, err := helpers.Read(spec.Rel("cd")) + content2, err := fileHelper.Read(spec.Rel("cd")) Expect(err).ToNot(HaveOccurred()) Expect(content1).To(Equal("c\n")) Expect(content2).To(Equal("c\n")) - content1, err = helpers.Read(spec.Rel("d")) + content1, err = fileHelper.Read(spec.Rel("d")) Expect(err).ToNot(HaveOccurred()) - content2, err = helpers.Read(spec.Rel("dd")) + content2, err = fileHelper.Read(spec.Rel("dd")) Expect(err).ToNot(HaveOccurred()) Expect(content1).To(Equal("s\n")) Expect(content2).To(Equal("dd\n")) @@ -277,17 +278,17 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts2)).To(Equal(1)) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } for _, artifact := range artifacts2 { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } - Expect(helpers.Exists(spec.Rel("etc/hosts"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test1"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("etc/hosts"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test1"))).To(BeTrue()) }) It("Compiles and includes ony wanted files", func() { @@ -316,12 +317,12 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts)).To(Equal(1)) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("marvin"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("marvin"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).ToNot(BeTrue()) }) It("Compiles and excludes files", func() { @@ -350,13 +351,13 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts)).To(Equal(1)) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("marvin"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("marvot"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("marvin"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("marvot"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).To(BeTrue()) }) It("Compiles includes and excludes files", func() { @@ -385,13 +386,13 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts)).To(Equal(1)) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("marvin"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("marvot"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("marvin"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("marvot"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).ToNot(BeTrue()) }) It("Compiles and excludes ony wanted files also from unpacked packages", func() { @@ -419,12 +420,12 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts)).To(Equal(1)) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } - Expect(helpers.Exists(spec.Rel("marvin"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("marvin"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).To(BeTrue()) }) It("Compiles includes and excludes ony wanted files also from unpacked packages", func() { @@ -452,12 +453,12 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts)).To(Equal(1)) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } - Expect(helpers.Exists(spec.Rel("marvin"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("marvin"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).To(BeTrue()) }) It("Compiles and includes ony wanted files also from unpacked packages", func() { @@ -485,16 +486,16 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts)).To(Equal(1)) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } - Expect(helpers.Exists(spec.Rel("var/lib/udhcpd"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("marvin"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test5"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel("test"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel("test2"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel("lib/firmware"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("var/lib/udhcpd"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("marvin"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test2"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("lib/firmware"))).ToNot(BeTrue()) }) It("Compiles a more complex tree", func() { @@ -523,18 +524,18 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts)).To(Equal(1)) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } Expect(helpers.Untar(spec.Rel("extra-layer-0.1.package.tar"), tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("extra-layer"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("extra-layer"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("usr/bin/pkgs-checker"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("base-layer-0.1.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("base-layer-0.1.metadata.yaml"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("extra-layer-0.1.metadata.yaml"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("extra-layer-0.1.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("usr/bin/pkgs-checker"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("base-layer-0.1.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("base-layer-0.1.metadata.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("extra-layer-0.1.metadata.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("extra-layer-0.1.package.tar"))).To(BeTrue()) }) It("Compiles with provides support", func() { @@ -564,19 +565,19 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts[0].Dependencies)).To(Equal(1)) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } Expect(helpers.Untar(spec.Rel("c-test-1.0.package.tar"), tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("d"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("dd"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("c"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("cd"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("d"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("dd"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("c"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("cd"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("d-test-1.0.metadata.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("d-test-1.0.metadata.yaml"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("c-test-1.0.metadata.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("c-test-1.0.metadata.yaml"))).To(BeTrue()) }) It("Compiles with provides and selectors support", func() { @@ -607,19 +608,19 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts[0].Dependencies)).To(Equal(1)) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } Expect(helpers.Untar(spec.Rel("c-test-1.0.package.tar"), tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("d"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("dd"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("c"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("cd"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("d"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("dd"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("c"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("cd"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("d-test-1.0.metadata.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("d-test-1.0.metadata.yaml"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("c-test-1.0.metadata.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("c-test-1.0.metadata.yaml"))).To(BeTrue()) }) It("Compiles revdeps", func() { generalRecipe := tree.NewCompilerRecipe(pkg.NewInMemoryDatabase(false)) @@ -647,16 +648,16 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts)).To(Equal(2)) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } Expect(helpers.Untar(spec.Rel("extra-layer-0.1.package.tar"), tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("extra-layer"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("extra-layer"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("usr/bin/pkgs-checker"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("base-layer-0.1.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("extra-layer-0.1.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("usr/bin/pkgs-checker"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("base-layer-0.1.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("extra-layer-0.1.package.tar"))).To(BeTrue()) }) It("Compiles complex dependencies trees with best matches", func() { @@ -685,17 +686,17 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts)).To(Equal(1)) Expect(len(artifacts[0].Dependencies)).To(Equal(6)) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } Expect(helpers.Untar(spec.Rel("vhba-sys-fs-5.4.2-20190410.package.tar"), tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("sabayon-build-portage-layer-0.20191126.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("build-layer-0.1.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("build-sabayon-overlay-layer-0.20191212.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("build-sabayon-overlays-layer-0.1.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("linux-sabayon-sys-kernel-5.4.2.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("sabayon-sources-sys-kernel-5.4.2.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("vhba"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("sabayon-build-portage-layer-0.20191126.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("build-layer-0.1.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("build-sabayon-overlay-layer-0.20191212.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("build-sabayon-overlays-layer-0.1.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("linux-sabayon-sys-kernel-5.4.2.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("sabayon-sources-sys-kernel-5.4.2.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("vhba"))).To(BeTrue()) }) It("Compiles revdeps with seeds", func() { @@ -720,31 +721,31 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts)).To(Equal(4)) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) } // A deps on B, so A artifacts are here: - Expect(helpers.Exists(spec.Rel("test3"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test4"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test3"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test4"))).To(BeTrue()) // B - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("artifact42"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("artifact42"))).To(BeTrue()) // C depends on B, so B is here - content1, err := helpers.Read(spec.Rel("c")) + content1, err := fileHelper.Read(spec.Rel("c")) Expect(err).ToNot(HaveOccurred()) - content2, err := helpers.Read(spec.Rel("cd")) + content2, err := fileHelper.Read(spec.Rel("cd")) Expect(err).ToNot(HaveOccurred()) Expect(content1).To(Equal("c\n")) Expect(content2).To(Equal("c\n")) // D is here as it requires C, and C was recompiled - content1, err = helpers.Read(spec.Rel("d")) + content1, err = fileHelper.Read(spec.Rel("d")) Expect(err).ToNot(HaveOccurred()) - content2, err = helpers.Read(spec.Rel("dd")) + content2, err = fileHelper.Read(spec.Rel("dd")) Expect(err).ToNot(HaveOccurred()) Expect(content1).To(Equal("s\n")) Expect(content2).To(Equal("dd\n")) @@ -777,19 +778,19 @@ var _ = Describe("Compiler", func() { artifacts, errs := compiler.CompileParallel(false, compilerspec.NewLuetCompilationspecs(spec)) Expect(errs).To(BeNil()) for _, artifact := range artifacts { - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) for _, d := range artifact.Dependencies { - Expect(helpers.Exists(d.Path)).To(BeTrue()) + Expect(fileHelper.Exists(d.Path)).To(BeTrue()) Expect(helpers.Untar(d.Path, tmpdir, false)).ToNot(HaveOccurred()) } } - Expect(helpers.Exists(spec.Rel("test3"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test4"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test3"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test4"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).To(BeTrue()) }) }) @@ -821,8 +822,8 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts)).To(Equal(1)) Expect(len(artifacts[0].Dependencies)).To(Equal(1)) Expect(helpers.Untar(spec.Rel("runtime-layer-0.1.package.tar"), tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("bin/busybox"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("var"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("bin/busybox"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("var"))).ToNot(BeTrue()) }) }) @@ -869,13 +870,13 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts[0].Dependencies)).To(Equal(0)) Expect(helpers.Untar(spec.Rel("dironly-test-1.0.package.tar"), tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("test1"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test2"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test1"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test2"))).To(BeTrue()) Expect(helpers.Untar(spec2.Rel("dironly_filter-test-1.0.package.tar"), tmpdir2, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec2.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec2.Rel("test6"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec2.Rel("artifact42"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec2.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec2.Rel("test6"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec2.Rel("artifact42"))).ToNot(BeTrue()) }) }) @@ -905,12 +906,12 @@ var _ = Describe("Compiler", func() { Expect(errs).To(BeNil()) Expect(len(artifacts)).To(Equal(1)) Expect(len(artifacts[0].Dependencies)).To(Equal(1)) - Expect(helpers.Exists(spec.Rel("runtime-layer-0.1.package.tar.gz"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("runtime-layer-0.1.package.tar"))).To(BeFalse()) + Expect(fileHelper.Exists(spec.Rel("runtime-layer-0.1.package.tar.gz"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("runtime-layer-0.1.package.tar"))).To(BeFalse()) Expect(artifacts[0].Unpack(tmpdir, false)).ToNot(HaveOccurred()) // Expect(helpers.Untar(spec.Rel("runtime-layer-0.1.package.tar"), tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("bin/busybox"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("var"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("bin/busybox"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("var"))).ToNot(BeTrue()) }) }) @@ -961,7 +962,7 @@ var _ = Describe("Compiler", func() { Expect(len(artifacts[0].Dependencies)).To(Equal(1)) Expect(artifacts[0].Files).To(ContainElement("bin/busybox")) - Expect(helpers.Exists(spec.Rel("runtime-layer-0.1.metadata.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("runtime-layer-0.1.metadata.yaml"))).To(BeTrue()) art, err := LoadArtifactFromYaml(spec) Expect(err).ToNot(HaveOccurred()) diff --git a/pkg/compiler/types/artifact/artifact.go b/pkg/compiler/types/artifact/artifact.go index 87c991e8..b6534f78 100644 --- a/pkg/compiler/types/artifact/artifact.go +++ b/pkg/compiler/types/artifact/artifact.go @@ -42,6 +42,7 @@ import ( compilerspec "github.com/mudler/luet/pkg/compiler/types/spec" . "github.com/mudler/luet/pkg/config" "github.com/mudler/luet/pkg/helpers" + fileHelper "github.com/mudler/luet/pkg/helpers/file" . "github.com/mudler/luet/pkg/logger" pkg "github.com/mudler/luet/pkg/package" "github.com/mudler/luet/pkg/solver" @@ -168,7 +169,7 @@ func CreateArtifactForFile(s string, opts ...func(*PackageArtifact)) (*PackageAr } defer os.RemoveAll(archive) // clean up dst := filepath.Join(archive, fileName) - if err := helpers.CopyFile(s, dst); err != nil { + if err := fileHelper.CopyFile(s, dst); err != nil { return nil, errors.Wrapf(err, "error while copying %s to %s", s, dst) } @@ -209,7 +210,7 @@ func (a *PackageArtifact) GenerateFinalImage(imageName string, b ImageBuilder, k return builderOpts, errors.Wrap(err, "error met while uncompressing artifact "+a.Path) } - empty, err := helpers.DirectoryIsEmpty(uncompressedFiles) + empty, err := fileHelper.DirectoryIsEmpty(uncompressedFiles) if err != nil { return builderOpts, errors.Wrap(err, "error met while checking if directory is empty "+uncompressedFiles) } @@ -218,7 +219,7 @@ func (a *PackageArtifact) GenerateFinalImage(imageName string, b ImageBuilder, k // We can't generate FROM scratch empty images. Docker will refuse to export them // workaround: Inject a .virtual empty file if empty { - helpers.Touch(filepath.Join(uncompressedFiles, ".virtual")) + fileHelper.Touch(filepath.Join(uncompressedFiles, ".virtual")) } data := a.genDockerfile() @@ -401,12 +402,12 @@ func tarModifierWrapperFunc(dst, path string, header *tar.Header, content io.Rea // We want to protect file only if the hash of the files are differing OR the file size are differs := (existingHash != "" && existingHash != tarHash) || (err != nil && f != nil && header.Size != f.Size()) // Check if exists - if helpers.Exists(destPath) && differs { + if fileHelper.Exists(destPath) && differs { for i := 1; i < 1000; i++ { name := filepath.Join(filepath.Join(filepath.Dir(path), fmt.Sprintf("._cfg%04d_%s", i, filepath.Base(path)))) - if helpers.Exists(name) { + if fileHelper.Exists(name) { continue } Info(fmt.Sprintf("Found protected file %s. Creating %s.", destPath, @@ -628,7 +629,7 @@ func worker(i int, wg *sync.WaitGroup, s <-chan CopyJob) { _, err := os.Lstat(job.Dst) if err != nil { Debug("Copying ", job.Src) - if err := helpers.DeepCopyFile(job.Src, job.Dst); err != nil { + if err := fileHelper.DeepCopyFile(job.Src, job.Dst); err != nil { Warning("Error copying", job, err) } } diff --git a/pkg/compiler/types/artifact/artifact_test.go b/pkg/compiler/types/artifact/artifact_test.go index bad41472..4139d83d 100644 --- a/pkg/compiler/types/artifact/artifact_test.go +++ b/pkg/compiler/types/artifact/artifact_test.go @@ -29,6 +29,7 @@ import ( . "github.com/mudler/luet/pkg/compiler" helpers "github.com/mudler/luet/pkg/helpers" + fileHelper "github.com/mudler/luet/pkg/helpers/file" pkg "github.com/mudler/luet/pkg/package" "github.com/mudler/luet/pkg/tree" . "github.com/onsi/ginkgo" @@ -71,7 +72,7 @@ var _ = Describe("Artifact", func() { err = lspec.WriteBuildImageDefinition(filepath.Join(tmpdir, "Dockerfile")) Expect(err).ToNot(HaveOccurred()) - dockerfile, err := helpers.Read(filepath.Join(tmpdir, "Dockerfile")) + dockerfile, err := fileHelper.Read(filepath.Join(tmpdir, "Dockerfile")) Expect(err).ToNot(HaveOccurred()) Expect(dockerfile).To(Equal(` FROM alpine @@ -89,12 +90,12 @@ ENV PACKAGE_CATEGORY=app-admin`)) } Expect(b.BuildImage(opts)).ToNot(HaveOccurred()) Expect(b.ExportImage(opts)).ToNot(HaveOccurred()) - Expect(helpers.Exists(filepath.Join(tmpdir2, "output1.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(tmpdir2, "output1.tar"))).To(BeTrue()) Expect(b.BuildImage(opts)).ToNot(HaveOccurred()) err = lspec.WriteStepImageDefinition(lspec.Image, filepath.Join(tmpdir, "LuetDockerfile")) Expect(err).ToNot(HaveOccurred()) - dockerfile, err = helpers.Read(filepath.Join(tmpdir, "LuetDockerfile")) + dockerfile, err = fileHelper.Read(filepath.Join(tmpdir, "LuetDockerfile")) Expect(err).ToNot(HaveOccurred()) Expect(dockerfile).To(Equal(` FROM luet/base @@ -113,7 +114,7 @@ RUN echo bar > /test2`)) } Expect(b.BuildImage(opts2)).ToNot(HaveOccurred()) Expect(b.ExportImage(opts2)).ToNot(HaveOccurred()) - Expect(helpers.Exists(filepath.Join(tmpdir, "output2.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(tmpdir, "output2.tar"))).To(BeTrue()) diffs, err := compiler.GenerateChanges(b, opts, opts2) Expect(err).ToNot(HaveOccurred()) @@ -140,15 +141,15 @@ RUN echo bar > /test2`)) a, err := ExtractArtifactFromDelta(rootfs, filepath.Join(tmpdir, "package.tar"), diffs, 2, false, []string{}, []string{}, compression.None) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(filepath.Join(tmpdir, "package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(tmpdir, "package.tar"))).To(BeTrue()) err = helpers.Untar(a.Path, unpacked, false) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(filepath.Join(unpacked, "test"))).To(BeTrue()) - Expect(helpers.Exists(filepath.Join(unpacked, "test2"))).To(BeTrue()) - content1, err := helpers.Read(filepath.Join(unpacked, "test")) + Expect(fileHelper.Exists(filepath.Join(unpacked, "test"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(unpacked, "test2"))).To(BeTrue()) + content1, err := fileHelper.Read(filepath.Join(unpacked, "test")) Expect(err).ToNot(HaveOccurred()) Expect(content1).To(Equal("foo\n")) - content2, err := helpers.Read(filepath.Join(unpacked, "test2")) + content2, err := fileHelper.Read(filepath.Join(unpacked, "test2")) Expect(err).ToNot(HaveOccurred()) Expect(content2).To(Equal("bar\n")) @@ -156,7 +157,7 @@ RUN echo bar > /test2`)) Expect(err).ToNot(HaveOccurred()) err = a.Verify() Expect(err).ToNot(HaveOccurred()) - Expect(helpers.CopyFile(filepath.Join(tmpdir, "output2.tar"), filepath.Join(tmpdir, "package.tar"))).ToNot(HaveOccurred()) + Expect(fileHelper.CopyFile(filepath.Join(tmpdir, "output2.tar"), filepath.Join(tmpdir, "package.tar"))).ToNot(HaveOccurred()) err = a.Verify() Expect(err).To(HaveOccurred()) @@ -244,7 +245,7 @@ RUN echo bar > /test2`)) err = b.ExtractRootfs(backend.Options{ImageName: resultingImage, Destination: result}, false) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.DirectoryIsEmpty(result)).To(BeFalse()) + Expect(fileHelper.DirectoryIsEmpty(result)).To(BeFalse()) content, err := ioutil.ReadFile(filepath.Join(result, ".virtual")) Expect(err).ToNot(HaveOccurred()) diff --git a/pkg/compiler/types/spec/spec_test.go b/pkg/compiler/types/spec/spec_test.go index 526ef4d5..cb3c8cfc 100644 --- a/pkg/compiler/types/spec/spec_test.go +++ b/pkg/compiler/types/spec/spec_test.go @@ -22,9 +22,9 @@ import ( options "github.com/mudler/luet/pkg/compiler/types/options" compilerspec "github.com/mudler/luet/pkg/compiler/types/spec" + fileHelper "github.com/mudler/luet/pkg/helpers/file" . "github.com/mudler/luet/pkg/compiler" - helpers "github.com/mudler/luet/pkg/helpers" pkg "github.com/mudler/luet/pkg/package" "github.com/mudler/luet/pkg/tree" . "github.com/onsi/ginkgo" @@ -154,7 +154,7 @@ var _ = Describe("Spec", func() { lspec.Env = []string{"test=1"} err = lspec.WriteBuildImageDefinition(filepath.Join(tmpdir, "Dockerfile")) Expect(err).ToNot(HaveOccurred()) - dockerfile, err := helpers.Read(filepath.Join(tmpdir, "Dockerfile")) + dockerfile, err := fileHelper.Read(filepath.Join(tmpdir, "Dockerfile")) Expect(err).ToNot(HaveOccurred()) Expect(dockerfile).To(Equal(` FROM alpine @@ -167,7 +167,7 @@ ENV test=1`)) err = lspec.WriteStepImageDefinition(lspec.Image, filepath.Join(tmpdir, "Dockerfile")) Expect(err).ToNot(HaveOccurred()) - dockerfile, err = helpers.Read(filepath.Join(tmpdir, "Dockerfile")) + dockerfile, err = fileHelper.Read(filepath.Join(tmpdir, "Dockerfile")) Expect(err).ToNot(HaveOccurred()) Expect(dockerfile).To(Equal(` FROM luet/base @@ -205,7 +205,7 @@ RUN echo bar > /test2`)) err = lspec.WriteBuildImageDefinition(filepath.Join(tmpdir, "Dockerfile")) Expect(err).ToNot(HaveOccurred()) - dockerfile, err := helpers.Read(filepath.Join(tmpdir, "Dockerfile")) + dockerfile, err := fileHelper.Read(filepath.Join(tmpdir, "Dockerfile")) Expect(err).ToNot(HaveOccurred()) Expect(dockerfile).To(Equal(` FROM alpine @@ -222,7 +222,7 @@ ENV test=1`)) err = lspec.WriteBuildImageDefinition(filepath.Join(tmpdir, "Dockerfile")) Expect(err).ToNot(HaveOccurred()) - dockerfile, err = helpers.Read(filepath.Join(tmpdir, "Dockerfile")) + dockerfile, err = fileHelper.Read(filepath.Join(tmpdir, "Dockerfile")) Expect(err).ToNot(HaveOccurred()) Expect(dockerfile).To(Equal(` FROM alpine @@ -237,7 +237,7 @@ ENV test=1`)) err = lspec.WriteStepImageDefinition(lspec.Image, filepath.Join(tmpdir, "Dockerfile")) Expect(err).ToNot(HaveOccurred()) - dockerfile, err = helpers.Read(filepath.Join(tmpdir, "Dockerfile")) + dockerfile, err = fileHelper.Read(filepath.Join(tmpdir, "Dockerfile")) Expect(err).ToNot(HaveOccurred()) Expect(dockerfile).To(Equal(` diff --git a/pkg/config/config.go b/pkg/config/config.go index 211ab95c..d47d6fac 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -27,7 +27,6 @@ import ( "strings" "time" - "github.com/mudler/luet/pkg/helpers" pkg "github.com/mudler/luet/pkg/package" solver "github.com/mudler/luet/pkg/solver" @@ -406,8 +405,13 @@ system: } func (c *LuetSystemConfig) InitTmpDir() error { - if !helpers.Exists(c.TmpDirBase) { - return os.MkdirAll(c.TmpDirBase, os.ModePerm) + if _, err := os.Stat(c.TmpDirBase); err != nil { + if os.IsNotExist(err) { + err = os.MkdirAll(c.TmpDirBase, os.ModePerm) + if err != nil { + return err + } + } } return nil } diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index b3f2bf05..9ca41ebe 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -22,7 +22,7 @@ import ( "strings" config "github.com/mudler/luet/pkg/config" - "github.com/mudler/luet/pkg/helpers" + fileHelper "github.com/mudler/luet/pkg/helpers/file" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -38,7 +38,7 @@ var _ = Describe("Config", func() { tmpDir, err := config.LuetCfg.GetSystem().TempDir("test1") Expect(err).ToNot(HaveOccurred()) Expect(strings.HasPrefix(tmpDir, filepath.Join(os.TempDir(), "tmpluet"))).To(BeTrue()) - Expect(helpers.Exists(tmpDir)).To(BeTrue()) + Expect(fileHelper.Exists(tmpDir)).To(BeTrue()) defer os.RemoveAll(tmpDir) }) @@ -49,7 +49,7 @@ var _ = Describe("Config", func() { tmpFile, err := config.LuetCfg.GetSystem().TempFile("testfile1") Expect(err).ToNot(HaveOccurred()) Expect(strings.HasPrefix(tmpFile.Name(), filepath.Join(os.TempDir(), "tmpluet"))).To(BeTrue()) - Expect(helpers.Exists(tmpFile.Name())).To(BeTrue()) + Expect(fileHelper.Exists(tmpFile.Name())).To(BeTrue()) defer os.Remove(tmpFile.Name()) }) diff --git a/pkg/helpers/archive_test.go b/pkg/helpers/archive_test.go index e2b9fd33..491f2a36 100644 --- a/pkg/helpers/archive_test.go +++ b/pkg/helpers/archive_test.go @@ -25,6 +25,8 @@ import ( "os" "path/filepath" + fileHelper "github.com/mudler/luet/pkg/helpers/file" + "github.com/docker/docker/pkg/archive" . "github.com/mudler/luet/pkg/helpers" . "github.com/onsi/ginkgo" @@ -128,7 +130,7 @@ var _ = Describe("Helpers Archive", func() { err = archive.Untar(replacerArchive, targetDir, opts) Expect(err).ToNot(HaveOccurred()) - Expect(Exists(filepath.Join(targetDir, "._cfg0001_file-0"))).Should(Equal(true)) + Expect(fileHelper.Exists(filepath.Join(targetDir, "._cfg0001_file-0"))).Should(Equal(true)) }) }) }) diff --git a/pkg/helpers/docker.go b/pkg/helpers/docker/docker.go similarity index 99% rename from pkg/helpers/docker.go rename to pkg/helpers/docker/docker.go index 813541e0..1e655304 100644 --- a/pkg/helpers/docker.go +++ b/pkg/helpers/docker/docker.go @@ -13,7 +13,7 @@ // You should have received a copy of the GNU General Public License along // with this program; if not, see . -package helpers +package docker import ( "context" @@ -21,11 +21,12 @@ import ( "os" "strings" + "github.com/mudler/luet/pkg/helpers/imgworker" + "github.com/docker/cli/cli/trust" "github.com/docker/distribution/reference" "github.com/docker/docker/api/types" "github.com/docker/docker/registry" - "github.com/mudler/luet/pkg/helpers/imgworker" "github.com/opencontainers/go-digest" "github.com/pkg/errors" "github.com/theupdateframework/notary/tuf/data" diff --git a/pkg/helpers/docker_test.go b/pkg/helpers/docker/docker_test.go similarity index 86% rename from pkg/helpers/docker_test.go rename to pkg/helpers/docker/docker_test.go index 56f8bbc2..09265224 100644 --- a/pkg/helpers/docker_test.go +++ b/pkg/helpers/docker/docker_test.go @@ -13,10 +13,10 @@ // You should have received a copy of the GNU General Public License along // with this program; if not, see . -package helpers_test +package docker_test import ( - . "github.com/mudler/luet/pkg/helpers" + "github.com/mudler/luet/pkg/helpers/docker" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) @@ -24,7 +24,7 @@ import ( var _ = Describe("StripInvalidStringsFromImage", func() { Context("Image names", func() { It("strips invalid chars", func() { - Expect(StripInvalidStringsFromImage("foo+bar")).To(Equal("foo-bar")) + Expect(docker.StripInvalidStringsFromImage("foo+bar")).To(Equal("foo-bar")) }) }) }) diff --git a/pkg/helpers/file.go b/pkg/helpers/file/file.go similarity index 99% rename from pkg/helpers/file.go rename to pkg/helpers/file/file.go index 7a64f292..5c3af522 100644 --- a/pkg/helpers/file.go +++ b/pkg/helpers/file/file.go @@ -13,7 +13,7 @@ // You should have received a copy of the GNU General Public License along // with this program; if not, see . -package helpers +package file import ( "fmt" diff --git a/pkg/helpers/file_test.go b/pkg/helpers/file/file_test.go similarity index 81% rename from pkg/helpers/file_test.go rename to pkg/helpers/file/file_test.go index 8e3366c5..050ab15e 100644 --- a/pkg/helpers/file_test.go +++ b/pkg/helpers/file/file_test.go @@ -13,14 +13,15 @@ // You should have received a copy of the GNU General Public License along // with this program; if not, see . -package helpers_test +package file_test import ( "io/ioutil" "os" "path/filepath" - . "github.com/mudler/luet/pkg/helpers" + fileHelper "github.com/mudler/luet/pkg/helpers/file" + . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) @@ -28,8 +29,8 @@ import ( var _ = Describe("Helpers", func() { Context("Exists", func() { It("Detect existing and not-existing files", func() { - Expect(Exists("../../tests/fixtures/buildtree/app-admin/enman/1.4.0/build.yaml")).To(BeTrue()) - Expect(Exists("../../tests/fixtures/buildtree/app-admin/enman/1.4.0/build.yaml.not.exists")).To(BeFalse()) + Expect(fileHelper.Exists("../../tests/fixtures/buildtree/app-admin/enman/1.4.0/build.yaml")).To(BeTrue()) + Expect(fileHelper.Exists("../../tests/fixtures/buildtree/app-admin/enman/1.4.0/build.yaml.not.exists")).To(BeFalse()) }) }) @@ -38,15 +39,15 @@ var _ = Describe("Helpers", func() { testDir, err := ioutil.TempDir(os.TempDir(), "test") Expect(err).ToNot(HaveOccurred()) defer os.RemoveAll(testDir) - Expect(DirectoryIsEmpty(testDir)).To(BeTrue()) + Expect(fileHelper.DirectoryIsEmpty(testDir)).To(BeTrue()) }) It("Detects directory with files", func() { testDir, err := ioutil.TempDir(os.TempDir(), "test") Expect(err).ToNot(HaveOccurred()) defer os.RemoveAll(testDir) - err = Touch(filepath.Join(testDir, "foo")) + err = fileHelper.Touch(filepath.Join(testDir, "foo")) Expect(err).ToNot(HaveOccurred()) - Expect(DirectoryIsEmpty(testDir)).To(BeFalse()) + Expect(fileHelper.DirectoryIsEmpty(testDir)).To(BeFalse()) }) }) @@ -72,7 +73,7 @@ var _ = Describe("Helpers", func() { err = ioutil.WriteFile(filepath.Join(testDir, "baz2", "foo"), []byte("test\n"), 0644) Expect(err).ToNot(HaveOccurred()) - ordered, notExisting := OrderFiles(testDir, []string{"bar", "baz", "bar/foo", "baz2", "foo", "baz2/foo", "notexisting"}) + ordered, notExisting := fileHelper.OrderFiles(testDir, []string{"bar", "baz", "bar/foo", "baz2", "foo", "baz2/foo", "notexisting"}) Expect(ordered).To(Equal([]string{"baz", "bar/foo", "foo", "baz2/foo", "bar", "baz2"})) Expect(notExisting).To(Equal([]string{"notexisting"})) @@ -96,7 +97,7 @@ var _ = Describe("Helpers", func() { err = os.MkdirAll(filepath.Join(testDir, "foo", "baz", "fa"), os.ModePerm) Expect(err).ToNot(HaveOccurred()) - ordered, _ := OrderFiles(testDir, []string{"foo", "foo/bar", "bar", "foo/baz/fa", "foo/baz"}) + ordered, _ := fileHelper.OrderFiles(testDir, []string{"foo", "foo/bar", "bar", "foo/baz/fa", "foo/baz"}) Expect(ordered).To(Equal([]string{"foo/baz/fa", "foo/bar", "foo/baz", "foo", "bar"})) }) }) diff --git a/pkg/helpers/helm.go b/pkg/helpers/helm.go index d89fc85b..bb345613 100644 --- a/pkg/helpers/helm.go +++ b/pkg/helpers/helm.go @@ -3,6 +3,8 @@ package helpers import ( "io/ioutil" + fileHelper "github.com/mudler/luet/pkg/helpers/file" + "github.com/imdario/mergo" "github.com/pkg/errors" "gopkg.in/yaml.v2" @@ -75,7 +77,7 @@ func RenderFiles(toTemplate, valuesFile string, defaultFile ...string) (string, return "", errors.Wrap(err, "reading file "+toTemplate) } - if !Exists(valuesFile) { + if !fileHelper.Exists(valuesFile) { return "", errors.Wrap(err, "file not existing "+valuesFile) } val, err := ioutil.ReadFile(valuesFile) diff --git a/pkg/helpers/imgworker/unpack.go b/pkg/helpers/imgworker/unpack.go index 6197b63c..bd4cbf86 100644 --- a/pkg/helpers/imgworker/unpack.go +++ b/pkg/helpers/imgworker/unpack.go @@ -5,6 +5,7 @@ package imgworker import ( "errors" "fmt" + "github.com/mudler/luet/pkg/bus" "os" "github.com/containerd/containerd/content" @@ -18,6 +19,12 @@ import ( // TODO: this requires root permissions to mount/unmount layers, althrought it shouldn't be required. // See how backends are unpacking images without asking for root permissions. +// UnpackEventData is the data structure to pass for the bus events +type UnpackEventData struct { + Image string + Dest string +} + // Unpack exports an image to a rootfs destination directory. func (c *Client) Unpack(image, dest string) error { @@ -59,6 +66,8 @@ func (c *Client) Unpack(image, dest string) error { return fmt.Errorf("getting image manifest failed: %v", err) } + _,_ = bus.Manager.Publish(bus.EventImagePreUnPack, UnpackEventData{Image: image, Dest: dest}) + for _, desc := range manifest.Layers { logrus.Debugf("Unpacking layer %s", desc.Digest.String()) @@ -78,5 +87,7 @@ func (c *Client) Unpack(image, dest string) error { } } + _, _ = bus.Manager.Publish(bus.EventImagePostUnPack, UnpackEventData{Image: image, Dest: dest}) + return nil } diff --git a/pkg/helpers/match.go b/pkg/helpers/match/match.go similarity index 98% rename from pkg/helpers/match.go rename to pkg/helpers/match/match.go index 502c447d..bb932b82 100644 --- a/pkg/helpers/match.go +++ b/pkg/helpers/match/match.go @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License along // with this program; if not, see . -package helpers +package match import ( "reflect" diff --git a/pkg/installer/client/docker.go b/pkg/installer/client/docker.go index 6d34d9d1..58e05516 100644 --- a/pkg/installer/client/docker.go +++ b/pkg/installer/client/docker.go @@ -28,7 +28,8 @@ import ( "github.com/mudler/luet/pkg/compiler/types/artifact" "github.com/mudler/luet/pkg/config" - "github.com/mudler/luet/pkg/helpers" + "github.com/mudler/luet/pkg/helpers/docker" + fileHelper "github.com/mudler/luet/pkg/helpers/file" "github.com/mudler/luet/pkg/helpers/imgworker" . "github.com/mudler/luet/pkg/logger" ) @@ -64,7 +65,7 @@ func (c *DockerClient) DownloadArtifact(a *artifact.PackageArtifact) (*artifact. artifactName := path.Base(a.Path) cacheFile := filepath.Join(config.LuetCfg.GetSystem().GetSystemPkgsCacheDirPath(), artifactName) Debug("Cache file", cacheFile) - if err := helpers.EnsureDir(cacheFile); err != nil { + if err := fileHelper.EnsureDir(cacheFile); err != nil { return nil, errors.Wrapf(err, "could not create cache folder %s for %s", config.LuetCfg.GetSystem().GetSystemPkgsCacheDirPath(), cacheFile) } ok := false @@ -77,7 +78,7 @@ func (c *DockerClient) DownloadArtifact(a *artifact.PackageArtifact) (*artifact. // is done in such cases (see repository.go) // Check if file is already in cache - if helpers.Exists(cacheFile) { + if fileHelper.Exists(cacheFile) { Debug("Cache hit for artifact", artifactName) resultingArtifact = a resultingArtifact.Path = cacheFile @@ -102,7 +103,7 @@ func (c *DockerClient) DownloadArtifact(a *artifact.PackageArtifact) (*artifact. } // imageName := fmt.Sprintf("%s/%s", uri, artifact.GetCompileSpec().GetPackage().GetPackageImageName()) - info, err := helpers.DownloadAndExtractDockerImage(contentstore, imageName, temp, c.auth, c.RepoData.Verify) + info, err := docker.DownloadAndExtractDockerImage(contentstore, imageName, temp, c.auth, c.RepoData.Verify) if err != nil { Warning(fmt.Sprintf(errImageDownloadMsg, imageName, err.Error())) continue @@ -161,10 +162,10 @@ func (c *DockerClient) DownloadFile(name string) (string, error) { continue } - imageName := fmt.Sprintf("%s:%s", uri, helpers.StripInvalidStringsFromImage(name)) + imageName := fmt.Sprintf("%s:%s", uri, docker.StripInvalidStringsFromImage(name)) Info("Downloading", imageName) - info, err = helpers.DownloadAndExtractDockerImage(contentstore, imageName, temp, c.auth, c.RepoData.Verify) + info, err = docker.DownloadAndExtractDockerImage(contentstore, imageName, temp, c.auth, c.RepoData.Verify) if err != nil { Warning(fmt.Sprintf(errImageDownloadMsg, imageName, err.Error())) continue @@ -174,7 +175,7 @@ func (c *DockerClient) DownloadFile(name string) (string, error) { Info(fmt.Sprintf("Size: %s", units.BytesSize(float64(info.ContentSize)))) Debug("\nCopying file ", filepath.Join(temp, name), "to", file.Name()) - err = helpers.CopyFile(filepath.Join(temp, name), file.Name()) + err = fileHelper.CopyFile(filepath.Join(temp, name), file.Name()) if err != nil { continue } diff --git a/pkg/installer/client/docker_test.go b/pkg/installer/client/docker_test.go index 0a2f8b30..6b0e0c2c 100644 --- a/pkg/installer/client/docker_test.go +++ b/pkg/installer/client/docker_test.go @@ -22,8 +22,8 @@ import ( "github.com/mudler/luet/pkg/compiler/types/artifact" compilerspec "github.com/mudler/luet/pkg/compiler/types/spec" + fileHelper "github.com/mudler/luet/pkg/helpers/file" - helpers "github.com/mudler/luet/pkg/helpers" pkg "github.com/mudler/luet/pkg/package" . "github.com/mudler/luet/pkg/installer/client" @@ -32,7 +32,7 @@ import ( ) // This test expect that the repository defined in UNIT_TEST_DOCKER_IMAGE is in zstd format. -// the repository is built by the 01_simple_docker.sh integration test file. +// the repository is built by the 01_simple_docker.sh integration test fileHelper. // This test also require root. At the moment, unpacking docker images with 'img' requires root permission to // mount/unmount layers. var _ = Describe("Docker client", func() { @@ -51,7 +51,7 @@ var _ = Describe("Docker client", func() { It("Downloads single files", func() { f, err := c.DownloadFile("repository.yaml") Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Read(f)).To(ContainSubstring("Test Repo")) + Expect(fileHelper.Read(f)).To(ContainSubstring("Test Repo")) os.RemoveAll(f) }) @@ -71,8 +71,8 @@ var _ = Describe("Docker client", func() { Expect(err).ToNot(HaveOccurred()) defer os.RemoveAll(tmpdir) // clean up Expect(f.Unpack(tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Read(filepath.Join(tmpdir, "c"))).To(Equal("c\n")) - Expect(helpers.Read(filepath.Join(tmpdir, "cd"))).To(Equal("c\n")) + Expect(fileHelper.Read(filepath.Join(tmpdir, "c"))).To(Equal("c\n")) + Expect(fileHelper.Read(filepath.Join(tmpdir, "cd"))).To(Equal("c\n")) os.RemoveAll(f.Path) }) }) diff --git a/pkg/installer/client/http.go b/pkg/installer/client/http.go index 0f79f084..4f66bd95 100644 --- a/pkg/installer/client/http.go +++ b/pkg/installer/client/http.go @@ -25,12 +25,11 @@ import ( "time" "github.com/mudler/luet/pkg/compiler/types/artifact" + fileHelper "github.com/mudler/luet/pkg/helpers/file" . "github.com/mudler/luet/pkg/logger" - "github.com/mudler/luet/pkg/config" - "github.com/mudler/luet/pkg/helpers" - "github.com/cavaliercoder/grab" + "github.com/mudler/luet/pkg/config" "github.com/schollz/progressbar/v3" ) @@ -77,7 +76,7 @@ func (c *HttpClient) DownloadArtifact(a *artifact.PackageArtifact) (*artifact.Pa ok := false // Check if file is already in cache - if helpers.Exists(cacheFile) { + if fileHelper.Exists(cacheFile) { Debug("Use artifact", artifactName, "from cache.") } else { @@ -156,7 +155,7 @@ func (c *HttpClient) DownloadArtifact(a *artifact.PackageArtifact) (*artifact.Pa fmt.Sprintf("%.2f", (float64(resp.BytesPerSecond())/1024)/1024), "MiB/s )") Debug("\nCopying file ", filepath.Join(temp, artifactName), "to", cacheFile) - err = helpers.CopyFile(filepath.Join(temp, artifactName), cacheFile) + err = fileHelper.CopyFile(filepath.Join(temp, artifactName), cacheFile) bar.Finish() ok = true @@ -218,7 +217,7 @@ func (c *HttpClient) DownloadFile(name string) (string, error) { fmt.Sprintf("%.2f", (float64(resp.BytesComplete())/1000)/1000), "MB (", fmt.Sprintf("%.2f", (float64(resp.BytesPerSecond())/1024)/1024), "MiB/s )") - err = helpers.CopyFile(filepath.Join(temp, name), file.Name()) + err = fileHelper.CopyFile(filepath.Join(temp, name), file.Name()) if err != nil { continue } diff --git a/pkg/installer/client/http_test.go b/pkg/installer/client/http_test.go index 5dc92a2c..ee8ecfc2 100644 --- a/pkg/installer/client/http_test.go +++ b/pkg/installer/client/http_test.go @@ -23,8 +23,7 @@ import ( "path/filepath" "github.com/mudler/luet/pkg/compiler/types/artifact" - helpers "github.com/mudler/luet/pkg/helpers" - + fileHelper "github.com/mudler/luet/pkg/helpers/file" . "github.com/mudler/luet/pkg/installer/client" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -47,7 +46,7 @@ var _ = Describe("Http client", func() { c := NewHttpClient(RepoData{Urls: []string{ts.URL}}) path, err := c.DownloadFile("test.txt") Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Read(path)).To(Equal("test")) + Expect(fileHelper.Read(path)).To(Equal("test")) os.RemoveAll(path) }) @@ -65,7 +64,7 @@ var _ = Describe("Http client", func() { c := NewHttpClient(RepoData{Urls: []string{ts.URL}}) path, err := c.DownloadArtifact(&artifact.PackageArtifact{Path: "test.txt"}) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Read(path.Path)).To(Equal("test")) + Expect(fileHelper.Read(path.Path)).To(Equal("test")) os.RemoveAll(path.Path) }) diff --git a/pkg/installer/client/local.go b/pkg/installer/client/local.go index 200e4701..ce6c29d8 100644 --- a/pkg/installer/client/local.go +++ b/pkg/installer/client/local.go @@ -22,9 +22,8 @@ import ( "github.com/mudler/luet/pkg/compiler/types/artifact" "github.com/mudler/luet/pkg/config" + fileHelper "github.com/mudler/luet/pkg/helpers/file" . "github.com/mudler/luet/pkg/logger" - - "github.com/mudler/luet/pkg/helpers" ) type LocalClient struct { @@ -50,7 +49,7 @@ func (c *LocalClient) DownloadArtifact(a *artifact.PackageArtifact) (*artifact.P } // Check if file is already in cache - if helpers.Exists(cacheFile) { + if fileHelper.Exists(cacheFile) { Debug("Use artifact", artifactName, "from cache.") } else { ok := false @@ -61,7 +60,7 @@ func (c *LocalClient) DownloadArtifact(a *artifact.PackageArtifact) (*artifact.P Info("Downloading artifact", artifactName, "from", uri) //defer os.Remove(file.Name()) - err = helpers.CopyFile(filepath.Join(uri, artifactName), cacheFile) + err = fileHelper.CopyFile(filepath.Join(uri, artifactName), cacheFile) if err != nil { continue } @@ -104,7 +103,7 @@ func (c *LocalClient) DownloadFile(name string) (string, error) { } //defer os.Remove(file.Name()) - err = helpers.CopyFile(filepath.Join(uri, name), file.Name()) + err = fileHelper.CopyFile(filepath.Join(uri, name), file.Name()) if err != nil { continue } diff --git a/pkg/installer/client/local_test.go b/pkg/installer/client/local_test.go index 83fc9422..de9cb19e 100644 --- a/pkg/installer/client/local_test.go +++ b/pkg/installer/client/local_test.go @@ -21,8 +21,7 @@ import ( "path/filepath" "github.com/mudler/luet/pkg/compiler/types/artifact" - helpers "github.com/mudler/luet/pkg/helpers" - + fileHelper "github.com/mudler/luet/pkg/helpers/file" . "github.com/mudler/luet/pkg/installer/client" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -42,7 +41,7 @@ var _ = Describe("Local client", func() { c := NewLocalClient(RepoData{Urls: []string{tmpdir}}) path, err := c.DownloadFile("test.txt") Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Read(path)).To(Equal("test")) + Expect(fileHelper.Read(path)).To(Equal("test")) os.RemoveAll(path) }) @@ -58,7 +57,7 @@ var _ = Describe("Local client", func() { c := NewLocalClient(RepoData{Urls: []string{tmpdir}}) path, err := c.DownloadArtifact(&artifact.PackageArtifact{Path: "test.txt"}) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Read(path.Path)).To(Equal("test")) + Expect(fileHelper.Read(path.Path)).To(Equal("test")) os.RemoveAll(path.Path) }) diff --git a/pkg/installer/installer.go b/pkg/installer/installer.go index 4f3c69b9..b4bc8fce 100644 --- a/pkg/installer/installer.go +++ b/pkg/installer/installer.go @@ -24,16 +24,16 @@ import ( "strings" "sync" - artifact "github.com/mudler/luet/pkg/compiler/types/artifact" - - . "github.com/logrusorgru/aurora" "github.com/mudler/luet/pkg/bus" + artifact "github.com/mudler/luet/pkg/compiler/types/artifact" "github.com/mudler/luet/pkg/config" - "github.com/mudler/luet/pkg/helpers" + fileHelper "github.com/mudler/luet/pkg/helpers/file" + "github.com/mudler/luet/pkg/helpers/match" . "github.com/mudler/luet/pkg/logger" pkg "github.com/mudler/luet/pkg/package" "github.com/mudler/luet/pkg/solver" + . "github.com/logrusorgru/aurora" "github.com/pkg/errors" ) @@ -597,7 +597,7 @@ func (l *LuetInstaller) Reclaim(s *System) error { "from", repo.GetName(), "is installed") FILES: for _, f := range artefact.Files { - if helpers.Exists(filepath.Join(s.Target, f)) { + if fileHelper.Exists(filepath.Join(s.Target, f)) { p, err := repo.GetTree().GetDatabase().FindPackage(artefact.CompileSpec.GetPackage()) if err != nil { return err @@ -915,7 +915,7 @@ func pruneEmptyFilePath(path string) { currentPath = filepath.Join(currentPath, p) allPaths = append(allPaths, currentPath) } - helpers.ReverseAny(allPaths) + match.ReverseAny(allPaths) for _, p := range allPaths { checkAndPrunePath(p) } @@ -943,7 +943,7 @@ func (l *LuetInstaller) uninstall(p pkg.Package, s *System) error { cp.Map(files) } - toRemove, notPresent := helpers.OrderFiles(s.Target, files) + toRemove, notPresent := fileHelper.OrderFiles(s.Target, files) // Remove from target for _, f := range toRemove { diff --git a/pkg/installer/installer_test.go b/pkg/installer/installer_test.go index 4a33de28..63324466 100644 --- a/pkg/installer/installer_test.go +++ b/pkg/installer/installer_test.go @@ -27,6 +27,7 @@ import ( "github.com/mudler/luet/pkg/compiler/types/options" compilerspec "github.com/mudler/luet/pkg/compiler/types/spec" "github.com/mudler/luet/pkg/helpers" + fileHelper "github.com/mudler/luet/pkg/helpers/file" . "github.com/mudler/luet/pkg/installer" pkg "github.com/mudler/luet/pkg/package" @@ -84,34 +85,34 @@ var _ = Describe("Installer", func() { a, err := c.Compile(false, spec) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(a.Path)).To(BeTrue()) + Expect(fileHelper.Exists(a.Path)).To(BeTrue()) Expect(helpers.Untar(a.Path, tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).To(BeTrue()) - content1, err := helpers.Read(spec.Rel("test5")) + content1, err := fileHelper.Read(spec.Rel("test5")) Expect(err).ToNot(HaveOccurred()) - content2, err := helpers.Read(spec.Rel("test6")) + content2, err := fileHelper.Read(spec.Rel("test6")) Expect(err).ToNot(HaveOccurred()) Expect(content1).To(Equal("artifact5\n")) Expect(content2).To(Equal("artifact6\n")) - Expect(helpers.Exists(spec.Rel("b-test-1.0.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("b-test-1.0.metadata.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.0.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.0.metadata.yaml"))).To(BeTrue()) repo, err := stubRepo(tmpdir, "../../tests/fixtures/buildable") Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) err = repo.Write(tmpdir, false, false) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) Expect(repo.GetUrls()[0]).To(Equal(tmpdir)) Expect(repo.GetType()).To(Equal("disk")) @@ -136,8 +137,8 @@ urls: err = inst.Install([]pkg.Package{&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}}, system) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).To(BeTrue()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).To(BeTrue()) _, err = systemDB.FindPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) Expect(err).ToNot(HaveOccurred()) @@ -154,8 +155,8 @@ urls: Expect(err).ToNot(HaveOccurred()) // Nothing should be there anymore (files, packagedb entry) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).ToNot(BeTrue()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).ToNot(BeTrue()) _, err = systemDB.FindPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) Expect(err).To(HaveOccurred()) @@ -199,21 +200,21 @@ urls: artifact, err := c.Compile(false, spec) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).To(BeTrue()) - content1, err := helpers.Read(spec.Rel("test5")) + content1, err := fileHelper.Read(spec.Rel("test5")) Expect(err).ToNot(HaveOccurred()) - content2, err := helpers.Read(spec.Rel("test6")) + content2, err := fileHelper.Read(spec.Rel("test6")) Expect(err).ToNot(HaveOccurred()) Expect(content1).To(Equal("artifact5\n")) Expect(content2).To(Equal("artifact6\n")) - Expect(helpers.Exists(spec.Rel("b-test-1.0.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("b-test-1.0.metadata.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.0.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.0.metadata.yaml"))).To(BeTrue()) repo, err := stubRepo(tmpdir, "../../tests/fixtures/buildable") Expect(err).ToNot(HaveOccurred()) @@ -223,15 +224,15 @@ urls: repo.SetRepositoryFile(REPOFILE_TREE_KEY, treeFile) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) err = repo.Write(tmpdir, false, false) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) Expect(repo.GetUrls()[0]).To(Equal(tmpdir)) Expect(repo.GetType()).To(Equal("disk")) @@ -256,8 +257,8 @@ urls: err = inst.Install([]pkg.Package{&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}}, system) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).To(BeTrue()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).To(BeTrue()) _, err = systemDB.FindPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) Expect(err).ToNot(HaveOccurred()) @@ -274,8 +275,8 @@ urls: Expect(err).ToNot(HaveOccurred()) // Nothing should be there anymore (files, packagedb entry) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).ToNot(BeTrue()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).ToNot(BeTrue()) _, err = systemDB.FindPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) Expect(err).To(HaveOccurred()) @@ -319,21 +320,21 @@ urls: artifact, err := c.Compile(false, spec) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).To(BeTrue()) - content1, err := helpers.Read(spec.Rel("test5")) + content1, err := fileHelper.Read(spec.Rel("test5")) Expect(err).ToNot(HaveOccurred()) - content2, err := helpers.Read(spec.Rel("test6")) + content2, err := fileHelper.Read(spec.Rel("test6")) Expect(err).ToNot(HaveOccurred()) Expect(content1).To(Equal("artifact5\n")) Expect(content2).To(Equal("artifact6\n")) - Expect(helpers.Exists(spec.Rel("b-test-1.0.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("b-test-1.0.metadata.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.0.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.0.metadata.yaml"))).To(BeTrue()) repo, err := GenerateRepository( "test", @@ -345,15 +346,15 @@ urls: pkg.NewInMemoryDatabase(false), nil, "", false, false, false, nil) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) err = repo.Write(tmpdir, false, false) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) Expect(repo.GetUrls()[0]).To(Equal(tmpdir)) Expect(repo.GetType()).To(Equal("disk")) @@ -383,8 +384,8 @@ urls: err = inst.Install([]pkg.Package{&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}}, system) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).To(BeTrue()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).To(BeTrue()) _, err = systemDB.FindPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) Expect(err).ToNot(HaveOccurred()) @@ -401,8 +402,8 @@ urls: Expect(err).ToNot(HaveOccurred()) // Nothing should be there anymore (files, packagedb entry) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).ToNot(BeTrue()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).ToNot(BeTrue()) _, err = system.Database.GetPackageFiles(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) Expect(err).To(HaveOccurred()) @@ -444,21 +445,21 @@ urls: artifact, err := c.Compile(false, spec) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).To(BeTrue()) - content1, err := helpers.Read(spec.Rel("test5")) + content1, err := fileHelper.Read(spec.Rel("test5")) Expect(err).ToNot(HaveOccurred()) - content2, err := helpers.Read(spec.Rel("test6")) + content2, err := fileHelper.Read(spec.Rel("test6")) Expect(err).ToNot(HaveOccurred()) Expect(content1).To(Equal("artifact5\n")) Expect(content2).To(Equal("artifact6\n")) - Expect(helpers.Exists(spec.Rel("b-test-1.0.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("b-test-1.0.metadata.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.0.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.0.metadata.yaml"))).To(BeTrue()) repo, err := GenerateRepository( "test", @@ -471,15 +472,15 @@ urls: pkg.NewInMemoryDatabase(false), nil, "", false, false, false, nil) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) err = repo.Write(tmpdir, false, false) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) Expect(repo.GetUrls()[0]).To(Equal(tmpdir)) Expect(repo.GetType()).To(Equal("disk")) @@ -531,7 +532,7 @@ urls: artifact, err = c.Compile(false, spec) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) repo, err = stubRepo(tmpdir2, "../../tests/fixtures/alpine") Expect(err).ToNot(HaveOccurred()) @@ -604,15 +605,15 @@ urls: repo, err := stubRepo(tmpdir, "../../tests/fixtures/upgrade") Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) err = repo.Write(tmpdir, false, false) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) Expect(repo.GetUrls()[0]).To(Equal(tmpdir)) Expect(repo.GetType()).To(Equal("disk")) @@ -642,8 +643,8 @@ urls: err = inst.Install([]pkg.Package{&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}}, system) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).To(BeTrue()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).To(BeTrue()) _, err = systemDB.FindPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) Expect(err).ToNot(HaveOccurred()) @@ -660,11 +661,11 @@ urls: Expect(err).ToNot(HaveOccurred()) // Nothing should be there anymore (files, packagedb entry) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).ToNot(BeTrue()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).ToNot(BeTrue()) // New version - new files - Expect(helpers.Exists(filepath.Join(fakeroot, "newc"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "newc"))).To(BeTrue()) _, err = system.Database.GetPackageFiles(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) Expect(err).To(HaveOccurred()) _, err = system.Database.FindPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) @@ -729,9 +730,9 @@ urls: repo, err := stubRepo(tmpdir, "../../tests/fixtures/upgrade_old_repo") Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) err = repo.Write(tmpdir, false, false) Expect(err).ToNot(HaveOccurred()) @@ -774,8 +775,8 @@ urls: err = inst.Install([]pkg.Package{&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}}, system) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).To(BeTrue()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).To(BeTrue()) _, err = systemDB.FindPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) Expect(err).ToNot(HaveOccurred()) @@ -793,11 +794,11 @@ urls: Expect(err).ToNot(HaveOccurred()) // Nothing should be there anymore (files, packagedb entry) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).ToNot(BeTrue()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).ToNot(BeTrue()) // New version - new files - Expect(helpers.Exists(filepath.Join(fakeroot, "newc"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "newc"))).To(BeTrue()) _, err = system.Database.GetPackageFiles(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) Expect(err).To(HaveOccurred()) _, err = system.Database.FindPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) @@ -856,17 +857,17 @@ urls: repo, err := stubRepo(tmpdir, "../../tests/fixtures/upgrade") Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) err = repo.Write(tmpdir, false, false) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("b-test-1.1.package.tar.gz"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("b-test-1.1.package.tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.1.package.tar.gz"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.1.package.tar"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) Expect(repo.GetUrls()[0]).To(Equal(tmpdir)) Expect(repo.GetType()).To(Equal("disk")) @@ -896,8 +897,8 @@ urls: err = inst.Install([]pkg.Package{&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}}, system) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).To(BeTrue()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).To(BeTrue()) _, err = systemDB.FindPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) Expect(err).ToNot(HaveOccurred()) @@ -914,11 +915,11 @@ urls: Expect(err).ToNot(HaveOccurred()) // Nothing should be there anymore (files, packagedb entry) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).ToNot(BeTrue()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).ToNot(BeTrue()) // New version - new files - Expect(helpers.Exists(filepath.Join(fakeroot, "newc"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "newc"))).To(BeTrue()) _, err = system.Database.GetPackageFiles(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) Expect(err).To(HaveOccurred()) _, err = system.Database.FindPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) @@ -1014,17 +1015,17 @@ urls: repo, err := stubRepo(tmpdir, "../../tests/fixtures/upgrade") Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) err = repo.Write(tmpdir, false, false) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("b-test-1.1.package.tar.gz"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("b-test-1.1.package.tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.1.package.tar.gz"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.1.package.tar"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) Expect(repo.GetUrls()[0]).To(Equal(tmpdir)) Expect(repo.GetType()).To(Equal("disk")) @@ -1059,13 +1060,13 @@ urls: Expect(err).To(HaveOccurred()) Expect(len(system.Database.World())).To(Equal(0)) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).To(BeFalse()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).To(BeFalse()) - Expect(helpers.Exists(filepath.Join(fakeroot, "c"))).To(BeFalse()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).To(BeFalse()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).To(BeFalse()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "c"))).To(BeFalse()) - Expect(helpers.Touch(filepath.Join(fakeroot, "test5"))).ToNot(HaveOccurred()) - Expect(helpers.Touch(filepath.Join(fakeroot, "test6"))).ToNot(HaveOccurred()) - Expect(helpers.Touch(filepath.Join(fakeroot, "c"))).ToNot(HaveOccurred()) + Expect(fileHelper.Touch(filepath.Join(fakeroot, "test5"))).ToNot(HaveOccurred()) + Expect(fileHelper.Touch(filepath.Join(fakeroot, "test6"))).ToNot(HaveOccurred()) + Expect(fileHelper.Touch(filepath.Join(fakeroot, "c"))).ToNot(HaveOccurred()) err = inst.Reclaim(system) Expect(err).ToNot(HaveOccurred()) @@ -1115,15 +1116,15 @@ urls: repo, err := stubRepo(tmpdir, "../../tests/fixtures/upgrade_old_repo") Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) err = repo.Write(tmpdir, false, false) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("repository.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) Expect(repo.GetUrls()[0]).To(Equal(tmpdir)) Expect(repo.GetType()).To(Equal("disk")) @@ -1158,13 +1159,13 @@ urls: Expect(err).To(HaveOccurred()) Expect(len(system.Database.World())).To(Equal(0)) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).To(BeFalse()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).To(BeFalse()) - Expect(helpers.Exists(filepath.Join(fakeroot, "c"))).To(BeFalse()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).To(BeFalse()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).To(BeFalse()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "c"))).To(BeFalse()) - Expect(helpers.Touch(filepath.Join(fakeroot, "test5"))).ToNot(HaveOccurred()) - Expect(helpers.Touch(filepath.Join(fakeroot, "test6"))).ToNot(HaveOccurred()) - Expect(helpers.Touch(filepath.Join(fakeroot, "c"))).ToNot(HaveOccurred()) + Expect(fileHelper.Touch(filepath.Join(fakeroot, "test5"))).ToNot(HaveOccurred()) + Expect(fileHelper.Touch(filepath.Join(fakeroot, "test6"))).ToNot(HaveOccurred()) + Expect(fileHelper.Touch(filepath.Join(fakeroot, "c"))).ToNot(HaveOccurred()) err = inst.Reclaim(system) Expect(err).ToNot(HaveOccurred()) @@ -1218,11 +1219,11 @@ urls: Expect(err).ToNot(HaveOccurred()) // Nothing should be there anymore (files, packagedb entry) - Expect(helpers.Exists(filepath.Join(fakeroot, "test5"))).ToNot(BeTrue()) - Expect(helpers.Exists(filepath.Join(fakeroot, "test6"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test5"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "test6"))).ToNot(BeTrue()) // New version - new files - Expect(helpers.Exists(filepath.Join(fakeroot, "newc"))).To(BeTrue()) + Expect(fileHelper.Exists(filepath.Join(fakeroot, "newc"))).To(BeTrue()) _, err = system.Database.GetPackageFiles(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) Expect(err).To(HaveOccurred()) _, err = system.Database.FindPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) diff --git a/pkg/installer/repository.go b/pkg/installer/repository.go index 07b5690f..7a458b25 100644 --- a/pkg/installer/repository.go +++ b/pkg/installer/repository.go @@ -28,11 +28,11 @@ import ( artifact "github.com/mudler/luet/pkg/compiler/types/artifact" compression "github.com/mudler/luet/pkg/compiler/types/compression" + fileHelper "github.com/mudler/luet/pkg/helpers/file" "go.uber.org/multierr" "github.com/mudler/luet/pkg/compiler" "github.com/mudler/luet/pkg/config" - "github.com/mudler/luet/pkg/helpers" "github.com/mudler/luet/pkg/installer/client" . "github.com/mudler/luet/pkg/logger" pkg "github.com/mudler/luet/pkg/package" @@ -723,7 +723,7 @@ func (r *LuetSystemRepository) SyncBuildMetadata(path string) error { if err != nil { return errors.Wrapf(err, "while downloading metadata for %s", ai.HumanReadableString()) } - if err := helpers.Move(file, filepath.Join(path, ai.GetMetadataFilePath())); err != nil { + if err := fileHelper.Move(file, filepath.Join(path, ai.GetMetadataFilePath())); err != nil { return err } } @@ -810,7 +810,7 @@ func (r *LuetSystemRepository) Sync(force bool) (*LuetSystemRepository, error) { if r.Cached { // Copy updated repository.yaml file to repo dir now that the tree is synced. - err = helpers.CopyFile(file, filepath.Join(repobasedir, REPOSITORY_SPECFILE)) + err = fileHelper.CopyFile(file, filepath.Join(repobasedir, REPOSITORY_SPECFILE)) if err != nil { return nil, errors.Wrap(err, "Error on update "+REPOSITORY_SPECFILE) } diff --git a/pkg/installer/repository_docker.go b/pkg/installer/repository_docker.go index c581bdd3..f2f46009 100644 --- a/pkg/installer/repository_docker.go +++ b/pkg/installer/repository_docker.go @@ -24,16 +24,16 @@ import ( "strings" "time" - artifact "github.com/mudler/luet/pkg/compiler/types/artifact" - + "github.com/mudler/luet/pkg/bus" + compiler "github.com/mudler/luet/pkg/compiler" "github.com/mudler/luet/pkg/compiler/backend" + artifact "github.com/mudler/luet/pkg/compiler/types/artifact" + "github.com/mudler/luet/pkg/config" + "github.com/mudler/luet/pkg/helpers" + "github.com/mudler/luet/pkg/helpers/docker" . "github.com/mudler/luet/pkg/logger" pkg "github.com/mudler/luet/pkg/package" - "github.com/mudler/luet/pkg/bus" - compiler "github.com/mudler/luet/pkg/compiler" - "github.com/mudler/luet/pkg/config" - "github.com/mudler/luet/pkg/helpers" "github.com/pkg/errors" ) @@ -166,7 +166,7 @@ func (d *dockerRepositoryGenerator) pushImageFromArtifact(a *artifact.PackageArt if err != nil { return errors.Wrap(err, "failed generating checksums for tree") } - imageTree := fmt.Sprintf("%s:%s", d.imagePrefix, helpers.StripInvalidStringsFromImage(a.GetFileName())) + imageTree := fmt.Sprintf("%s:%s", d.imagePrefix, docker.StripInvalidStringsFromImage(a.GetFileName())) if checkIfExists && d.imagePush && d.b.ImageAvailable(imageTree) && !d.force { Info("Image", imageTree, "already present, skipping. use --force-push to override") return nil diff --git a/pkg/installer/repository_test.go b/pkg/installer/repository_test.go index 5b63c9da..66e589e3 100644 --- a/pkg/installer/repository_test.go +++ b/pkg/installer/repository_test.go @@ -26,14 +26,15 @@ import ( "github.com/mudler/luet/pkg/compiler" backend "github.com/mudler/luet/pkg/compiler/backend" - compilerspec "github.com/mudler/luet/pkg/compiler/types/spec" - artifact "github.com/mudler/luet/pkg/compiler/types/artifact" + compilerspec "github.com/mudler/luet/pkg/compiler/types/spec" config "github.com/mudler/luet/pkg/config" "github.com/mudler/luet/pkg/helpers" + fileHelper "github.com/mudler/luet/pkg/helpers/file" . "github.com/mudler/luet/pkg/installer" pkg "github.com/mudler/luet/pkg/package" "github.com/mudler/luet/pkg/tree" + . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) @@ -83,34 +84,34 @@ var _ = Describe("Repository", func() { artifact, err := compiler.Compile(false, spec) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).To(BeTrue()) - content1, err := helpers.Read(spec.Rel("test5")) + content1, err := fileHelper.Read(spec.Rel("test5")) Expect(err).ToNot(HaveOccurred()) - content2, err := helpers.Read(spec.Rel("test6")) + content2, err := fileHelper.Read(spec.Rel("test6")) Expect(err).ToNot(HaveOccurred()) Expect(content1).To(Equal("artifact5\n")) Expect(content2).To(Equal("artifact6\n")) - Expect(helpers.Exists(spec.Rel("b-test-1.0.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("b-test-1.0.metadata.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.0.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.0.metadata.yaml"))).To(BeTrue()) repo, err := stubRepo(tmpdir, "../../tests/fixtures/buildable") Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) - Expect(helpers.Exists(spec.Rel(REPOSITORY_SPECFILE))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_SPECFILE))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) err = repo.Write(tmpdir, false, true) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_SPECFILE))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_SPECFILE))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) }) It("Generate repository metadata of files ONLY referenced in a tree", func() { @@ -156,41 +157,41 @@ var _ = Describe("Repository", func() { artifact, err := compiler.Compile(false, spec) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(artifact.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact.Path)).To(BeTrue()) Expect(helpers.Untar(artifact.Path, tmpdir, false)).ToNot(HaveOccurred()) artifact2, err := compiler2.Compile(false, spec2) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(artifact2.Path)).To(BeTrue()) + Expect(fileHelper.Exists(artifact2.Path)).To(BeTrue()) Expect(helpers.Untar(artifact2.Path, tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).To(BeTrue()) - content1, err := helpers.Read(spec.Rel("test5")) + content1, err := fileHelper.Read(spec.Rel("test5")) Expect(err).ToNot(HaveOccurred()) - content2, err := helpers.Read(spec.Rel("test6")) + content2, err := fileHelper.Read(spec.Rel("test6")) Expect(err).ToNot(HaveOccurred()) Expect(content1).To(Equal("artifact5\n")) Expect(content2).To(Equal("artifact6\n")) - Expect(helpers.Exists(spec.Rel("b-test-1.0.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("b-test-1.0.metadata.yaml"))).To(BeTrue()) - Expect(helpers.Exists(spec2.Rel("alpine-seed-1.0.package.tar"))).To(BeTrue()) - Expect(helpers.Exists(spec2.Rel("alpine-seed-1.0.metadata.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.0.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("b-test-1.0.metadata.yaml"))).To(BeTrue()) + Expect(fileHelper.Exists(spec2.Rel("alpine-seed-1.0.package.tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec2.Rel("alpine-seed-1.0.metadata.yaml"))).To(BeTrue()) repo, err := stubRepo(tmpdir, "../../tests/fixtures/buildable") Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) - Expect(helpers.Exists(spec.Rel(REPOSITORY_SPECFILE))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_SPECFILE))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) err = repo.Write(tmpdir, false, true) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_SPECFILE))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_SPECFILE))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).To(BeTrue()) // We check now that the artifact not referenced in the tree // (spec2) is not indexed in the repository @@ -267,18 +268,18 @@ urls: a, err := localcompiler.Compile(false, spec) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(a.Path)).To(BeTrue()) + Expect(fileHelper.Exists(a.Path)).To(BeTrue()) Expect(helpers.Untar(a.Path, tmpdir, false)).ToNot(HaveOccurred()) - Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) - Expect(helpers.Exists(spec.Rel("test6"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(fileHelper.Exists(spec.Rel("test6"))).To(BeTrue()) repo, err := dockerStubRepo(tmpdir, "../../tests/fixtures/buildable", repoImage, true, true) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) - Expect(helpers.Exists(spec.Rel(REPOSITORY_SPECFILE))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_SPECFILE))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) err = repo.Write(repoImage, false, true) Expect(err).ToNot(HaveOccurred()) @@ -295,7 +296,7 @@ urls: f, err := c.DownloadFile("repository.yaml") Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Read(f)).To(ContainSubstring("name: test")) + Expect(fileHelper.Read(f)).To(ContainSubstring("name: test")) a, err = c.DownloadArtifact(&artifact.PackageArtifact{ Path: "test.tar", @@ -310,7 +311,7 @@ urls: Expect(err).ToNot(HaveOccurred()) Expect(a.Unpack(extracted, false)).ToNot(HaveOccurred()) - Expect(helpers.Read(filepath.Join(extracted, "test6"))).To(Equal("artifact6\n")) + Expect(fileHelper.Read(filepath.Join(extracted, "test6"))).To(Equal("artifact6\n")) }) It("generates images of virtual packages", func() { @@ -341,15 +342,15 @@ urls: a, err := localcompiler.Compile(false, spec) Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Exists(a.Path)).To(BeTrue()) + Expect(fileHelper.Exists(a.Path)).To(BeTrue()) Expect(helpers.Untar(a.Path, tmpdir, false)).ToNot(HaveOccurred()) repo, err := dockerStubRepo(tmpdir, "../../tests/fixtures/virtuals", repoImage, true, true) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) - Expect(helpers.Exists(spec.Rel(REPOSITORY_SPECFILE))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) - Expect(helpers.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_SPECFILE))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(TREE_TARBALL + ".gz"))).ToNot(BeTrue()) + Expect(fileHelper.Exists(spec.Rel(REPOSITORY_METAFILE + ".tar"))).ToNot(BeTrue()) err = repo.Write(repoImage, false, true) Expect(err).ToNot(HaveOccurred()) @@ -366,7 +367,7 @@ urls: f, err := c.DownloadFile("repository.yaml") Expect(err).ToNot(HaveOccurred()) - Expect(helpers.Read(f)).To(ContainSubstring("name: test")) + Expect(fileHelper.Read(f)).To(ContainSubstring("name: test")) a, err = c.DownloadArtifact(&artifact.PackageArtifact{ Path: "test.tar", @@ -382,7 +383,7 @@ urls: Expect(a.Unpack(extracted, false)).ToNot(HaveOccurred()) - Expect(helpers.DirectoryIsEmpty(extracted)).To(BeFalse()) + Expect(fileHelper.DirectoryIsEmpty(extracted)).To(BeFalse()) content, err := ioutil.ReadFile(filepath.Join(extracted, ".virtual")) Expect(err).ToNot(HaveOccurred()) diff --git a/pkg/installer/system.go b/pkg/installer/system.go index 5cea19ad..496651cc 100644 --- a/pkg/installer/system.go +++ b/pkg/installer/system.go @@ -3,6 +3,7 @@ package installer import ( "github.com/hashicorp/go-multierror" "github.com/mudler/luet/pkg/helpers" + fileHelper "github.com/mudler/luet/pkg/helpers/file" . "github.com/mudler/luet/pkg/logger" pkg "github.com/mudler/luet/pkg/package" "github.com/mudler/luet/pkg/tree" @@ -23,7 +24,7 @@ func (s *System) ExecuteFinalizers(packs []pkg.Package) error { var errs error executedFinalizer := map[string]bool{} for _, p := range packs { - if helpers.Exists(p.Rel(tree.FinalizerFile)) { + if fileHelper.Exists(p.Rel(tree.FinalizerFile)) { out, err := helpers.RenderFiles(p.Rel(tree.FinalizerFile), p.Rel(tree.DefinitionFile)) if err != nil { Warning("Failed rendering finalizer for ", p.HumanReadableString(), err.Error()) diff --git a/pkg/package/package.go b/pkg/package/package.go index bf0c650a..91eb1a22 100644 --- a/pkg/package/package.go +++ b/pkg/package/package.go @@ -26,7 +26,8 @@ import ( "strconv" "strings" - "github.com/mudler/luet/pkg/helpers" + "github.com/mudler/luet/pkg/helpers/docker" + "github.com/mudler/luet/pkg/helpers/match" version "github.com/mudler/luet/pkg/versioner" gentoo "github.com/Sabayon/pkgs-checker/pkg/gentoo" @@ -324,7 +325,7 @@ func (p *DefaultPackage) GetPackageName() string { } func (p *DefaultPackage) ImageID() string { - return helpers.StripInvalidStringsFromImage(p.GetFingerPrint()) + return docker.StripInvalidStringsFromImage(p.GetFingerPrint()) } // GetBuildTimestamp returns the package build timestamp @@ -359,19 +360,19 @@ func (p *DefaultPackage) IsHidden() bool { } func (p *DefaultPackage) HasLabel(label string) bool { - return helpers.MapHasKey(&p.Labels, label) + return match.MapHasKey(&p.Labels, label) } func (p *DefaultPackage) MatchLabel(r *regexp.Regexp) bool { - return helpers.MapMatchRegex(&p.Labels, r) + return match.MapMatchRegex(&p.Labels, r) } func (p *DefaultPackage) HasAnnotation(label string) bool { - return helpers.MapHasKey(&p.Annotations, label) + return match.MapHasKey(&p.Annotations, label) } func (p *DefaultPackage) MatchAnnotation(r *regexp.Regexp) bool { - return helpers.MapMatchRegex(&p.Annotations, r) + return match.MapMatchRegex(&p.Annotations, r) } // AddUse adds a use to a package diff --git a/pkg/tree/compiler_recipe.go b/pkg/tree/compiler_recipe.go index 7bd4bcb1..d95207fb 100644 --- a/pkg/tree/compiler_recipe.go +++ b/pkg/tree/compiler_recipe.go @@ -26,6 +26,7 @@ import ( "path/filepath" "github.com/mudler/luet/pkg/helpers" + fileHelper "github.com/mudler/luet/pkg/helpers/file" pkg "github.com/mudler/luet/pkg/package" "github.com/pkg/errors" ) @@ -61,7 +62,7 @@ type CompilerRecipe struct { // and the build context required for reproducible builds func (r *CompilerRecipe) Save(path string) error { for _, p := range r.SourcePath { - if err := helpers.CopyDir(p, filepath.Join(path, filepath.Base(p))); err != nil { + if err := fileHelper.CopyDir(p, filepath.Join(path, filepath.Base(p))); err != nil { return errors.Wrap(err, "while copying source tree") } } @@ -102,7 +103,7 @@ func (r *CompilerRecipe) Load(path string) error { // Instead of rdeps, have a different tree for build deps. compileDefPath := pack.Rel(CompilerDefinitionFile) - if helpers.Exists(compileDefPath) { + if fileHelper.Exists(compileDefPath) { dat, err := helpers.RenderFiles(compileDefPath, currentpath) if err != nil { @@ -149,7 +150,7 @@ func (r *CompilerRecipe) Load(path string) error { // Instead of rdeps, have a different tree for build deps. compileDefPath := pack.Rel(CompilerDefinitionFile) - if helpers.Exists(compileDefPath) { + if fileHelper.Exists(compileDefPath) { raw := packsRaw.Find(pack.GetName(), pack.GetCategory(), pack.GetVersion()) buildyaml, err := ioutil.ReadFile(compileDefPath) diff --git a/pkg/tree/installer_recipe.go b/pkg/tree/installer_recipe.go index 94f0713b..cc2496f3 100644 --- a/pkg/tree/installer_recipe.go +++ b/pkg/tree/installer_recipe.go @@ -26,8 +26,9 @@ import ( "os" "path/filepath" - "github.com/mudler/luet/pkg/helpers" + fileHelper "github.com/mudler/luet/pkg/helpers/file" pkg "github.com/mudler/luet/pkg/package" + "github.com/pkg/errors" ) @@ -61,8 +62,8 @@ func (r *InstallerRecipe) Save(path string) error { } // Instead of rdeps, have a different tree for build deps. finalizerPath := p.Rel(FinalizerFile) - if helpers.Exists(finalizerPath) { // copy finalizer file from the source tree - helpers.CopyFile(finalizerPath, filepath.Join(dir, FinalizerFile)) + if fileHelper.Exists(finalizerPath) { // copy finalizer file from the source tree + fileHelper.CopyFile(finalizerPath, filepath.Join(dir, FinalizerFile)) } } @@ -71,7 +72,7 @@ func (r *InstallerRecipe) Save(path string) error { func (r *InstallerRecipe) Load(path string) error { - if !helpers.Exists(path) { + if !fileHelper.Exists(path) { return errors.New(fmt.Sprintf( "Path %s doesn't exit.", path, )) diff --git a/pkg/tree/recipes.go b/pkg/tree/recipes.go index 8949706b..28a48e64 100644 --- a/pkg/tree/recipes.go +++ b/pkg/tree/recipes.go @@ -26,9 +26,10 @@ import ( "os" "path/filepath" - helpers "github.com/mudler/luet/pkg/helpers" + fileHelper "github.com/mudler/luet/pkg/helpers/file" pkg "github.com/mudler/luet/pkg/package" spectooling "github.com/mudler/luet/pkg/spectooling" + "github.com/pkg/errors" ) @@ -77,7 +78,7 @@ func (r *Recipe) Load(path string) error { // if err != nil { // return err // } - if !helpers.Exists(path) { + if !fileHelper.Exists(path) { return errors.New(fmt.Sprintf( "Path %s doesn't exit.", path, ))