| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | package mainimport (	"strings")type GoOS stringconst (	Windows   = GoOS("windows")	MacOS     = GoOS("darwin")	Linux     = GoOS("linux")	FreeBSD   = GoOS("freebsd")	OpenBSD   = GoOS("openbsd")	UnknownOS = GoOS("unknown"))type GoArch stringconst (	X86         = GoArch("386")	Amd64       = GoArch("amd64")	Arm         = GoArch("arm")	Arm64       = GoArch("arm64")	Mips64      = GoArch("mips64")	UnknownArch = GoArch("unknown"))func parseOS(rawOS string) GoOS {	osStr := strings.ToLower(rawOS)	if osStr == "windows" || osStr == "win" {		return Windows	}	if osStr == "darwin" || osStr == "mac" || osStr == "macos" || osStr == "osx" {		return MacOS	}	if osStr == "linux" || osStr == "debian" || osStr == "ubuntu" || osStr == "redhat" || osStr == "centos" {		return Linux	}	if osStr == "freebsd" {		return FreeBSD	}	if osStr == "openbsd" {		return OpenBSD	}	return UnknownOS}func parseArch(rawArch string) GoArch {	archStr := strings.ToLower(rawArch)	if archStr == "x86" || archStr == "386" || archStr == "i386" {		return X86	}	if archStr == "amd64" || archStr == "x86-64" || archStr == "x64" {		return Amd64	}	if archStr == "arm" {		return Arm	}	if archStr == "arm64" {		return Arm64	}	if archStr == "mips" || archStr == "mips64" {		return Mips64	}	return UnknownArch}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"		case Mips64:			suffix = "-linux-mips64"		}	case FreeBSD:		switch arch {		case X86:			suffix = "-freebsd-32"		case Amd64:			suffix = "-freebsd-64"		case Arm:			suffix = "-freebsd-arm"		}	}	return suffix}
 |