path.go 734 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package util
  2. import (
  3. "fmt"
  4. "os"
  5. "path"
  6. "strings"
  7. "github.com/tal-tech/go-zero/tools/goctl/vars"
  8. )
  9. const pkgSep = "/"
  10. func JoinPackages(pkgs ...string) string {
  11. return strings.Join(pkgs, pkgSep)
  12. }
  13. func MkdirIfNotExist(dir string) error {
  14. if len(dir) == 0 {
  15. return nil
  16. }
  17. if _, err := os.Stat(dir); os.IsNotExist(err) {
  18. return os.MkdirAll(dir, os.ModePerm)
  19. }
  20. return nil
  21. }
  22. func PathFromGoSrc() (string, error) {
  23. dir, err := os.Getwd()
  24. if err != nil {
  25. return "", err
  26. }
  27. gopath := os.Getenv("GOPATH")
  28. parent := path.Join(gopath, "src", vars.ProjectName)
  29. pos := strings.Index(dir, parent)
  30. if pos < 0 {
  31. return "", fmt.Errorf("%s is not in GOPATH", dir)
  32. }
  33. // skip slash
  34. return dir[len(parent)+1:], nil
  35. }