Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- function print_usage() {
- echo "Usage: $0 [Options]"
- echo "Options:"
- echo " -h, --help Display usage"
- echo " -f, --force Omit confirmation"
- echo " -s, --silent Show nothing"
- exit 1
- }
- function list_expected_bcsymbolmap() {
- framework_binaries=`find Carthage/Build/**/*.framework -type f -perm -111`
- for module in $framework_binaries; do
- if [[ ${module} =~ ^Carthage/Build/.+/(.+)\.framework/.+$ ]]; then
- module_name=${BASH_REMATCH[1]}
- fi
- xcrun dwarfdump --uuid $module | awk -v m="$module_name" '{print m "," $2".bcsymbolmap"}'
- done
- }
- function list_existing_bcsymbolmap() {
- find Carthage/Build/**/*.bcsymbolmap
- }
- function clean_unused_bcsymbolmap() {
- existing=`list_existing_bcsymbolmap`
- expected=`list_expected_bcsymbolmap`
- keeps=()
- deletes=()
- for existing_bcsymbolmap in $existing; do
- found_module_name=""
- for expected_bcsymbolmap in $expected; do
- sep=(`echo $expected_bcsymbolmap | tr -s ',', ' '`)
- module_name=${sep[0]}
- bcsymbolmap=${sep[1]}
- if [[ "$existing_bcsymbolmap" == *"$bcsymbolmap" ]]; then
- found_module_name=$module_name
- break
- fi
- done
- if [ "$SILENT" == "false" ]; then
- printf "."
- fi
- if [ -z "$found_module_name" ]; then
- removes+=("$existing_bcsymbolmap")
- else
- keeps+=("${found_module_name},${existing_bcsymbolmap}")
- fi
- done
- if [ "$SILENT" == "false" ]; then
- echo ""
- echo ""
- echo "Keeps:"
- for keep in ${keeps[@]}; do
- sep=(`echo $keep | tr -s ',', ' '`)
- module_name=${sep[0]}
- bcsymbolmap=${sep[1]}
- echo "$bcsymbolmap using $module_name"
- done
- echo ""
- echo "Removes:"
- for remove in ${removes[@]}; do
- echo "$remove"
- done
- fi
- if [ "$FORCE" == "false" ]; then
- echo ""
- read -p "Are you sure to remove? (y/n): " confirm
- if [ "${confirm}" != "y" ]; then
- exit 1
- fi
- fi
- for remove in ${removes[@]}; do
- rm $remove
- if [ "$SILENT" == "false" ]; then
- echo "Removed: $remove"
- fi
- done
- }
- for arg in "$@"; do
- shift
- case "$arg" in
- "--help") set -- "$@" "-h" ;;
- "--force") set -- "$@" "-f" ;;
- "--silent") set -- "$@" "-s" ;;
- *) set -- "$@" "$arg"
- esac
- done
- FORCE=false
- SILENT=false
- OPTIND=1
- while getopts "hfs" opt
- do
- case "$opt" in
- "h") print_usage ;;
- "f") FORCE=true ;;
- "s") SILENT=true ;;
- esac
- done
- shift $(expr $OPTIND - 1)
- clean_unused_bcsymbolmap
Add Comment
Please, Sign In to add comment