| #!/bin/bash |
| |
| if ! which xmlstarlet > /dev/null |
| then |
| echo "You need to have the 'xmlstarlet' command in your path" |
| exit |
| fi |
| |
| apps=$1 |
| CWD=$(pwd)/ |
| if [ "$apps" = "" ] |
| then |
| echo "Please specify the path to an application, or '--all' to process all applications" |
| exit |
| elif [ "$apps" = "--all" ] |
| then |
| apps=$ANDROID_BUILD_TOP/packages/apps/* |
| fi |
| |
| BASE=$(pwd)/$(dirname $0) |
| |
| for app in $apps |
| do |
| pushd $app |
| $BASE/findunusedresources -p . | { |
| read LINE NUM |
| while [ "$LINE" != "" ] |
| do |
| if [ "Z$LINE" = "Z-----------------------------------------------------------" ] |
| then |
| # skip |
| true |
| elif [ "$LINE" = "$app" ] |
| then |
| # skip |
| true |
| else |
| # try to find the missing resource |
| find res | grep -w $LINE | { |
| read RESLINE |
| while [ "$RESLINE" != "" ] |
| do |
| if [ -f $RESLINE ] |
| then |
| echo REMOVING FILE: $RESLINE |
| git rm $RESLINE > /dev/null |
| else |
| echo WARNING unexpected result for $LINE |
| fi |
| read RESLINE |
| done |
| } |
| grep -Rwl $LINE res | { |
| read RESLINE |
| while [ "$RESLINE" != "" ] |
| do |
| ISSTRING=$(echo "$RESLINE" | grep -w "strings\.xml") |
| if [ -n "$ISSTRING" ] |
| then |
| echo REMOVING STRING $LINE from $RESLINE |
| xmlstarlet ed -P -S -d "/resources/string[@name='$LINE']" $RESLINE > tf$$ |
| mv tf$$ $RESLINE |
| git add $RESLINE |
| else |
| echo REMOVING $LINE from $RESLINE |
| xmlstarlet ed -P -S -d "/resources/*[@name='$LINE']" $RESLINE > tf$$ |
| mv tf$$ $RESLINE |
| git add $RESLINE |
| fi |
| read RESLINE |
| done |
| } |
| fi |
| read LINE NUM |
| done |
| } |
| popd |
| done |
| echo |
| echo "Done." |
| echo "Please rebuild the updated applications to make sure that everything still builds." |
| echo "After rebuilding, rerun 'findunusedresources' or 'removeunusedresources' to see if any more resources are now unused." |
| echo "When you're done, you can 'git commit' the change." |
| echo |