12
12
# $1: package name
13
13
# $2: path to apk file (for aapt)
14
14
# $3: whether to retrieve the app name if not found in cache
15
+ # $4: optional path to append to cache base dir. If set, only scan this (no AAPT, no update)
15
16
#
16
17
getAppname () {
18
+ # Special cache dir?
19
+ [[ -n " ${CACHEDIR} " ]] && {
20
+ if [[ -n " $4 " && -d " ${CACHEDIR} /appnames/${4} " ]]; then
21
+ local CACHEDIR=" ${CACHEDIR} /appnames/${4} "
22
+ local SCANONLY=1
23
+ elif [[ -n " $4 " ]]; then # specified sub-cache doesn't exist
24
+ echo " $1 "
25
+ return
26
+ else
27
+ local SCANONLY=0
28
+ local CACHEDIR=" ${CACHEDIR} /appnames"
29
+ fi
30
+ }
17
31
# Check cache first (fastest if we have it)
18
- if [[ -n " ${CACHEDIR} " && -f " ${CACHEDIR} /appnames/ $1 " ]]; then
19
- local name=" $( cat " ${CACHEDIR} /appnames/ $1 " ) "
32
+ if [[ -n " ${CACHEDIR} " && -f " ${CACHEDIR} /$1 " ]]; then
33
+ local name=" $( cat " ${CACHEDIR} /$1 " ) "
20
34
name=" ${name% " ${name##* [![:space:]]} " } " # remove trailing spaces
21
35
name=" ${name# " ${name%% [![:space:]]* } " } " # remove leading spaces
22
36
if [[ -n " ${name} " ]]; then
@@ -25,12 +39,18 @@ getAppname() {
25
39
fi
26
40
fi
27
41
42
+ # ScanOnly mode (special cache dir found)?
43
+ if [[ $SCANONLY -ne 0 ]]; then
44
+ echo " $1 "
45
+ return
46
+ fi
47
+
28
48
# still here, so not found in cache. Try AAPT (if we have it)
29
49
if [[ $HAVE_AAPT -eq 1 ]]; then
30
50
local str=" $( adb ${ADBOPTS} shell " aapt d badging $2 2>/dev/null | grep 'application: label' | sed -n \" s/.*label\='\([^']*\)'.*/\1/p\" " ) " # label='Some App'"
31
51
str=${str// [$'\t\r\n']} # stupid ^M
32
52
if [[ -n " ${str} " ]]; then
33
- [[ -n " ${CACHEDIR} " && -e " ${CACHEDIR} /appnames " && ! -f " ${CACHEDIR} /appnames/ $1 " ]] && echo -n $str > " ${CACHEDIR} /appnames /$1 "
53
+ [[ -n " ${CACHEDIR} " && -e " ${CACHEDIR} " && ! -f " ${CACHEDIR} /$1 " ]] && echo -n $str > " ${CACHEDIR} /$1 "
34
54
echo " ${str} "
35
55
return
36
56
fi
@@ -40,7 +60,7 @@ getAppname() {
40
60
if [[ ${3} -gt 0 && -n " ${APPNAME_CMD} " ]]; then
41
61
name=" $( ${APPNAME_CMD} $1 ) "
42
62
if [[ " ${name} " != " $1 " ]]; then
43
- echo " ${name} " > " ${CACHEDIR} /appnames/ $1 "
63
+ echo " ${name} " > " ${CACHEDIR} /$1 "
44
64
fi
45
65
echo " ${name} "
46
66
return
@@ -400,7 +420,15 @@ function _makeAppDoc() {
400
420
local CUR_INSTALLER
401
421
local APPNAME
402
422
for app in ${applist[@]} ; do
403
- APPNAME=$( getAppname " ${app} " " ${PK_CODEPATH[$app]} " $_retrieveAppNames )
423
+ if [[ " $1 " = " system" && -n " ${APPCACHESPLUS} " ]]; then
424
+ for appcache in ${APPCACHESPLUS} ; do
425
+ APPNAME=$( getAppname " ${app} " " ${PK_CODEPATH[$app]} " $_retrieveAppNames " ${appcache} " )
426
+ [[ " ${APPNAME} " != " ${app} " ]] && break ;
427
+ done
428
+ [[ " ${APPNAME} " = " ${app} " ]] && APPNAME=$( getAppname " ${app} " " ${PK_CODEPATH[$app]} " $_retrieveAppNames )
429
+ else
430
+ APPNAME=$( getAppname " ${app} " " ${PK_CODEPATH[$app]} " $_retrieveAppNames )
431
+ fi
404
432
if [[ -z " ${PK_INSTALLER[$app]} " ]]; then # no installer
405
433
if [[ " ${APPNAME} " = " ${app} " ]]; then
406
434
tmpstring=" + $app \n"
0 commit comments