env.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. UnknownOS = GoOS("unknown")
  11. )
  12. type GoArch string
  13. const (
  14. X86 = GoArch("386")
  15. Amd64 = GoArch("amd64")
  16. Arm = GoArch("arm")
  17. Arm64 = GoArch("arm64")
  18. UnknownArch = GoArch("unknown")
  19. )
  20. func parseOS(rawOS string) GoOS {
  21. osStr := strings.ToLower(rawOS)
  22. if osStr == "windows" || osStr == "win" {
  23. return Windows
  24. }
  25. if osStr == "darwin" || osStr == "mac" || osStr == "macos" || osStr == "osx" {
  26. return MacOS
  27. }
  28. if osStr == "linux" || osStr == "debian" || osStr == "ubuntu" || osStr == "redhat" || osStr == "centos" {
  29. return Linux
  30. }
  31. return UnknownOS
  32. }
  33. func parseArch(rawArch string) GoArch {
  34. archStr := strings.ToLower(rawArch)
  35. if archStr == "x86" || archStr == "386" || archStr == "i386" {
  36. return X86
  37. }
  38. if archStr == "amd64" || archStr == "x86-64" || archStr == "x64" {
  39. return Amd64
  40. }
  41. if archStr == "arm" {
  42. return Arm
  43. }
  44. if archStr == "arm64" {
  45. return Arm64
  46. }
  47. return UnknownArch
  48. }
  49. func getSuffix(os GoOS, arch GoArch) string {
  50. suffix := "-custom"
  51. switch os {
  52. case Windows:
  53. switch arch {
  54. case X86:
  55. suffix = "-windows-32"
  56. case Amd64:
  57. suffix = "-windows-64"
  58. }
  59. case MacOS:
  60. suffix = "-macos"
  61. case Linux:
  62. switch arch {
  63. case X86:
  64. suffix = "-linux-32"
  65. case Amd64:
  66. suffix = "-linux-64"
  67. case Arm:
  68. suffix = "-linux-arm"
  69. case Arm64:
  70. suffix = "-linux-arm64"
  71. }
  72. }
  73. return suffix
  74. }