env.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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. Mips64LE = GoArch("mips64le")
  22. Mips = GoArch("mips")
  23. MipsLE = GoArch("mipsle")
  24. UnknownArch = GoArch("unknown")
  25. )
  26. func parseOS(rawOS string) GoOS {
  27. osStr := strings.ToLower(rawOS)
  28. switch osStr {
  29. case "windows", "win":
  30. return Windows
  31. case "darwin", "mac", "macos", "osx":
  32. return MacOS
  33. case "linux", "debian", "ubuntu", "redhat", "centos":
  34. return Linux
  35. case "freebsd":
  36. return FreeBSD
  37. case "openbsd":
  38. return OpenBSD
  39. default:
  40. return UnknownOS
  41. }
  42. }
  43. func parseArch(rawArch string) GoArch {
  44. archStr := strings.ToLower(rawArch)
  45. switch archStr {
  46. case "x86", "386", "i386":
  47. return X86
  48. case "amd64", "x86-64", "x64":
  49. return Amd64
  50. case "arm":
  51. return Arm
  52. case "arm64":
  53. return Arm64
  54. case "mips":
  55. return Mips
  56. case "mipsle":
  57. return MipsLE
  58. case "mips64":
  59. return Mips64
  60. case "mips64le":
  61. return Mips64LE
  62. default:
  63. return UnknownArch
  64. }
  65. }
  66. func getSuffix(os GoOS, arch GoArch) string {
  67. suffix := "-custom"
  68. switch os {
  69. case Windows:
  70. switch arch {
  71. case X86:
  72. suffix = "-windows-32"
  73. case Amd64:
  74. suffix = "-windows-64"
  75. }
  76. case MacOS:
  77. suffix = "-macos"
  78. case Linux:
  79. switch arch {
  80. case X86:
  81. suffix = "-linux-32"
  82. case Amd64:
  83. suffix = "-linux-64"
  84. case Arm:
  85. suffix = "-linux-arm"
  86. case Arm64:
  87. suffix = "-linux-arm64"
  88. case Mips64:
  89. suffix = "-linux-mips64"
  90. case Mips64LE:
  91. suffix = "-linux-mips64le"
  92. case Mips:
  93. suffix = "-linux-mips"
  94. case MipsLE:
  95. suffix = "-linux-mipsle"
  96. }
  97. case FreeBSD:
  98. switch arch {
  99. case X86:
  100. suffix = "-freebsd-32"
  101. case Amd64:
  102. suffix = "-freebsd-64"
  103. case Arm:
  104. suffix = "-freebsd-arm"
  105. }
  106. case OpenBSD:
  107. switch arch {
  108. case X86:
  109. suffix = "-openbsd-32"
  110. case Amd64:
  111. suffix = "-openbsd-64"
  112. }
  113. }
  114. return suffix
  115. }