diff --git a/go-executable-build.sh b/go-executable-build.sh new file mode 100755 index 0000000..e87c117 --- /dev/null +++ b/go-executable-build.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +package=$1 +if [[ -z "$package" ]]; then + echo "usage: $0 " + exit 1 +fi +package_name=$package + +#the full list of the platforms: https://golang.org/doc/install/source#environment +platforms=( +#"darwin/386" +#"darwin/amd64" +#"darwin/arm" +#"darwin/arm64" +#"dragonfly/amd64" +#"freebsd/386" +#"freebsd/amd64" +#"freebsd/arm" +#"linux/386" +"linux/amd64" +#"linux/arm" +#"linux/arm64" +#"netbsd/386" +#"netbsd/amd64" +#"netbsd/arm" +#"openbsd/386" +#"openbsd/amd64" +#"openbsd/arm" +#"plan9/386" +#"plan9/amd64" +#"solaris/amd64" +#"windows/amd64" +#"windows/386" +) + +for platform in "${platforms[@]}" +do + platform_split=(${platform//\// }) + GOOS=${platform_split[0]} + GOARCH=${platform_split[1]} + output_name=$package_name'-'$GOOS'-'$GOARCH + if [ $GOOS = "windows" ]; then + output_name+='.exe' + fi + + env GOOS=$GOOS GOARCH=$GOARCH go build -o $output_name $package + if [ $? -ne 0 ]; then + echo 'An error has occurred! Aborting the script execution...' + exit 1 + fi +done