Files
2026-02-24 13:09:02 -07:00

34 lines
875 B
Bash
Executable File

#!/bin/sh
set -eu
find ./pkg ./internal/download -type f -name '*.json' | while IFS= read -r item; do
printf "Minimizing JSON: %s\n" "$item"
item_dir="$(dirname "$item")"
item_base="$(basename -- "$item" .json)"
tmp_json="$(mktemp "$item_dir/$item_base.json.tmp.XXXXXX")"
tmp_gz="$(mktemp "$item_dir/$item_base.gz.tmp.XXXXXX")"
out_gz="$item_dir/$item_base.gz"
fail() {
echo "ERROR: $1" >&2
rm -f "$tmp_json" "$tmp_gz"
exit 1
}
# NOTE: jq returns success for empty input and writes no bytes; explicitly reject that.
if ! jq -c --sort-keys . "$item" >"$tmp_json"; then
fail "failed to parse JSON: $item"
fi
if [ ! -s "$tmp_json" ]; then
fail "minimized JSON is empty for $item"
fi
if ! gzip -cn "$tmp_json" >"$tmp_gz"; then
fail "failed to gzip JSON: $item"
fi
mv "$tmp_json" "$item"
mv "$tmp_gz" "$out_gz"
done