env.go 2.0 KB

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