git.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package git
  2. import (
  3. "os"
  4. "os/exec"
  5. "path/filepath"
  6. "strings"
  7. )
  8. const (
  9. VersionUndefined = "undefined"
  10. )
  11. func getRepoRoot() string {
  12. GOPATH := os.Getenv("GOPATH")
  13. return filepath.Join(GOPATH, "src", "v2ray.com", "core")
  14. }
  15. func RevParse(args ...string) (string, error) {
  16. args = append([]string{"rev-parse"}, args...)
  17. cmd := exec.Command("git", args...)
  18. cmd.Dir = getRepoRoot()
  19. output, err := cmd.Output()
  20. if err != nil {
  21. return "", err
  22. }
  23. return strings.TrimSpace(string(output)), nil
  24. }
  25. func NameRev(args ...string) (string, error) {
  26. args = append([]string{"name-rev"}, args...)
  27. cmd := exec.Command("git", args...)
  28. cmd.Dir = getRepoRoot()
  29. output, err := cmd.Output()
  30. if err != nil {
  31. return "", err
  32. }
  33. return strings.TrimSpace(string(output)), nil
  34. }
  35. func RepoVersion(rev string) (string, error) {
  36. rev, err := RevParse(rev)
  37. if err != nil {
  38. return "", err
  39. }
  40. version, err := NameRev("name-rev", "--tags", "--name-only", rev)
  41. if err != nil {
  42. return "", err
  43. }
  44. if strings.HasSuffix(version, "^0") {
  45. version = version[:len(version)-2]
  46. }
  47. return version, nil
  48. }
  49. func RepoVersionHead() (string, error) {
  50. return RepoVersion("HEAD")
  51. }