Quellcode durchsuchen

fix dockerfile generation

kevin vor 4 Jahren
Ursprung
Commit
7b17b3604a
3 geänderte Dateien mit 31 neuen und 22 gelöschten Zeilen
  1. 3 3
      tools/goctl/Makefile
  2. 21 18
      tools/goctl/api/gogen/gen.go
  3. 7 1
      tools/goctl/gen/dockerfile.go

+ 3 - 3
tools/goctl/Makefile

@@ -3,8 +3,8 @@ version := $(shell /bin/date "+%Y-%m-%d %H:%M")
 build:
 	go build -ldflags="-s -w" -ldflags="-X 'main.BuildTime=$(version)'" goctl.go && upx goctl
 mac:
-	GOOS=darwin go build -ldflags="-s -w" -ldflags="-X 'main.BuildTime=$(version)'" -o goctl-darwin goctl.go
+	GOOS=darwin go build -ldflags="-s -w" -ldflags="-X 'main.BuildTime=$(version)'" -o goctl-darwin goctl.go && upx goctl-darwin
 win:
-	GOOS=windows go build -ldflags="-s -w" -ldflags="-X 'main.BuildTime=$(version)'" -o goctl.exe goctl.go
+	GOOS=windows go build -ldflags="-s -w" -ldflags="-X 'main.BuildTime=$(version)'" -o goctl.exe goctl.go && upx goctl.exe
 linux:
-	GOOS=linux go build -ldflags="-s -w" -ldflags="-X 'main.BuildTime=$(version)'" -o goctl-linux goctl.go
+	GOOS=linux go build -ldflags="-s -w" -ldflags="-X 'main.BuildTime=$(version)'" -o goctl-linux goctl.go && upx goctl-linux

+ 21 - 18
tools/goctl/api/gogen/gen.go

@@ -141,23 +141,26 @@ func createGoModFileIfNeed(dir string) {
 	}
 
 	_, hasGoMod := util.FindGoModPath(dir)
-	if !hasGoMod {
-		gopath := os.Getenv("GOPATH")
-		parent := path.Join(gopath, "src")
-		pos := strings.Index(absDir, parent)
-		if pos < 0 {
-			moduleName := absDir[len(filepath.Dir(absDir))+1:]
-			cmd := exec.Command("go", "mod", "init", moduleName)
-			cmd.Dir = dir
-			var stdout, stderr bytes.Buffer
-			cmd.Stdout = &stdout
-			cmd.Stderr = &stderr
-			err := cmd.Run()
-			if err != nil {
-				fmt.Println(err.Error())
-			}
-			outStr, errStr := string(stdout.Bytes()), string(stderr.Bytes())
-			fmt.Printf(outStr + "\n" + errStr)
-		}
+	if hasGoMod {
+		return
+	}
+
+	gopath := os.Getenv("GOPATH")
+	parent := path.Join(gopath, "src")
+	pos := strings.Index(absDir, parent)
+	if pos >= 0 {
+		return
+	}
+
+	moduleName := absDir[len(filepath.Dir(absDir))+1:]
+	cmd := exec.Command("go", "mod", "init", moduleName)
+	cmd.Dir = dir
+	var stdout, stderr bytes.Buffer
+	cmd.Stdout = &stdout
+	cmd.Stderr = &stderr
+	if err = cmd.Run(); err != nil {
+		fmt.Println(err.Error())
 	}
+	outStr, errStr := string(stdout.Bytes()), string(stderr.Bytes())
+	fmt.Printf(outStr + "\n" + errStr)
 }

+ 7 - 1
tools/goctl/gen/dockerfile.go

@@ -1,6 +1,7 @@
 package gen
 
 import (
+	"path/filepath"
 	"strings"
 	"text/template"
 
@@ -9,11 +10,16 @@ import (
 )
 
 func GenerateDockerfile(goFile string, args ...string) error {
-	projPath, err := getFilePath(goFile)
+	projPath, err := getFilePath(filepath.Dir(goFile))
 	if err != nil {
 		return err
 	}
 
+	pos := strings.IndexByte(projPath, '/')
+	if pos >= 0 {
+		projPath = projPath[pos+1:]
+	}
+
 	out, err := util.CreateIfNotExist("Dockerfile")
 	if err != nil {
 		return err