1*90c8c64dSAndroid Build Coastguard Worker#!/bin/bash 2*90c8c64dSAndroid Build Coastguard Worker 3*90c8c64dSAndroid Build Coastguard Workerif ! which xmlstarlet > /dev/null 4*90c8c64dSAndroid Build Coastguard Workerthen 5*90c8c64dSAndroid Build Coastguard Worker echo "You need to have the 'xmlstarlet' command in your path" 6*90c8c64dSAndroid Build Coastguard Worker exit 7*90c8c64dSAndroid Build Coastguard Workerfi 8*90c8c64dSAndroid Build Coastguard Worker 9*90c8c64dSAndroid Build Coastguard Workerapps=$1 10*90c8c64dSAndroid Build Coastguard WorkerCWD=$(pwd)/ 11*90c8c64dSAndroid Build Coastguard Workerif [ "$apps" = "" ] 12*90c8c64dSAndroid Build Coastguard Workerthen 13*90c8c64dSAndroid Build Coastguard Worker echo "Please specify the path to an application, or '--all' to process all applications" 14*90c8c64dSAndroid Build Coastguard Worker exit 15*90c8c64dSAndroid Build Coastguard Workerelif [ "$apps" = "--all" ] 16*90c8c64dSAndroid Build Coastguard Workerthen 17*90c8c64dSAndroid Build Coastguard Worker apps=$ANDROID_BUILD_TOP/packages/apps/* 18*90c8c64dSAndroid Build Coastguard Workerfi 19*90c8c64dSAndroid Build Coastguard Worker 20*90c8c64dSAndroid Build Coastguard WorkerBASE=$(pwd)/$(dirname $0) 21*90c8c64dSAndroid Build Coastguard Worker 22*90c8c64dSAndroid Build Coastguard Workerfor app in $apps 23*90c8c64dSAndroid Build Coastguard Workerdo 24*90c8c64dSAndroid Build Coastguard Worker pushd $app 25*90c8c64dSAndroid Build Coastguard Worker $BASE/findunusedresources -p . | { 26*90c8c64dSAndroid Build Coastguard Worker read LINE NUM 27*90c8c64dSAndroid Build Coastguard Worker while [ "$LINE" != "" ] 28*90c8c64dSAndroid Build Coastguard Worker do 29*90c8c64dSAndroid Build Coastguard Worker if [ "Z$LINE" = "Z-----------------------------------------------------------" ] 30*90c8c64dSAndroid Build Coastguard Worker then 31*90c8c64dSAndroid Build Coastguard Worker # skip 32*90c8c64dSAndroid Build Coastguard Worker true 33*90c8c64dSAndroid Build Coastguard Worker elif [ "$LINE" = "$app" ] 34*90c8c64dSAndroid Build Coastguard Worker then 35*90c8c64dSAndroid Build Coastguard Worker # skip 36*90c8c64dSAndroid Build Coastguard Worker true 37*90c8c64dSAndroid Build Coastguard Worker else 38*90c8c64dSAndroid Build Coastguard Worker # try to find the missing resource 39*90c8c64dSAndroid Build Coastguard Worker find res | grep -w $LINE | { 40*90c8c64dSAndroid Build Coastguard Worker read RESLINE 41*90c8c64dSAndroid Build Coastguard Worker while [ "$RESLINE" != "" ] 42*90c8c64dSAndroid Build Coastguard Worker do 43*90c8c64dSAndroid Build Coastguard Worker if [ -f $RESLINE ] 44*90c8c64dSAndroid Build Coastguard Worker then 45*90c8c64dSAndroid Build Coastguard Worker echo REMOVING FILE: $RESLINE 46*90c8c64dSAndroid Build Coastguard Worker git rm $RESLINE > /dev/null 47*90c8c64dSAndroid Build Coastguard Worker else 48*90c8c64dSAndroid Build Coastguard Worker echo WARNING unexpected result for $LINE 49*90c8c64dSAndroid Build Coastguard Worker fi 50*90c8c64dSAndroid Build Coastguard Worker read RESLINE 51*90c8c64dSAndroid Build Coastguard Worker done 52*90c8c64dSAndroid Build Coastguard Worker } 53*90c8c64dSAndroid Build Coastguard Worker grep -Rwl $LINE res | { 54*90c8c64dSAndroid Build Coastguard Worker read RESLINE 55*90c8c64dSAndroid Build Coastguard Worker while [ "$RESLINE" != "" ] 56*90c8c64dSAndroid Build Coastguard Worker do 57*90c8c64dSAndroid Build Coastguard Worker ISSTRING=$(echo "$RESLINE" | grep -w "strings\.xml") 58*90c8c64dSAndroid Build Coastguard Worker if [ -n "$ISSTRING" ] 59*90c8c64dSAndroid Build Coastguard Worker then 60*90c8c64dSAndroid Build Coastguard Worker echo REMOVING STRING $LINE from $RESLINE 61*90c8c64dSAndroid Build Coastguard Worker xmlstarlet ed -P -S -d "/resources/string[@name='$LINE']" $RESLINE > tf$$ 62*90c8c64dSAndroid Build Coastguard Worker mv tf$$ $RESLINE 63*90c8c64dSAndroid Build Coastguard Worker git add $RESLINE 64*90c8c64dSAndroid Build Coastguard Worker else 65*90c8c64dSAndroid Build Coastguard Worker echo REMOVING $LINE from $RESLINE 66*90c8c64dSAndroid Build Coastguard Worker xmlstarlet ed -P -S -d "/resources/*[@name='$LINE']" $RESLINE > tf$$ 67*90c8c64dSAndroid Build Coastguard Worker mv tf$$ $RESLINE 68*90c8c64dSAndroid Build Coastguard Worker git add $RESLINE 69*90c8c64dSAndroid Build Coastguard Worker fi 70*90c8c64dSAndroid Build Coastguard Worker read RESLINE 71*90c8c64dSAndroid Build Coastguard Worker done 72*90c8c64dSAndroid Build Coastguard Worker } 73*90c8c64dSAndroid Build Coastguard Worker fi 74*90c8c64dSAndroid Build Coastguard Worker read LINE NUM 75*90c8c64dSAndroid Build Coastguard Worker done 76*90c8c64dSAndroid Build Coastguard Worker } 77*90c8c64dSAndroid Build Coastguard Worker popd 78*90c8c64dSAndroid Build Coastguard Workerdone 79*90c8c64dSAndroid Build Coastguard Workerecho 80*90c8c64dSAndroid Build Coastguard Workerecho "Done." 81*90c8c64dSAndroid Build Coastguard Workerecho "Please rebuild the updated applications to make sure that everything still builds." 82*90c8c64dSAndroid Build Coastguard Workerecho "After rebuilding, rerun 'findunusedresources' or 'removeunusedresources' to see if any more resources are now unused." 83*90c8c64dSAndroid Build Coastguard Workerecho "When you're done, you can 'git commit' the change." 84*90c8c64dSAndroid Build Coastguard Workerecho 85