makefile.go 938 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package gen
  2. import (
  3. "strings"
  4. "text/template"
  5. "zero/tools/goctl/util"
  6. )
  7. func GenerateMakefile(goFile, namespace string) error {
  8. relPath, err := util.PathFromGoSrc()
  9. if err != nil {
  10. return err
  11. }
  12. movePath, err := getMovePath()
  13. if err != nil {
  14. return err
  15. }
  16. out, err := util.CreateIfNotExist("Makefile")
  17. if err != nil {
  18. return err
  19. }
  20. defer out.Close()
  21. t := template.Must(template.New("makefile").Parse(makefileTemplate))
  22. return t.Execute(out, map[string]string{
  23. "rootRelPath": movePath,
  24. "relPath": relPath,
  25. "exeFile": util.FileNameWithoutExt(goFile),
  26. "namespace": namespace,
  27. })
  28. }
  29. func getMovePath() (string, error) {
  30. relPath, err := util.PathFromGoSrc()
  31. if err != nil {
  32. return "", err
  33. }
  34. var builder strings.Builder
  35. for range strings.Split(relPath, "/") {
  36. builder.WriteString("../")
  37. }
  38. if move := builder.String(); len(move) == 0 {
  39. return ".", nil
  40. } else {
  41. return move, nil
  42. }
  43. }