func Run(overrideEnvVarName string, target string, templaterDir string, continueOnError bool) { attrMerger, err := merger.NewAttributesMerger(templaterDir + pathAttributes) if err != nil { logs.WithE(err).Warn("Failed to prepare attributes") } attributes := attrMerger.Merge() attributes = overrideWithJsonIfNeeded(overrideEnvVarName, attributes) tt, err := merger.ProcessAttributesTemplating(attributes, attributes) attributes = tt.(map[string]interface{}) if err != nil { logs.WithField("dir", templaterDir+pathTemplates).Fatal("Failed to template attributes") } logs.WithField("content", attributes).Debug("Final attributes resolution") info, _ := os.Stat(templaterDir + pathTemplates) if info == nil { logs.WithField("dir", templaterDir+pathTemplates).Debug("Template dir is empty. Nothing to template") return } tmpl, err := template.NewTemplateDir(templaterDir+pathTemplates, target, continueOnError) if err != nil { logs.WithE(err).WithField("dir", templaterDir+pathTemplates).Fatal("Failed to load template dir") } err = tmpl.Process(attributes) if err != nil { logs.WithE(err).WithField("dir", templaterDir+pathTemplates).Fatal("Failed to process template dir") } }
func (b *Builder) writeManifest() error { upperId, err := b.upperTreeStoreId() if err != nil { return err } attrMerger, err := merger.NewAttributesMerger(b.stage1Rootfs + PATH_DGR + PATH_BUILDER + PATH_ATTRIBUTES) if err != nil { logs.WithE(err).Warn("Failed to prepare attributes") } attributes := attrMerger.Merge() logs.WithFields(b.fields).WithField("attributes", attributes).Debug("Merged attributes for manifest templating") content, err := ioutil.ReadFile(b.aciTargetPath + common.PathManifestYmlTmpl) if err != nil { return errs.WithEF(err, b.fields.WithField("file", b.aciTargetPath+common.PathManifestYmlTmpl), "Failed to read manifest template") } aciManifest, err := common.ProcessManifestTemplate(string(content), attributes, true) if err != nil { return errs.WithEF(err, b.fields.WithField("content", string(content)), "Failed to process manifest template") } target := b.pod.Root + PATH_OVERLAY + "/" + upperId + PATH_UPPER + common.PathManifest dgrVersion, ok := manifestApp(b.pod).App.Environment.Get(common.EnvDgrVersion) if !ok { return errs.WithF(b.fields, "Cannot find dgr version") } froms, err := aciManifest.GetFroms() if len(froms) != 0 { if froms[0].String() != "" { aciManifest.Aci.Dependencies = append(froms, aciManifest.Aci.Dependencies...) } } if aciManifest.NameAndVersion.Version() == "" { aciManifest.NameAndVersion = *common.NewACFullName(aciManifest.NameAndVersion.Name() + ":" + common.GenerateVersion(b.aciTargetPath)) } if err := common.WriteAciManifest(aciManifest, target, aciManifest.NameAndVersion.Name(), dgrVersion); err != nil { return errs.WithEF(err, b.fields.WithField("file", target), "Failed to write manifest") } return nil }