in parsers/manifest_parser.go [226:274]
func (dm *YAMLParser) ComposeDependencies(pkg Package, projectPath string, filePath string, packageName string, managedAnnotations whisk.KeyValue, packageInputs PackageInputs) (map[string]dependencies.DependencyRecord, error) {
depMap := make(map[string]dependencies.DependencyRecord)
for key, dependency := range pkg.Dependencies {
version := dependency.Version
if len(version) == 0 {
version = YAML_VALUE_BRANCH_MASTER
}
location := dependency.Location
isBinding := false
if dependencies.LocationIsBinding(location) {
if !strings.HasPrefix(location, PATH_SEPARATOR) {
location = PATH_SEPARATOR + dependency.Location
}
isBinding = true
} else if dependencies.LocationIsGithub(location) {
// TODO() define const for the protocol prefix, etc.
_, err := url.ParseRequestURI(location)
if err != nil {
location = HTTPS + dependency.Location
location = wskenv.InterpolateStringWithEnvVar(location).(string)
}
isBinding = false
} else {
// TODO() create new named error in wskerrors package
return nil, errors.New(wski18n.T(wski18n.ID_ERR_DEPENDENCY_UNKNOWN_TYPE))
}
inputs, err := dm.composeInputs(dependency.Inputs, packageInputs, filePath)
if err != nil {
return nil, err
}
annotations := dm.composeAnnotations(dependency.Annotations)
if utils.Flags.Managed || utils.Flags.Sync {
annotations = append(annotations, managedAnnotations)
}
packDir := path.Join(projectPath, strings.Title(YAML_KEY_PACKAGES))
depName := packageName + ":" + key
depMap[depName] = dependencies.NewDependencyRecord(packDir, packageName, location, version, inputs, annotations, isBinding)
}
return depMap, nil
}