From bd9381b0196de79b30df49f2fbf9da1969da637b Mon Sep 17 00:00:00 2001 From: Fabian Wickborn Date: Wed, 29 Nov 2017 00:03:24 +0100 Subject: [PATCH] cmd/vfsgendev: Run generator in package directory Closes #36. --- cmd/vfsgendev/generate.go | 4 +++- cmd/vfsgendev/main.go | 21 ++++++++------------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/cmd/vfsgendev/generate.go b/cmd/vfsgendev/generate.go index 046f3f3..f78d425 100644 --- a/cmd/vfsgendev/generate.go +++ b/cmd/vfsgendev/generate.go @@ -15,7 +15,9 @@ type data struct { var generateTemplate = template.Must(template.New("").Funcs(template.FuncMap{ "quote": strconv.Quote, -}).Parse(`package main +}).Parse(`// +build ignore + +package main import ( "log" diff --git a/cmd/vfsgendev/main.go b/cmd/vfsgendev/main.go index 0c833e7..52a6a4b 100644 --- a/cmd/vfsgendev/main.go +++ b/cmd/vfsgendev/main.go @@ -11,7 +11,7 @@ import ( "log" "os" "os/exec" - "path/filepath" + "strings" ) var ( @@ -78,31 +78,26 @@ func run(importPath, variableName, tag string) error { return nil } - err = goRun(buf.String(), tag) + err = goRun(buf.String(), importPath, tag) return err } // goRun runs Go code src with build tags. -func goRun(src string, tags string) error { - // Create a temp folder. - tempDir, err := ioutil.TempDir("", "vfsgendev_") +func goRun(src, importPath, tags string) error { + // Create a temp file. + importPath = strings.Replace(importPath, "/", "_", -1) + tempFile := "vfsgendev_" + importPath + ".go" + err := ioutil.WriteFile(tempFile, []byte(src), 0600) if err != nil { return err } defer func() { - err := os.RemoveAll(tempDir) + err := os.Remove(tempFile) if err != nil { fmt.Fprintln(os.Stderr, "warning: error removing temp dir:", err) } }() - // Write the source code file. - tempFile := filepath.Join(tempDir, "generate.go") - err = ioutil.WriteFile(tempFile, []byte(src), 0600) - if err != nil { - return err - } - // Compile and run the program. cmd := exec.Command("go", "run", "-tags="+tags, tempFile) cmd.Stdout = os.Stdout