xref: /aosp_15_r20/development/tools/findunused/removeunusedresources (revision 90c8c64db3049935a07c6143d7fd006e26f8ecca)
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