func (r *Repo) readDepRepos(v *viper.Viper) ([]*Repo, error) { rdesc := r.rdesc repos := []*Repo{} branch, _, ok := rdesc.Match(r) if !ok { // No matching branch, barf! return nil, util.NewNewtError(fmt.Sprintf("No "+ "matching branch for %s repo", r.Name())) } repoTag := fmt.Sprintf("%s.repositories", branch) repoList := v.GetStringMap(repoTag) for repoName, repoItf := range repoList { repoVars := cast.ToStringMapString(repoItf) dl, err := downloader.LoadDownloader(repoName, repoVars) if err != nil { return nil, err } rversreq := repoVars["vers"] newRepo, err := NewRepo(repoName, rversreq, dl) if err != nil { return nil, err } rd, err := NewRepoDependency(repoName, rversreq) if err != nil { return nil, err } rd.Storerepo = newRepo r.AddDependency(rd) repos = append(repos, newRepo) } return repos, nil }