dnote/pkg/cli/scripts/build.sh
2019-08-13 12:54:06 +10:00

82 lines
1.7 KiB
Bash
Executable file

#!/usr/bin/env bash
#
# build.sh compiles dnote binary for target platforms. It is resonsible for creating
# distributable files that can be released by a human or a script.
# use: ./scripts/build.sh 0.4.8
set -eux
version=$1
projectDir="$GOPATH/src/github.com/dnote/dnote"
basedir="$GOPATH/src/github.com/dnote/dnote/pkg/cli"
outputDir="$projectDir/build/cli"
command_exists () {
command -v "$1" >/dev/null 2>&1;
}
if ! command_exists shasum; then
echo "please install shasum"
exit 1
fi
if [ $# -eq 0 ]; then
echo "no version specified."
exit 1
fi
if [[ $1 == v* ]]; then
echo "do not prefix version with v"
exit 1
fi
goVersion=1.12.x
get_binary_name() {
platform=$1
if [ "$platform" == "windows" ]; then
echo "dnote.exe"
else
echo "dnote"
fi
}
build() {
platform=$1
arch=$2
# build binary
destDir="$outputDir/$platform-$arch"
mkdir -p "$destDir"
xgo \
-go "$goVersion" \
-ldflags "-X main.apiEndpoint=https://api.dnote.io -X main.versionTag=$version" \
--targets="$platform/$arch" \
--tags "fts5" \
--dest="$destDir" \
"$basedir"
binaryName=$(get_binary_name "$platform")
mv "$destDir/cli-${platform}-"* "$destDir/$binaryName"
# build tarball
tarballName="dnote_${version}_${platform}_${arch}.tar.gz"
tarballPath="$outputDir/$tarballName"
cp "$projectDir/licenses/GPLv3.txt" "$destDir"
cp "$basedir/README.md" "$destDir"
tar -C "$destDir" -zcvf "$tarballPath" "."
rm -rf "$destDir"
# calculate checksum
pushd "$outputDir"
shasum -a 256 "$tarballName" >> "$outputDir/dnote_${version}_checksums.txt"
popd
}
# fetch tool
go get -u github.com/karalabe/xgo
build linux amd64
build darwin amd64
build windows amd64