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