env.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package main
  2. import (
  3. "strings"
  4. )
  5. type GoOS string
  6. const (
  7. Windows = GoOS("windows")
  8. MacOS = GoOS("darwin")
  9. Linux = GoOS("linux")
  10. FreeBSD = GoOS("freebsd")
  11. OpenBSD = GoOS("openbsd")
  12. UnknownOS = GoOS("unknown")
  13. )
  14. type GoArch string
  15. const (
  16. X86 = GoArch("386")
  17. Amd64 = GoArch("amd64")
  18. Arm = GoArch("arm")
  19. Arm64 = GoArch("arm64")
  20. Mips64 = GoArch("mips64")
  21. UnknownArch = GoArch("unknown")
  22. )
  23. func parseOS(rawOS string) GoOS {
  24. osStr := strings.ToLower(rawOS)
  25. switch osStr {
  26. case "windows", "win":
  27. return Windows
  28. case "darwin", "mac", "macos", "osx":
  29. return MacOS
  30. case "linux", "debian", "ubuntu", "redhat", "centos":
  31. return Linux
  32. case "freebsd":
  33. return FreeBSD
  34. case "openbsd":
  35. return OpenBSD
  36. default:
  37. return UnknownOS
  38. }
  39. }
  40. func parseArch(rawArch string) GoArch {
  41. archStr := strings.ToLower(rawArch)
  42. switch archStr {
  43. case "x86", "386", "i386":
  44. return X86
  45. case "amd64", "x86-64", "x64":
  46. return Amd64
  47. case "arm":
  48. return Arm
  49. case "arm64":
  50. return Arm64
  51. case "mips", "mips64":
  52. return Mips64
  53. default:
  54. return UnknownArch
  55. }
  56. }
  57. func getSuffix(os GoOS, arch GoArch) string {
  58. suffix := "-custom"
  59. switch os {
  60. case Windows:
  61. switch arch {
  62. case X86:
  63. suffix = "-windows-32"
  64. case Amd64:
  65. suffix = "-windows-64"
  66. }
  67. case MacOS:
  68. suffix = "-macos"
  69. case Linux:
  70. switch arch {
  71. case X86:
  72. suffix = "-linux-32"
  73. case Amd64:
  74. suffix = "-linux-64"
  75. case Arm:
  76. suffix = "-linux-arm"
  77. case Arm64:
  78. suffix = "-linux-arm64"
  79. case Mips64:
  80. suffix = "-linux-mips64"
  81. }
  82. case FreeBSD:
  83. switch arch {
  84. case X86:
  85. suffix = "-freebsd-32"
  86. case Amd64:
  87. suffix = "-freebsd-64"
  88. case Arm:
  89. suffix = "-freebsd-arm"
  90. }
  91. case OpenBSD:
  92. switch arch {
  93. case X86:
  94. suffix = "-openbsd-32"
  95. case Amd64:
  96. suffix = "-openbsd-64"
  97. }
  98. }
  99. return suffix
  100. }