50 lines
1.1 KiB
Bash
Executable File
50 lines
1.1 KiB
Bash
Executable File
#! /usr/bin/env sh
|
|
|
|
SRC=cmd/dischord/*.go
|
|
BUILDDIR="build"
|
|
|
|
BUILD_CMDS=""
|
|
|
|
BUILDS=0
|
|
DONE=0
|
|
|
|
[ "$1" = "clean" ] && echo "Cleaning $BUILDDIR" && rm -rf "$BUILDDIR" && exit 0
|
|
|
|
do_build() {
|
|
[ "$OS" = "windows" ] && EXT=".exe"
|
|
env GOOS="$OS" GOARCH="$ARCH" CGO_ENABLED=0 go build -ldflags "-s -w" -o "$BUILDDIR/$NAME$EXT" $SRC
|
|
}
|
|
|
|
add() {
|
|
BUILDS=$((BUILDS+1))
|
|
BUILD_CMDS=$(printf "%s\n%s" "$BUILD_CMDS" "$1 $2 $3")
|
|
}
|
|
|
|
build() {
|
|
mkdir -p "$BUILDDIR"
|
|
BUILD_CMDS="$(printf "%s" "$BUILD_CMDS" | grep '.')"
|
|
while IFS= read -r l; do
|
|
OS=$(echo $l|cut -d\ -f1)
|
|
ARCH=$(echo $l|cut -d\ -f2)
|
|
NAME=$(echo $l|cut -d\ -f3)
|
|
echo "Building for $OS on $ARCH"
|
|
printf "%s\r" "Progress: $((DONE*100/BUILDS))%"
|
|
do_build
|
|
DONE=$((DONE+1))
|
|
done << EOF
|
|
$BUILD_CMDS
|
|
EOF
|
|
echo "Progress: DONE"
|
|
}
|
|
|
|
# see `go tool dist list` for possible configs
|
|
add linux 386 dischord-linux-x86
|
|
add linux amd64 dischord-linux-amd64
|
|
add linux arm dischord-linux-arm32
|
|
add linux arm64 dischord-linux-arm64
|
|
add darwin arm64 dischord-macos-apple-silicon
|
|
add darwin amd64 dischord-macos-intel
|
|
add windows 386 dischord-windows-x86
|
|
add windows amd64 dischord-windows-amd64
|
|
build
|