diff --git a/cmd/create-repo.go b/cmd/create-repo.go index 9322cf04..05db0494 100644 --- a/cmd/create-repo.go +++ b/cmd/create-repo.go @@ -50,7 +50,7 @@ var createrepoCmd = &cobra.Command{ var err error var repo installer.Repository - tree := viper.GetString("tree") + treePaths := viper.GetStringSlice("tree") dst := viper.GetString("output") packages := viper.GetString("packages") name := viper.GetString("name") @@ -74,8 +74,8 @@ var createrepoCmd = &cobra.Command{ Fatal("Error: " + err.Error()) } - if tree == "" { - tree = lrepo.TreePath + if len(treePaths) <= 0 { + treePaths = []string{lrepo.TreePath} } if t == "" { @@ -87,12 +87,12 @@ var createrepoCmd = &cobra.Command{ lrepo.Urls, lrepo.Priority, packages, - tree, + treePaths, pkg.NewInMemoryDatabase(false)) } else { repo, err = installer.GenerateRepository(name, descr, t, urls, 1, packages, - tree, pkg.NewInMemoryDatabase(false)) + treePaths, pkg.NewInMemoryDatabase(false)) } if err != nil { @@ -131,7 +131,7 @@ func init() { Fatal(err) } createrepoCmd.Flags().String("packages", path, "Packages folder (output from build)") - createrepoCmd.Flags().String("tree", path, "Source luet tree") + createrepoCmd.Flags().StringSliceP("tree", "t", []string{}, "Path of the source trees to use.") createrepoCmd.Flags().String("output", path, "Destination folder") createrepoCmd.Flags().String("name", "luet", "Repository name") createrepoCmd.Flags().String("descr", "luet", "Repository description") diff --git a/pkg/installer/installer_test.go b/pkg/installer/installer_test.go index 4f72025b..55c97a6c 100644 --- a/pkg/installer/installer_test.go +++ b/pkg/installer/installer_test.go @@ -82,7 +82,7 @@ var _ = Describe("Installer", func() { 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()) - repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, "../../tests/fixtures/buildable", pkg.NewInMemoryDatabase(false)) + repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, []string{"../../tests/fixtures/buildable"}, pkg.NewInMemoryDatabase(false)) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) @@ -198,7 +198,7 @@ urls: 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()) - repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, "../../tests/fixtures/buildable", pkg.NewInMemoryDatabase(false)) + repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, []string{"../../tests/fixtures/buildable"}, pkg.NewInMemoryDatabase(false)) treeFile := NewDefaultTreeRepositoryFile() treeFile.SetCompressionType(compiler.None) repo.SetRepositoryFile(REPOFILE_TREE_KEY, treeFile) @@ -316,7 +316,7 @@ urls: 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()) - repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, "../../tests/fixtures/buildable", pkg.NewInMemoryDatabase(false)) + repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, []string{"../../tests/fixtures/buildable"}, pkg.NewInMemoryDatabase(false)) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) @@ -434,7 +434,7 @@ urls: 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()) - repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, "../../tests/fixtures/buildable", pkg.NewInMemoryDatabase(false)) + repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, []string{"../../tests/fixtures/buildable"}, pkg.NewInMemoryDatabase(false)) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) @@ -500,7 +500,7 @@ urls: Expect(err).ToNot(HaveOccurred()) Expect(helpers.Exists(artifact.GetPath())).To(BeTrue()) - repo, err = GenerateRepository("test", "description", "disk", []string{tmpdir2}, 1, tmpdir2, "../../tests/fixtures/alpine", pkg.NewInMemoryDatabase(false)) + repo, err = GenerateRepository("test", "description", "disk", []string{tmpdir2}, 1, tmpdir2, []string{"../../tests/fixtures/alpine"}, pkg.NewInMemoryDatabase(false)) Expect(err).ToNot(HaveOccurred()) err = repo.Write(tmpdir2, false) Expect(err).ToNot(HaveOccurred()) @@ -569,7 +569,7 @@ urls: Expect(errs).To(BeEmpty()) - repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, "../../tests/fixtures/upgrade", pkg.NewInMemoryDatabase(false)) + repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, []string{"../../tests/fixtures/upgrade"}, pkg.NewInMemoryDatabase(false)) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) @@ -695,7 +695,7 @@ urls: _, errs = c2.CompileParallel(false, compiler.NewLuetCompilationspecs(spec2)) Expect(errs).To(BeEmpty()) - repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, "../../tests/fixtures/upgrade_old_repo", pkg.NewInMemoryDatabase(false)) + repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, []string{"../../tests/fixtures/upgrade_old_repo"}, pkg.NewInMemoryDatabase(false)) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) @@ -704,7 +704,7 @@ urls: err = repo.Write(tmpdir, false) Expect(err).ToNot(HaveOccurred()) - repoupgrade, err := GenerateRepository("test", "description", "disk", []string{tmpdirnewrepo}, 1, tmpdirnewrepo, "../../tests/fixtures/upgrade_new_repo", pkg.NewInMemoryDatabase(false)) + repoupgrade, err := GenerateRepository("test", "description", "disk", []string{tmpdirnewrepo}, 1, tmpdirnewrepo, []string{"../../tests/fixtures/upgrade_new_repo"}, pkg.NewInMemoryDatabase(false)) Expect(err).ToNot(HaveOccurred()) err = repoupgrade.Write(tmpdirnewrepo, false) Expect(err).ToNot(HaveOccurred()) @@ -818,7 +818,7 @@ urls: Expect(errs).To(BeEmpty()) - repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, "../../tests/fixtures/upgrade", pkg.NewInMemoryDatabase(false)) + repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, []string{"../../tests/fixtures/upgrade"}, pkg.NewInMemoryDatabase(false)) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) @@ -935,7 +935,7 @@ urls: Expect(errs).To(BeEmpty()) - repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, "../../tests/fixtures/upgrade", pkg.NewInMemoryDatabase(false)) + repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, []string{"../../tests/fixtures/upgrade"}, pkg.NewInMemoryDatabase(false)) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) @@ -1037,7 +1037,7 @@ urls: Expect(errs).To(BeEmpty()) - repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, "../../tests/fixtures/upgrade_old_repo", pkg.NewInMemoryDatabase(false)) + repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, []string{"../../tests/fixtures/upgrade_old_repo"}, pkg.NewInMemoryDatabase(false)) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) Expect(helpers.Exists(spec.Rel("repository.yaml"))).ToNot(BeTrue()) @@ -1123,7 +1123,7 @@ urls: Expect(errs).To(BeEmpty()) - repo, err = GenerateRepository("test", "description", "disk", []string{tmpdir2}, 1, tmpdir2, "../../tests/fixtures/upgrade_new_repo", pkg.NewInMemoryDatabase(false)) + repo, err = GenerateRepository("test", "description", "disk", []string{tmpdir2}, 1, tmpdir2, []string{"../../tests/fixtures/upgrade_new_repo"}, pkg.NewInMemoryDatabase(false)) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) err = repo.Write(tmpdir2, false) diff --git a/pkg/installer/repository.go b/pkg/installer/repository.go index 23db11eb..9ecd3460 100644 --- a/pkg/installer/repository.go +++ b/pkg/installer/repository.go @@ -176,12 +176,15 @@ func (f *LuetRepositoryFile) GetChecksums() compiler.Checksums { return f.Checksums } -func GenerateRepository(name, descr, t string, urls []string, priority int, src, treeDir string, db pkg.PackageDatabase) (Repository, error) { +func GenerateRepository(name, descr, t string, urls []string, priority int, src string, treesDir []string, db pkg.PackageDatabase) (Repository, error) { tr := tree.NewInstallerRecipe(db) - err := tr.Load(treeDir) - if err != nil { - return nil, err + + for _, treeDir := range treesDir { + err := tr.Load(treeDir) + if err != nil { + return nil, err + } } art, err := buildPackageIndex(src, tr.GetDatabase()) diff --git a/pkg/installer/repository_test.go b/pkg/installer/repository_test.go index 9d2fa6c5..94ed4650 100644 --- a/pkg/installer/repository_test.go +++ b/pkg/installer/repository_test.go @@ -83,7 +83,7 @@ var _ = Describe("Repository", func() { 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()) - repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, "../../tests/fixtures/buildable", pkg.NewInMemoryDatabase(false)) + repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, []string{"../../tests/fixtures/buildable"}, pkg.NewInMemoryDatabase(false)) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) Expect(helpers.Exists(spec.Rel(REPOSITORY_SPECFILE))).ToNot(BeTrue()) @@ -165,7 +165,7 @@ var _ = Describe("Repository", func() { 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()) - repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, "../../tests/fixtures/buildable", pkg.NewInMemoryDatabase(false)) + repo, err := GenerateRepository("test", "description", "disk", []string{tmpdir}, 1, tmpdir, []string{"../../tests/fixtures/buildable"}, pkg.NewInMemoryDatabase(false)) Expect(err).ToNot(HaveOccurred()) Expect(repo.GetName()).To(Equal("test")) Expect(helpers.Exists(spec.Rel(REPOSITORY_SPECFILE))).ToNot(BeTrue())