58 lines
1.5 KiB
Bash
Executable File
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"
|