mirror of
https://github.com/Bornholm/formidable.git
synced 2024-12-23 07:19:33 +01:00
104 lines
2.1 KiB
Plaintext
104 lines
2.1 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
set -xeo pipefail
|
||
|
|
||
|
OS_TARGETS=(linux)
|
||
|
ARCH_TARGETS=${ARCH_TARGETS:-amd64}
|
||
|
ARM_TARGETS=${ARM_TARGETS:-5 6 7}
|
||
|
|
||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||
|
PROJECT_DIR="$DIR/../.."
|
||
|
|
||
|
function build {
|
||
|
local name=$1
|
||
|
local srcdir=$2
|
||
|
local os=$3
|
||
|
local arch=$4
|
||
|
|
||
|
local dirname="$name-$os-$arch$GOARM"
|
||
|
local destdir="$PROJECT_DIR/release/$dirname"
|
||
|
|
||
|
rm -rf "$destdir"
|
||
|
mkdir -p "$destdir"
|
||
|
|
||
|
echo "building $dirname..."
|
||
|
|
||
|
CGO_ENABLED=0 GOOS="$os" GOARCH="$arch" go build \
|
||
|
-ldflags="-s -w -X 'main.GitRef=$(current_commit_ref)' -X 'main.ProjectVersion=$(current_version)' -X 'main.BuildDate=$(current_date)'" \
|
||
|
-gcflags=-trimpath="${PWD}" \
|
||
|
-asmflags=-trimpath="${PWD}" \
|
||
|
-o "$destdir/bin/$name" \
|
||
|
"$srcdir"
|
||
|
|
||
|
if [ ! -z "$(which upx)" ]; then
|
||
|
upx --brute -9 "$destdir/bin/$name"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
function current_date {
|
||
|
date '+%Y-%m-%d %H:%M'
|
||
|
}
|
||
|
|
||
|
function current_commit_ref {
|
||
|
git log -n 1 --pretty="format:%h"
|
||
|
}
|
||
|
|
||
|
function current_version {
|
||
|
local latest_tag=$(git describe --abbrev=0 | rev | cut -d '/' -f 1 | rev)
|
||
|
echo ${latest_tag:-0.0.0}
|
||
|
}
|
||
|
|
||
|
function copy {
|
||
|
local name=$1
|
||
|
local os=$2
|
||
|
local arch=$3
|
||
|
local src=$4
|
||
|
local dest=$5
|
||
|
|
||
|
local dirname="$name-$os-$arch$GOARM"
|
||
|
local destdir="$PROJECT_DIR/release/$dirname"
|
||
|
|
||
|
echo "copying '$src' to '$destdir/$dest'..."
|
||
|
|
||
|
mkdir -p "$(dirname $destdir/$dest)"
|
||
|
|
||
|
cp -rfL $src "$destdir/$dest"
|
||
|
}
|
||
|
|
||
|
function compress {
|
||
|
local name=$1
|
||
|
local os=$2
|
||
|
local arch=$3
|
||
|
|
||
|
local dirname="$name-$os-$arch$GOARM"
|
||
|
local destdir="$PROJECT_DIR/release/$dirname"
|
||
|
|
||
|
echo "compressing $dirname..."
|
||
|
tar -czf "$destdir.tar.gz" -C "$destdir/../" "$dirname"
|
||
|
}
|
||
|
|
||
|
function release_frmd {
|
||
|
local os=$1
|
||
|
local arch=$2
|
||
|
|
||
|
build 'frmd' "$PROJECT_DIR/cmd/frmd" $os $arch
|
||
|
copy 'frmd' $os $arch "$PROJECT_DIR/README.md" "README.md"
|
||
|
|
||
|
compress 'frmd' $os $arch
|
||
|
}
|
||
|
|
||
|
function main {
|
||
|
for os in ${OS_TARGETS[@]}; do
|
||
|
for arch in ${ARCH_TARGETS[@]}; do
|
||
|
if [ "$arch" == "arm" ]; then
|
||
|
for arm_target in $ARM_TARGETS; do
|
||
|
GOARM=$arm_target release_frmd $os $arch
|
||
|
done
|
||
|
else
|
||
|
release_frmd $os $arch
|
||
|
fi
|
||
|
done
|
||
|
done
|
||
|
}
|
||
|
|
||
|
main
|