Guest User

Untitled

a guest
Sep 25th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. function print_usage() {
  4. echo "Usage: $0 [Options]"
  5. echo "Options:"
  6. echo " -h, --help Display usage"
  7. echo " -f, --force Omit confirmation"
  8. echo " -s, --silent Show nothing"
  9. exit 1
  10. }
  11.  
  12. function list_expected_bcsymbolmap() {
  13. framework_binaries=`find Carthage/Build/**/*.framework -type f -perm -111`
  14.  
  15. for module in $framework_binaries; do
  16. if [[ ${module} =~ ^Carthage/Build/.+/(.+)\.framework/.+$ ]]; then
  17. module_name=${BASH_REMATCH[1]}
  18. fi
  19. xcrun dwarfdump --uuid $module | awk -v m="$module_name" '{print m "," $2".bcsymbolmap"}'
  20. done
  21. }
  22.  
  23. function list_existing_bcsymbolmap() {
  24. find Carthage/Build/**/*.bcsymbolmap
  25. }
  26.  
  27. function clean_unused_bcsymbolmap() {
  28. existing=`list_existing_bcsymbolmap`
  29. expected=`list_expected_bcsymbolmap`
  30. keeps=()
  31. deletes=()
  32.  
  33. for existing_bcsymbolmap in $existing; do
  34. found_module_name=""
  35. for expected_bcsymbolmap in $expected; do
  36. sep=(`echo $expected_bcsymbolmap | tr -s ',', ' '`)
  37. module_name=${sep[0]}
  38. bcsymbolmap=${sep[1]}
  39. if [[ "$existing_bcsymbolmap" == *"$bcsymbolmap" ]]; then
  40. found_module_name=$module_name
  41. break
  42. fi
  43. done
  44.  
  45. if [ "$SILENT" == "false" ]; then
  46. printf "."
  47. fi
  48.  
  49. if [ -z "$found_module_name" ]; then
  50. removes+=("$existing_bcsymbolmap")
  51. else
  52. keeps+=("${found_module_name},${existing_bcsymbolmap}")
  53. fi
  54. done
  55.  
  56. if [ "$SILENT" == "false" ]; then
  57. echo ""
  58. echo ""
  59. echo "Keeps:"
  60. for keep in ${keeps[@]}; do
  61. sep=(`echo $keep | tr -s ',', ' '`)
  62. module_name=${sep[0]}
  63. bcsymbolmap=${sep[1]}
  64. echo "$bcsymbolmap using $module_name"
  65. done
  66.  
  67. echo ""
  68. echo "Removes:"
  69. for remove in ${removes[@]}; do
  70. echo "$remove"
  71. done
  72. fi
  73.  
  74. if [ "$FORCE" == "false" ]; then
  75. echo ""
  76. read -p "Are you sure to remove? (y/n): " confirm
  77.  
  78. if [ "${confirm}" != "y" ]; then
  79. exit 1
  80. fi
  81. fi
  82.  
  83. for remove in ${removes[@]}; do
  84. rm $remove
  85. if [ "$SILENT" == "false" ]; then
  86. echo "Removed: $remove"
  87. fi
  88. done
  89. }
  90.  
  91.  
  92. for arg in "$@"; do
  93. shift
  94. case "$arg" in
  95. "--help") set -- "$@" "-h" ;;
  96. "--force") set -- "$@" "-f" ;;
  97. "--silent") set -- "$@" "-s" ;;
  98. *) set -- "$@" "$arg"
  99. esac
  100. done
  101.  
  102. FORCE=false
  103. SILENT=false
  104.  
  105. OPTIND=1
  106. while getopts "hfs" opt
  107. do
  108. case "$opt" in
  109. "h") print_usage ;;
  110. "f") FORCE=true ;;
  111. "s") SILENT=true ;;
  112. esac
  113. done
  114. shift $(expr $OPTIND - 1)
  115.  
  116. clean_unused_bcsymbolmap
Add Comment
Please, Sign In to add comment