func (m *Generator) generateToolSourceCode(pkg *codegen.Package) { file := pkg.CreateSourceFile("main.go") imports := append(m.Imports, codegen.SimpleImport("fmt"), codegen.SimpleImport("os"), codegen.SimpleImport("strings"), codegen.SimpleImport("github.com/goadesign/goa/dslengine"), codegen.NewImport("_", filepath.ToSlash(codegen.DesignPackagePath)), ) file.WriteHeader("Code Generator", "main", imports) tmpl, err := template.New("generator").Parse(mainTmpl) if err != nil { panic(err) // bug } pkgName, err := codegen.PackageName(pkg.Abs()) if err != nil { panic(err) } context := map[string]string{ "Genfunc": m.Genfunc, "DesignPackage": codegen.DesignPackagePath, "PkgName": pkgName, } err = tmpl.Execute(file, context) if err != nil { panic(err) // bug } }
outputWorkspace, err = codegen.NewWorkspace("output") p, err := outputWorkspace.NewPackage("testOutput") Ω(err).ShouldNot(HaveOccurred()) outputDir = p.Abs() designWorkspace, err = codegen.NewWorkspace("test") Ω(err).ShouldNot(HaveOccurred()) compiledFiles = nil compileError = nil }) JustBeforeEach(func() { if designPackagePath != "" { designPackage, err := designWorkspace.NewPackage(designPackagePath) Ω(err).ShouldNot(HaveOccurred()) if designPackageSource != "" { file := designPackage.CreateSourceFile("design.go") err = ioutil.WriteFile(file.Abs(), []byte(designPackageSource), 0655) Ω(err).ShouldNot(HaveOccurred()) } } else { designPackage = nil } m = &meta.Generator{ Genfunc: genfunc, Imports: []*codegen.ImportSpec{codegen.SimpleImport(designPackagePath)}, } codegen.Debug = debug codegen.OutputDir = outputDir compiledFiles, compileError = m.Generate() })