diff --git a/build-metrics.sh b/build-metrics.sh new file mode 100755 index 0000000..cf12774 --- /dev/null +++ b/build-metrics.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +set -euo pipefail + +METRICS_FILE="build-metrics-$(date +%Y%m%d-%H%M%S).log" +START_TIME=$(date +%s) + +log_metric() { + local stage="$1" + local elapsed=$(( $(date +%s) - START_TIME )) + local elapsed_min=$(echo "scale=2; $elapsed / 60" | bc) + echo "[$(date +%H:%M:%S)] [${elapsed}s / ${elapsed_min}m] ${stage}" | tee -a "$METRICS_FILE" +} + +run_stage() { + local stage="$1" + shift + log_metric "START: ${stage}" + "$@" + log_metric "END: ${stage}" +} + +if [ $# -eq 0 ]; then + echo "Usage: $0 [args...]" + echo "Records elapsed time and logs build stage performance." + echo + echo "Example:" + echo " source build-metrics.sh" + echo " run_stage 'Building ISO' ./mkarchiso.sh" + exit 0 +fi + +run_stage "$@" diff --git a/build.sh b/build.sh index 163f89a..365cf52 100755 --- a/build.sh +++ b/build.sh @@ -1,4 +1,12 @@ - ./refresh.sh -j && ./mkarchiso.sh -# sudo rm /var/cache/pacman/pkg/* -sudo rm -rf ./work +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +source "${SCRIPT_DIR}/build-metrics.sh" + +run_stage "Clean workspace" ./refresh.sh -j +run_stage "Build ISO" ./mkarchiso.sh +run_stage "Clean build artifacts" sudo rm -rf ./work + +log_metric "BUILD COMPLETE"