本文整理汇总了Golang中github.com/goadesign/goa/goagen/codegen.NewWorkspace函数的典型用法代码示例。如果您正苦于以下问题:Golang NewWorkspace函数的具体用法?Golang NewWorkspace怎么用?Golang NewWorkspace使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewWorkspace函数的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Generate
// Generate compiles and runs the generator and returns the generated filenames.
func (m *Generator) Generate() ([]string, error) {
if codegen.OutputDir == "" {
return nil, fmt.Errorf("missing output directory specification")
}
if codegen.DesignPackagePath == "" {
return nil, fmt.Errorf("missing design package path specification")
}
if os.Getenv("GOPATH") == "" {
return nil, fmt.Errorf("GOPATH not set")
}
// Create output directory
if err := os.MkdirAll(codegen.OutputDir, 0755); err != nil {
return nil, err
}
// Create temporary workspace used for generation
w, err := codegen.NewWorkspace("goagen")
if err != nil {
if _, ok := err.(*os.PathError); ok {
err = fmt.Errorf(`invalid output directory path "%s"`, codegen.OutputDir)
}
return nil, err
}
defer func() {
if !codegen.Debug {
w.Delete()
}
}()
if codegen.Debug {
fmt.Printf("goagen source dir: %s\n", w.Path)
}
// Figure out design package name from its path
path, err := codegen.PackageSourcePath(codegen.DesignPackagePath)
if err != nil {
return nil, err
}
pkgName, err := codegen.PackageName(path)
if err != nil {
return nil, err
}
// Generate tool source code.
p, err := w.NewPackage(pkgName)
if err != nil {
return nil, err
}
m.generateToolSourceCode(p)
// Compile and run generated tool.
genbin, err := p.Compile("goagen")
if err != nil {
return nil, err
}
return m.spawn(genbin)
}
示例2:
var debug bool
var outputDir string
var designPackage *codegen.Package
var designPackagePath string
var designPackageSource string
var m *meta.Generator
BeforeEach(func() {
genfunc = ""
debug = false
designPackagePath = "design"
designPackageSource = "package design"
codegen.DesignPackagePath = designPackagePath
var err error
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")
示例3:
"github.com/goadesign/goa/dslengine"
"github.com/goadesign/goa/goagen/codegen"
"github.com/goadesign/goa/goagen/gen_app"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("Generate", func() {
var workspace *codegen.Workspace
var outDir string
var files []string
var genErr error
BeforeEach(func() {
var err error
workspace, err = codegen.NewWorkspace("test")
Ω(err).ShouldNot(HaveOccurred())
outDir, err = ioutil.TempDir(filepath.Join(workspace.Path, "src"), "")
Ω(err).ShouldNot(HaveOccurred())
os.Args = []string{"goagen", "--out=" + outDir, "--design=foo"}
})
JustBeforeEach(func() {
files, genErr = genapp.Generate(design.Design)
})
AfterEach(func() {
workspace.Delete()
})
Context("with a dummy API", func() {