// Run start update repositories func (repo *Repository) Run(config *Config) map[string]map[string]packages.Composer { var d driver.Driver switch repo.Type { case "git", "vcs", "composer": d = &driver.Git{URL: repo.URL} err := d.Run() if err != nil { utils.Logger.Error(err) } pm := make(map[string]map[string]packages.Composer) if len(pm[d.GetName()]) == 0 { pm[d.GetName()] = make(map[string]packages.Composer) } if config.File.Archive.Directory == "" { pm[d.GetName()] = d.GetPackages() return pm } flag := make(chan bool, len(d.GetPackages())) ch := make(chan packages.Composer) for _, value := range d.GetPackages() { go func(p packages.Composer) { flag <- true defer func() { <-flag ch <- p }() if config.File.Archive.SkipDev && !p.Stability { return } switch config.File.Archive.Format { case "zip": repo.Compress(config, d, &p) case "tar": utils.Logger.Error("Tar format not sopported yet!") default: utils.Logger.Errorf("Invalid archive format: %s!", config.File.Archive.Format) } }(value) } for i := 0; i < len(d.GetPackages()); i++ { p := <-ch pm[d.GetName()][p.Version] = p } return pm case "bitbucket", "git-bitbucket": utils.Logger.Error("Bitbucket driver not supported yet!") default: utils.Logger.Error("Driver was not specified!") } return map[string]map[string]packages.Composer{} }