in deployers/manifestreader.go [174:208]
func (reader *ManifestReader) SetDependencies(deps map[string]dependencies.DependencyRecord) error {
dep := reader.serviceDeployer
dep.mt.Lock()
defer dep.mt.Unlock()
for name, dependency := range deps {
// name is <packagename>:<dependencylabel>
depName := strings.Split(name, ":")[1]
if len(depName) == 0 {
return nil
}
if !dependency.IsBinding && !reader.IsUndeploy {
if _, exists := dep.DependencyMaster[depName]; exists {
if !dependencies.CompareDependencyRecords(dep.DependencyMaster[depName], dependency) {
location := strings.Join([]string{dep.DependencyMaster[depName].Location, dependency.Location}, ",")
errmsg := wski18n.T(wski18n.ID_ERR_DEPENDENCIES_WITH_SAME_LABEL_X_dependency_X_location_X,
map[string]interface{}{wski18n.KEY_DEPENDENCY: depName,
wski18n.KEY_LOCATION: location})
return wskderrors.NewYAMLParserErr(dep.ManifestPath, errmsg)
}
}
gitReader := dependencies.NewGitReader(depName, dependency)
err := gitReader.CloneDependency()
if err != nil {
return err
}
}
// store in two places (one local to package to preserve relationship, one in master record to check for conflics
dep.Deployment.Packages[dependency.Packagename].Dependencies[depName] = dependency
dep.DependencyMaster[depName] = dependency
}
return nil
}