| Josh Bleecher Snyder | 6ae637a | 2025-07-09 12:41:56 -0700 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | set -e |
| 3 | |
| Philip Zeyliger | 09b86f4 | 2025-07-16 16:23:03 -0700 | [diff] [blame] | 4 | echo "[$(date '+%H:%M:%S')] Starting webui build..." |
| 5 | |
| Josh Bleecher Snyder | 39eb24f | 2025-07-10 01:46:33 +0000 | [diff] [blame] | 6 | # Use a content-based hash of the webui dir to avoid unnecessary rebuilds. |
| 7 | OUTPUT_DIR="embedded/webui-dist" |
| 8 | # go:embed ignores files that start with a '.' |
| 9 | HASH_FILE="$OUTPUT_DIR/.input_hash" |
| 10 | |
| 11 | calculate_input_hash() { |
| 12 | local tmp=$(mktemp) |
| 13 | ( |
| 14 | export GIT_INDEX_FILE="$tmp" |
| 15 | git read-tree --empty |
| 16 | git add webui/ |
| 17 | git write-tree |
| 18 | ) |
| 19 | rm -f "$tmp" |
| 20 | } |
| 21 | |
| 22 | CURRENT_HASH=$(calculate_input_hash) |
| 23 | |
| 24 | if [ -f "$HASH_FILE" ] && [ -d "$OUTPUT_DIR" ]; then |
| 25 | STORED_HASH=$(cat "$HASH_FILE") |
| 26 | if [ "$CURRENT_HASH" = "$STORED_HASH" ]; then |
| Philip Zeyliger | 09b86f4 | 2025-07-16 16:23:03 -0700 | [diff] [blame] | 27 | echo "No changes, skipping rebuild" |
| Josh Bleecher Snyder | 39eb24f | 2025-07-10 01:46:33 +0000 | [diff] [blame] | 28 | exit 0 |
| 29 | fi |
| 30 | fi |
| 31 | |
| Philip Zeyliger | 09b86f4 | 2025-07-16 16:23:03 -0700 | [diff] [blame] | 32 | echo "[$(date '+%H:%M:%S')] Removing old output directory..." |
| Josh Bleecher Snyder | 39eb24f | 2025-07-10 01:46:33 +0000 | [diff] [blame] | 33 | rm -rf "$OUTPUT_DIR" |
| Philip Zeyliger | 09b86f4 | 2025-07-16 16:23:03 -0700 | [diff] [blame] | 34 | echo "[$(date '+%H:%M:%S')] Running genwebui..." |
| Josh Bleecher Snyder | 39eb24f | 2025-07-10 01:46:33 +0000 | [diff] [blame] | 35 | unset GOOS GOARCH && go run ./cmd/genwebui -- "$OUTPUT_DIR" |
| 36 | echo "$CURRENT_HASH" >"$HASH_FILE" |
| Philip Zeyliger | 09b86f4 | 2025-07-16 16:23:03 -0700 | [diff] [blame] | 37 | echo "[$(date '+%H:%M:%S')] Webui build completed" |