env.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. UnknownOS = GoOS("unknown")
  12. )
  13. type GoArch string
  14. const (
  15. X86 = GoArch("386")
  16. Amd64 = GoArch("amd64")
  17. Arm = GoArch("arm")
  18. Arm64 = GoArch("arm64")
  19. Mips64 = GoArch("mips64")
  20. UnknownArch = GoArch("unknown")
  21. )
  22. func parseOS(rawOS string) GoOS {
  23. osStr := strings.ToLower(rawOS)
  24. if osStr == "windows" || osStr == "win" {
  25. return Windows
  26. }
  27. if osStr == "darwin" || osStr == "mac" || osStr == "macos" || osStr == "osx" {
  28. return MacOS
  29. }
  30. if osStr == "linux" || osStr == "debian" || osStr == "ubuntu" || osStr == "redhat" || osStr == "centos" {
  31. return Linux
  32. }
  33. if osStr == "freebsd" {
  34. return FreeBSD
  35. }
  36. return UnknownOS
  37. }
  38. func parseArch(rawArch string) GoArch {
  39. archStr := strings.ToLower(rawArch)
  40. if archStr == "x86" || archStr == "386" || archStr == "i386" {
  41. return X86
  42. }
  43. if archStr == "amd64" || archStr == "x86-64" || archStr == "x64" {
  44. return Amd64
  45. }
  46. if archStr == "arm" {
  47. return Arm
  48. }
  49. if archStr == "arm64" {
  50. return Arm64
  51. }
  52. if archStr == "mips" || archStr == "mips64" {
  53. return Mips64
  54. }
  55. return UnknownArch
  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. }
  92. return suffix
  93. }