#!/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"