mirror of
https://github.com/blacktop/ipsw.git
synced 2026-05-08 12:22:26 +00:00
102 lines
2.2 KiB
Bash
Executable File
102 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
if [[ "${TRACE-0}" == "1" ]]; then
|
|
set -o xtrace
|
|
fi
|
|
|
|
# Colors
|
|
export ESC_SEQ="\x1b["
|
|
export COL_RESET=$ESC_SEQ"39;49;00m"
|
|
export COL_RED=$ESC_SEQ"31;01m"
|
|
export COL_GREEN=$ESC_SEQ"32;01m"
|
|
export COL_YELLOW=$ESC_SEQ"33;01m"
|
|
export COL_BLUE=$ESC_SEQ"34;01m"
|
|
export COL_MAGENTA=$ESC_SEQ"35;01m"
|
|
export COL_CYAN=$ESC_SEQ"36;01m"
|
|
|
|
function running() {
|
|
echo -e "$COL_MAGENTA ⇒ $COL_RESET""$1"
|
|
}
|
|
|
|
function info() {
|
|
echo -e "$COL_BLUE[info] $COL_RESET""$1"
|
|
}
|
|
|
|
function error() {
|
|
echo -e "$COL_RED[error] $COL_RESET""$1"
|
|
}
|
|
|
|
OUTPUT_FOLDER="/tmp/DUMP"
|
|
|
|
if [[ "${1-}" =~ ^-*h(elp)?$ ]]; then
|
|
echo 'Usage: hack/make/comp-objc-dump <dsc> <fw>
|
|
|
|
This script compares 2 `ipsw class-dump --headers` runs.
|
|
|
|
'
|
|
exit
|
|
fi
|
|
|
|
clean() {
|
|
running "Cleaning output folders..."
|
|
declare -a paths_to_delete=(
|
|
"${OUTPUT_FOLDER}"
|
|
"${OUTPUT_FOLDER}"_PR
|
|
)
|
|
|
|
for path in "${paths_to_delete[@]}"; do
|
|
info "Will delete ${path}"
|
|
done
|
|
|
|
read -p "Are you sure? " -n 1 -r
|
|
echo # (optional) move to a new line
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
for path in "${paths_to_delete[@]}"; do
|
|
info "Deleting ${path}"
|
|
rm -rf "${path}"
|
|
done
|
|
fi
|
|
}
|
|
|
|
diff_clean() {
|
|
find "${OUTPUT_FOLDER}" -name "*.h" | xargs sed -i '' '/ Generated.*/d'
|
|
find "${OUTPUT_FOLDER}"_PR -name "*.h" | xargs sed -i '' '/ Generated.*/d'
|
|
}
|
|
|
|
run() {
|
|
local dsc=$1
|
|
local framework=$2
|
|
ipsw class-dump --headers --deps "$dsc" "$framework" --output "$OUTPUT_FOLDER"
|
|
go run ./cmd/ipsw/main.go class-dump --headers --deps "$dsc" "$framework" --output "$OUTPUT_FOLDER"_PR
|
|
}
|
|
|
|
compare() {
|
|
COMPARE_FOLDERS=DIFF code "$OUTPUT_FOLDER" "$OUTPUT_FOLDER"_PR
|
|
}
|
|
|
|
check_ext() {
|
|
local ext=$1
|
|
local ext_list=$(code --list-extensions)
|
|
if [[ ${ext_list} =~ (^|[[:space:]])${ext}($|[[:space:]]) ]]; then
|
|
info "VSCode extension ${ext} installed."
|
|
else
|
|
error "VSCode extension ${ext} not installed. Run: 'code --install ${ext}'"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
echo " 🚀 Starting..."
|
|
check_ext "moshfeu.compare-folders"
|
|
clean
|
|
run $1 $2
|
|
diff_clean
|
|
compare
|
|
echo " 🎉 Done!"
|
|
}
|
|
|
|
main "$@"
|