Files

58 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
export DOCKER_BUILDKIT=1
repository_root=$(cd "$(dirname "$0")/.." && pwd)
output_directory="${THT_THT_OUTPUT_DIRECTORY:-$repository_root/dist/tht}"
build_commit=$(git -C "$repository_root" rev-parse HEAD)
build_time=$(git -C "$repository_root" show -s --format=%cI HEAD)
if ! build_version=$(git -C "$repository_root" describe --tags --exact-match HEAD 2>/dev/null); then
build_version=0.0.0-dev
fi
usage() {
cat <<'EOF'
Usage: bash scripts/build-tht.sh [--all] [--output ABSOLUTE_DIRECTORY]
Build every supported native tht binary with the repository-pinned Docker builder.
EOF
}
while [[ $# -gt 0 ]]; do
case "$1" in
--all)
;;
--output)
[[ $# -ge 2 ]] || { echo "--output requires an absolute directory" >&2; exit 2; }
output_directory=$2
shift
;;
--help|-h)
usage
exit 0
;;
*)
echo "unknown argument: $1" >&2
usage >&2
exit 2
;;
esac
shift
done
if [[ "$output_directory" != /* || "$output_directory" == / || "$output_directory" == */ ||
"$output_directory" == *//* || "/$output_directory/" == */../* ||
"/$output_directory/" == */./* ]]; then
echo "THT_THT_OUTPUT_DIRECTORY must be an absolute canonical path" >&2
exit 2
fi
mkdir -p "$output_directory"
docker build \
--build-arg "THT_VERSION=$build_version" \
--build-arg "THT_COMMIT=$build_commit" \
--build-arg "THT_BUILD_TIME=$build_time" \
--file "$repository_root/docker/tht.Dockerfile" \
--output "type=local,dest=$output_directory" \
"$repository_root"