mirror of
https://github.com/blacktop/ipsw.git
synced 2026-05-08 12:22:26 +00:00
34 lines
875 B
Bash
Executable File
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
|