xref: /aosp_15_r20/development/tools/findunused/findunusedstrings (revision 90c8c64db3049935a07c6143d7fd006e26f8ecca)
1*90c8c64dSAndroid Build Coastguard Worker#!/bin/bash
2*90c8c64dSAndroid Build Coastguard Worker
3*90c8c64dSAndroid Build Coastguard Workerif [ "$1" == "-h" ]
4*90c8c64dSAndroid Build Coastguard Workerthen
5*90c8c64dSAndroid Build Coastguard Worker    cat <<- EOH
6*90c8c64dSAndroid Build Coastguard Worker		    Usage: $0 [-p] [folder]
7*90c8c64dSAndroid Build Coastguard Worker		      -p option prints out unused strings, otherwise a total count is printed
8*90c8c64dSAndroid Build Coastguard Worker		      folder option causes only that app folder to be scanned, default is to scan all folders onder apps/
9*90c8c64dSAndroid Build Coastguard Worker		EOH
10*90c8c64dSAndroid Build Coastguard Worker    exit
11*90c8c64dSAndroid Build Coastguard Workerfi
12*90c8c64dSAndroid Build Coastguard Worker
13*90c8c64dSAndroid Build Coastguard Workershowall=no
14*90c8c64dSAndroid Build Coastguard Workerif [ "$1" == "-p" ]
15*90c8c64dSAndroid Build Coastguard Workerthen
16*90c8c64dSAndroid Build Coastguard Worker    showall=yes
17*90c8c64dSAndroid Build Coastguard Worker    shift
18*90c8c64dSAndroid Build Coastguard Workerfi
19*90c8c64dSAndroid Build Coastguard Worker
20*90c8c64dSAndroid Build Coastguard Workerapps=$1
21*90c8c64dSAndroid Build Coastguard Workerif [ "$apps" == "" ]
22*90c8c64dSAndroid Build Coastguard Workerthen
23*90c8c64dSAndroid Build Coastguard Worker    apps=$ANDROID_BUILD_TOP/packages/apps/*
24*90c8c64dSAndroid Build Coastguard Workerfi
25*90c8c64dSAndroid Build Coastguard Worker
26*90c8c64dSAndroid Build Coastguard Workerfor app in $apps
27*90c8c64dSAndroid Build Coastguard Workerdo
28*90c8c64dSAndroid Build Coastguard Worker    if [ -d $app/res ]
29*90c8c64dSAndroid Build Coastguard Worker    then
30*90c8c64dSAndroid Build Coastguard Worker        pushd $app > /dev/null
31*90c8c64dSAndroid Build Coastguard Worker        # Two sed's were needed because the | operator is not supported on the mac
32*90c8c64dSAndroid Build Coastguard Worker        for i in $(grep -Rs "\(string\|plurals\) name=" res | sed 's/.*string name=\"//' | sed 's/.*plurals name=\"//'|sed 's/".*$//'|sort -u)
33*90c8c64dSAndroid Build Coastguard Worker        do
34*90c8c64dSAndroid Build Coastguard Worker            echo $i $(grep -Rws R.plurals.$i\\\|R.string.$i\\\|@string/$i .|wc -l)
35*90c8c64dSAndroid Build Coastguard Worker        done | grep ' 0$' | {
36*90c8c64dSAndroid Build Coastguard Worker            if [ "$showall" == "yes" ]
37*90c8c64dSAndroid Build Coastguard Worker            then
38*90c8c64dSAndroid Build Coastguard Worker                echo $app
39*90c8c64dSAndroid Build Coastguard Worker                cat
40*90c8c64dSAndroid Build Coastguard Worker            else
41*90c8c64dSAndroid Build Coastguard Worker                count=$(wc -l)
42*90c8c64dSAndroid Build Coastguard Worker                if [ "$count" != "0" ]
43*90c8c64dSAndroid Build Coastguard Worker                then
44*90c8c64dSAndroid Build Coastguard Worker                    echo $app: $count unused strings
45*90c8c64dSAndroid Build Coastguard Worker                fi
46*90c8c64dSAndroid Build Coastguard Worker            fi
47*90c8c64dSAndroid Build Coastguard Worker        }
48*90c8c64dSAndroid Build Coastguard Worker        popd $app > /dev/null
49*90c8c64dSAndroid Build Coastguard Worker    fi
50*90c8c64dSAndroid Build Coastguard Workerdone
51