2015-10-17 18:50:51 -04:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
|
|
|
type GoOS string
|
|
|
|
|
|
|
|
const (
|
|
|
|
Windows = GoOS("windows")
|
|
|
|
MacOS = GoOS("darwin")
|
|
|
|
Linux = GoOS("linux")
|
2016-07-27 10:56:32 -04:00
|
|
|
FreeBSD = GoOS("freebsd")
|
2016-10-17 08:41:54 -04:00
|
|
|
OpenBSD = GoOS("openbsd")
|
2015-10-17 18:50:51 -04:00
|
|
|
UnknownOS = GoOS("unknown")
|
|
|
|
)
|
|
|
|
|
|
|
|
type GoArch string
|
|
|
|
|
|
|
|
const (
|
|
|
|
X86 = GoArch("386")
|
|
|
|
Amd64 = GoArch("amd64")
|
|
|
|
Arm = GoArch("arm")
|
|
|
|
Arm64 = GoArch("arm64")
|
2016-02-20 06:32:42 -05:00
|
|
|
Mips64 = GoArch("mips64")
|
2017-02-17 04:22:38 -05:00
|
|
|
Mips64LE = GoArch("mips64le")
|
2017-01-09 09:47:10 -05:00
|
|
|
Mips = GoArch("mips")
|
|
|
|
MipsLE = GoArch("mipsle")
|
2015-10-17 18:50:51 -04:00
|
|
|
UnknownArch = GoArch("unknown")
|
|
|
|
)
|
|
|
|
|
|
|
|
func parseOS(rawOS string) GoOS {
|
|
|
|
osStr := strings.ToLower(rawOS)
|
2016-12-21 10:44:59 -05:00
|
|
|
switch osStr {
|
|
|
|
case "windows", "win":
|
2015-10-17 18:50:51 -04:00
|
|
|
return Windows
|
2016-12-21 10:44:59 -05:00
|
|
|
case "darwin", "mac", "macos", "osx":
|
2015-10-17 18:50:51 -04:00
|
|
|
return MacOS
|
2016-12-21 10:44:59 -05:00
|
|
|
case "linux", "debian", "ubuntu", "redhat", "centos":
|
2015-10-17 18:50:51 -04:00
|
|
|
return Linux
|
2016-12-21 10:44:59 -05:00
|
|
|
case "freebsd":
|
2016-07-27 10:56:32 -04:00
|
|
|
return FreeBSD
|
2016-12-21 10:44:59 -05:00
|
|
|
case "openbsd":
|
2016-10-17 08:41:54 -04:00
|
|
|
return OpenBSD
|
2016-12-21 10:44:59 -05:00
|
|
|
default:
|
|
|
|
return UnknownOS
|
2016-10-17 08:41:54 -04:00
|
|
|
}
|
2015-10-17 18:50:51 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
func parseArch(rawArch string) GoArch {
|
|
|
|
archStr := strings.ToLower(rawArch)
|
2016-12-21 10:44:59 -05:00
|
|
|
switch archStr {
|
|
|
|
case "x86", "386", "i386":
|
2015-10-17 18:50:51 -04:00
|
|
|
return X86
|
2016-12-21 10:44:59 -05:00
|
|
|
case "amd64", "x86-64", "x64":
|
2015-10-17 18:50:51 -04:00
|
|
|
return Amd64
|
2016-12-21 10:44:59 -05:00
|
|
|
case "arm":
|
2015-10-17 18:50:51 -04:00
|
|
|
return Arm
|
2016-12-21 10:44:59 -05:00
|
|
|
case "arm64":
|
2015-10-17 18:50:51 -04:00
|
|
|
return Arm64
|
2017-01-09 09:47:10 -05:00
|
|
|
case "mips":
|
|
|
|
return Mips
|
|
|
|
case "mipsle":
|
|
|
|
return MipsLE
|
|
|
|
case "mips64":
|
2016-02-20 06:32:42 -05:00
|
|
|
return Mips64
|
2017-02-17 04:22:38 -05:00
|
|
|
case "mips64le":
|
|
|
|
return Mips64LE
|
2016-12-21 10:44:59 -05:00
|
|
|
default:
|
|
|
|
return UnknownArch
|
2016-02-20 06:32:42 -05:00
|
|
|
}
|
2015-10-17 18:50:51 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
func getSuffix(os GoOS, arch GoArch) string {
|
|
|
|
suffix := "-custom"
|
|
|
|
switch os {
|
|
|
|
case Windows:
|
|
|
|
switch arch {
|
|
|
|
case X86:
|
|
|
|
suffix = "-windows-32"
|
|
|
|
case Amd64:
|
|
|
|
suffix = "-windows-64"
|
|
|
|
}
|
|
|
|
case MacOS:
|
|
|
|
suffix = "-macos"
|
|
|
|
case Linux:
|
|
|
|
switch arch {
|
|
|
|
case X86:
|
|
|
|
suffix = "-linux-32"
|
|
|
|
case Amd64:
|
|
|
|
suffix = "-linux-64"
|
|
|
|
case Arm:
|
|
|
|
suffix = "-linux-arm"
|
|
|
|
case Arm64:
|
|
|
|
suffix = "-linux-arm64"
|
2016-02-20 06:32:42 -05:00
|
|
|
case Mips64:
|
|
|
|
suffix = "-linux-mips64"
|
2017-02-17 04:22:38 -05:00
|
|
|
case Mips64LE:
|
|
|
|
suffix = "-linux-mips64le"
|
2017-01-09 09:47:10 -05:00
|
|
|
case Mips:
|
|
|
|
suffix = "-linux-mips"
|
|
|
|
case MipsLE:
|
|
|
|
suffix = "-linux-mipsle"
|
2015-10-17 18:50:51 -04:00
|
|
|
}
|
2016-07-27 10:56:32 -04:00
|
|
|
case FreeBSD:
|
|
|
|
switch arch {
|
|
|
|
case X86:
|
|
|
|
suffix = "-freebsd-32"
|
|
|
|
case Amd64:
|
|
|
|
suffix = "-freebsd-64"
|
|
|
|
case Arm:
|
|
|
|
suffix = "-freebsd-arm"
|
|
|
|
}
|
2016-10-17 09:23:45 -04:00
|
|
|
case OpenBSD:
|
|
|
|
switch arch {
|
|
|
|
case X86:
|
|
|
|
suffix = "-openbsd-32"
|
|
|
|
case Amd64:
|
|
|
|
suffix = "-openbsd-64"
|
|
|
|
}
|
2015-10-17 18:50:51 -04:00
|
|
|
}
|
2016-10-17 09:23:45 -04:00
|
|
|
|
2015-10-17 18:50:51 -04:00
|
|
|
return suffix
|
|
|
|
}
|