From c24707e82d144878f7ce870491175ce3eb0d17cd Mon Sep 17 00:00:00 2001 From: Tamal Saha Date: Wed, 24 Jun 2020 13:03:56 -0700 Subject: [PATCH] Clone sub project repos once (#18) Signed-off-by: Tamal Saha --- cmds/aggregator.go | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/cmds/aggregator.go b/cmds/aggregator.go index e5df481..53f183b 100644 --- a/cmds/aggregator.go +++ b/cmds/aggregator.go @@ -661,10 +661,6 @@ func processSubProject(p api.Product, v api.ProductVersion, rootDir, vDir string // create project version specific subfolder for the subprojects tmpDir := filepath.Join(rootTempDir, p.Key+"-"+v.Version, spKey) repoDir := filepath.Join(tmpDir, "repo") - err := os.MkdirAll(repoDir, 0755) - if err != nil { - return err - } pfile := filepath.Join(rootDir, "data", "products", spKey+".json") fmt.Println("using product_listing_file=", pfile) @@ -679,14 +675,20 @@ func processSubProject(p api.Product, v api.ProductVersion, rootDir, vDir string return err } + err = os.MkdirAll(tmpDir, 0755) + if err != nil { + return err + } + if !exists(repoDir) { + err = sh.Command("git", "clone", sp.RepoURL, repoDir).Run() + if err != nil { + return err + } + } + for _, mapping := range info.Mappings { if sets.NewString(mapping.Versions...).Has(v.Version) { - err = sh.Command("git", "clone", sp.RepoURL, repoDir).Run() - if err != nil { - return err - } - for _, spVersion := range mapping.SubProjectVersions { spv, err := findVersion(sp.Versions, spVersion) if err != nil { @@ -855,3 +857,11 @@ func findVersion(versions []api.ProductVersion, x string) (api.ProductVersion, e } return api.ProductVersion{}, fmt.Errorf("version %s not found", x) } + +// exists reports whether the named file or directory Exists. +func exists(name string) bool { + if _, err := os.Stat(name); os.IsNotExist(err) { + return false + } + return true +}