in parsers/manifest_parser.go [365:456]
func (dm *YAMLParser) ComposePackage(pkg Package, packageName string, filePath string, managedAnnotations whisk.KeyValue, projectInputs map[string]Parameter) (*whisk.Package, map[string]Parameter, error) {
pag := &whisk.Package{}
pag.Name = packageName
//The namespace for this package is absent, so we use default guest here.
pag.Namespace = pkg.Namespace
pub := false
pag.Publish = &pub
//Version is a mandatory value
//If it is an empty string, it will be set to default value
//And print an warning message
// TODO(#673) implement STRICT flag
if pkg.Version == "" {
warningString := wski18n.T(
wski18n.ID_WARN_KEY_MISSING_X_key_X_value_X,
map[string]interface{}{
wski18n.KEY_KEY: wski18n.PACKAGE_VERSION,
wski18n.KEY_VALUE: DEFAULT_PACKAGE_VERSION})
wskprint.PrintOpenWhiskWarning(warningString)
warningString = wski18n.T(
wski18n.ID_WARN_KEYVALUE_NOT_SAVED_X_key_X,
map[string]interface{}{wski18n.KEY_KEY: wski18n.PACKAGE_VERSION})
wskprint.PrintOpenWhiskWarning(warningString)
pkg.Version = DEFAULT_PACKAGE_VERSION
}
pag.Version = wskenv.ConvertSingleName(pkg.Version)
//License is a mandatory value
//set license to unknown if it is an empty string
//And print an warning message
// TODO(#673) implement STRICT flag
if pkg.License == "" {
warningString := wski18n.T(
wski18n.ID_WARN_KEY_MISSING_X_key_X_value_X,
map[string]interface{}{
wski18n.KEY_KEY: wski18n.PACKAGE_LICENSE,
wski18n.KEY_VALUE: DEFAULT_PACKAGE_LICENSE})
wskprint.PrintOpenWhiskWarning(warningString)
warningString = wski18n.T(
wski18n.ID_WARN_KEYVALUE_NOT_SAVED_X_key_X,
map[string]interface{}{wski18n.KEY_KEY: wski18n.PACKAGE_VERSION})
wskprint.PrintOpenWhiskWarning(warningString)
pkg.License = DEFAULT_PACKAGE_LICENSE
} else {
utils.CheckLicense(pkg.License)
}
// package inputs are set as package inputs of type Parameter{}
// read all package inputs, interpolate their values using env. variables
// check if input variable itself is an env. variable
packageInputs, inputs, err := dm.composePackageInputs(projectInputs, pkg.Inputs, filePath)
if err != nil {
return nil, nil, err
}
if len(inputs) > 0 {
pag.Parameters = inputs
}
// set Package Annotations
listOfAnnotations := dm.composeAnnotations(pkg.Annotations)
if len(listOfAnnotations) > 0 {
pag.Annotations = append(pag.Annotations, listOfAnnotations...)
}
// add Managed Annotations if this is Managed Deployment
if utils.Flags.Managed || utils.Flags.Sync {
pag.Annotations = append(pag.Annotations, managedAnnotations)
}
// "default" package is a reserved package name
// and in this case wskdeploy deploys openwhisk entities under
// /namespace instead of /namespace/package
if strings.ToLower(pag.Name) == DEFAULT_PACKAGE {
wskprint.PrintlnOpenWhiskVerbose(utils.Flags.Verbose, wski18n.T(wski18n.ID_MSG_DEFAULT_PACKAGE))
// when a package is marked public with "Public: true" in manifest file
// the package is visible to anyone and created with publish state
// set to shared otherwise publish state is set to private
} else if pkg.Public {
warningMsg := wski18n.T(wski18n.ID_WARN_PACKAGE_IS_PUBLIC_X_package_X,
map[string]interface{}{
wski18n.KEY_PACKAGE: pag.Name})
wskprint.PrintlnOpenWhiskWarning(warningMsg)
pag.Publish = &(pkg.Public)
}
return pag, packageInputs, nil
}