Files
ozu.io/package.sh

73 lines
1.6 KiB
Bash
Executable File

#! /usr/bin/env bash
set -e
shopt -s extglob
main() {
local name="ozuio"
local platforms=(
darwin-386 darwin-amd64
freebsd-386 freebsd-amd64 freebsd-arm
linux-386 linux-amd64 linux-arm
netbsd-386 netbsd-amd64 netbsd-arm
openbsd-386 openbsd-amd64
solaris-amd64
windows-386 windows-amd64
)
local builddir="build"
local outputdir="pkg"
local version
version="$(get-version)"
local workdir="${builddir}/${version}"
mkdir -p "$workdir"
for platform in "${platforms[@]}"; do
if [[ "$platform" =~ ^(.+)-(.+)$ ]]; then
local os="${BASH_REMATCH[1]}"
local arch="${BASH_REMATCH[2]}"
local pkg="${name}_${version}_${os}_${arch}"
local pkgdir="${workdir}/${pkg}"
local binary="${pkgdir}/${name}"
if [ "$os" == "windows" ]; then
binary="${binary}.exe"
fi
echo "building $pkg"
GOOS="$os" GOARCH="$arch" go build -o "$binary" \
-ldflags "-X main.Version=${version}"
cp "README.md" "${pkgdir}/"
mkdir -p "${outputdir}/${version}"
if [ "$os" == "windows" ]; then
local archive="${outputdir}/${version}/${pkg}.zip"
echo "creating ${archive}"
local cwd="$(pwd)"
cd "$workdir"
zip -r "../../$archive" "$pkg"
cd "$cwd"
else
local archive="${outputdir}/${version}/${pkg}.tar.gz"
echo "creating ${archive}"
tar -C "$workdir" -czf "$archive" "$pkg"
fi
fi
done
}
get-version() {
trim "$(cat "VERSION")"
}
trim() {
local string="$@"
string="${string#"${string%%[![:space:]]*}"}"
string="${string%"${string##*[![:space:]]}"}"
echo -n "$string"
}
main