@@ -708,7 +708,7 @@ mount_partition_if_possible()
708708
709709_get_local_settings ()
710710{
711- if test " ${LOCAL_SETTINGS_READ:- false} " = ' true ' ; then return ; fi
711+ test " ${LOCAL_SETTINGS_READ:- false} " = ' false ' || return
712712
713713 ui_debug ' Parsing local settings...'
714714 ui_debug ' '
@@ -719,34 +719,53 @@ _get_local_settings()
719719 export LOCAL_SETTINGS LOCAL_SETTINGS_READ
720720}
721721
722+ _parse_setting_helper ()
723+ {
724+ local _val
725+
726+ # If the length is 2 it is empty: []
727+ if _val=" $( printf ' %s\n' " ${LOCAL_SETTINGS?} " | grep -m 1 -F -e " [${1:? } ]" | cut -d ' :' -f ' 2-' -s) " && _val=" ${_val# } " && test " ${# _val} " -gt 2; then
728+ printf ' %s\n' " ${_val?} " | cut -c " 2-$(( ${# _val} - 1 )) "
729+ return 0
730+ fi
731+
732+ return 1
733+ }
734+
722735parse_setting ()
723736{
724- local _var _use_last_choice
737+ local _var _sett_type _sett_name _sett_default_val _sett_use_prev_choice
738+
739+ _sett_type=" ${1:- app} "
740+ _sett_name=" ${2:? } "
741+ _sett_default_val=" ${3?} "
742+ _sett_use_prev_choice=" ${4:- true} "
725743
726- _use_last_choice=" ${3:- true} "
727744 _get_local_settings
728745
729- _var=" $( printf ' %s\n' " ${LOCAL_SETTINGS?} " | grep -m 1 -F -e " [zip.${MODULE_ID:? } .${1:? } ]" | cut -d ' :' -f ' 2-' -s) " || _var=' '
730- _var=" ${_var# } "
731- if test " ${# _var} " -gt 2; then
732- printf ' %s\n' " ${_var?} " | cut -c " 2-$(( ${# _var} - 1 )) "
746+ if test " ${_sett_type:? } " = ' app' ; then
747+ if _parse_setting_helper " zip.${MODULE_ID:? } .APP_${_sett_name:? } " || _parse_setting_helper " zip.${MODULE_ID:? } .INSTALL_${_sett_name:? } " ; then
748+ return
749+ fi
750+ _sett_name=" APP_${_sett_name:? } "
751+ elif _parse_setting_helper " zip.${MODULE_ID:? } .${_sett_name:? } " ; then
733752 return
734753 fi
735754
736755 # Fallback to the last choice
737- if test " ${_use_last_choice :? } " = ' true' && _var=" $( simple_file_getprop " ${1 :? } " " ${SYS_PATH:? } /etc/zips/${MODULE_ID:? } .prop" ) " && test -n " ${_var?} " ; then
756+ if test " ${_sett_use_prev_choice :? } " = ' true' && _var=" $( simple_file_getprop " ${_sett_name :? } " " ${SYS_PATH:? } /etc/zips/${MODULE_ID:? } .prop" ) " && test -n " ${_var?} " ; then
738757 printf ' %s\n' " ${_var:? } "
739758 return
740- elif test " ${_use_last_choice :? } " = ' custom' && _var=" $( simple_file_getprop " ${4 :? } " " ${SYS_PATH:? } /etc/zips/${MODULE_ID:? } .prop" ) " && test -n " ${_var?} " ; then
759+ elif test " ${_sett_use_prev_choice :? } " = ' custom' && _var=" $( simple_file_getprop " ${5 :? } " " ${SYS_PATH:? } /etc/zips/${MODULE_ID:? } .prop" ) " && test -n " ${_var?} " ; then
741760 case " ${_var:? } " in
742- " ${5 :? } " ) printf ' 1\n ' ;;
743- * ) printf ' 0\n ' ;;
761+ " ${6 :? } " ) printf ' %s\n ' ' 1 ' ;;
762+ * ) printf ' %s\n ' ' 0 ' ;;
744763 esac
745764 return
746765 fi
747766
748767 # Fallback to the default value
749- printf ' %s\n' " ${2 ?} "
768+ printf ' %s\n' " ${_sett_default_val ?} "
750769}
751770
752771remount_read_write ()
@@ -1025,7 +1044,7 @@ initialize()
10251044 # Make sure that the commands are still overridden here (most shells don't have the ability to export functions)
10261045 if test " ${TEST_INSTALL:- false} " ! = ' false' && test -f " ${RS_OVERRIDE_SCRIPT:? } " ; then
10271046 # shellcheck source=SCRIPTDIR/../../recovery-simulator/inc/configure-overrides.sh
1028- . " ${RS_OVERRIDE_SCRIPT:? } " || exit " ${?} "
1047+ command . " ${RS_OVERRIDE_SCRIPT:? } " || ui_error " Sourcing override script failed with error: ${?} "
10291048 fi
10301049
10311050 PRODUCT_PATH=' '
@@ -1056,11 +1075,11 @@ initialize()
10561075
10571076 _get_local_settings
10581077
1059- DRY_RUN=" $( parse_setting ' DRY_RUN' " ${DRY_RUN:? } " ' false' ) "
1060- KEY_TEST_ONLY=" $( parse_setting ' KEY_TEST_ONLY' " ${KEY_TEST_ONLY:? } " ' false' ) "
1078+ DRY_RUN=" $( parse_setting ' general ' ' DRY_RUN' " ${DRY_RUN:? } " ' false' ) "
1079+ KEY_TEST_ONLY=" $( parse_setting ' general ' ' KEY_TEST_ONLY' " ${KEY_TEST_ONLY:? } " ' false' ) "
10611080
1062- LIVE_SETUP_DEFAULT=" $( parse_setting ' LIVE_SETUP_DEFAULT' " ${LIVE_SETUP_DEFAULT:? } " ' false' ) "
1063- LIVE_SETUP_TIMEOUT=" $( parse_setting ' LIVE_SETUP_TIMEOUT' " ${LIVE_SETUP_TIMEOUT:? } " ' false' ) "
1081+ LIVE_SETUP_DEFAULT=" $( parse_setting ' general ' ' LIVE_SETUP_DEFAULT' " ${LIVE_SETUP_DEFAULT:? } " ' false' ) "
1082+ LIVE_SETUP_TIMEOUT=" $( parse_setting ' general ' ' LIVE_SETUP_TIMEOUT' " ${LIVE_SETUP_TIMEOUT:? } " ' false' ) "
10641083
10651084 case " ${KEY_TEST_ONLY?} " in ' ' | * [!0-1]* ) KEY_TEST_ONLY=1 ;; * ) ;; esac
10661085 if test " ${KEY_TEST_ONLY:? } " -eq 1; then DRY_RUN=2; fi
@@ -1173,12 +1192,17 @@ initialize()
11731192
11741193 IS_EMU=' false'
11751194 case " ${BUILD_DEVICE?} " in
1176- ' windows_x86_64' | ' emu64' * ) IS_EMU=' true' ;;
1177- * ) ;;
1195+ ' windows_' * | ' emu64' * ) IS_EMU=' true' ;;
1196+ ' generic_' * ) if is_string_starting_with ' EMULATOR' " $( sys_getprop ' ro.serialno' || :) " ; then IS_EMU=' true' ; fi ;;
1197+ * )
1198+ if
1199+ is_string_starting_with ' sdk_google_phone_' " ${BUILD_PRODUCT?} " ||
1200+ is_valid_prop " $( simple_getprop ' ro.leapdroid.version' || printf ' %s\n' ' unknown' || :) "
1201+ then
1202+ IS_EMU=' true'
1203+ fi
1204+ ;;
11781205 esac
1179- if is_string_starting_with ' sdk_google_phone_' " ${BUILD_PRODUCT?} " || is_valid_prop " $( simple_getprop ' ro.leapdroid.version' || printf ' %s\n' ' unknown' || :) " ; then
1180- IS_EMU=' true'
1181- fi
11821206 readonly IS_EMU
11831207 export IS_EMU
11841208
@@ -1360,7 +1384,7 @@ clean_previous_installations()
13601384 readonly IS_INCLUDED=' true'
13611385 export IS_INCLUDED
13621386 # shellcheck source=SCRIPTDIR/../scripts/uninstall.sh
1363- . " ${TMP_PATH:? } /uninstall.sh"
1387+ command . " ${TMP_PATH:? } /uninstall.sh" || ui_error " Sourcing uninstall script failed with error: ${?} "
13641388
13651389 delete " ${SYS_PATH:? } /etc/zips/${MODULE_ID:? } .prop"
13661390
@@ -1451,7 +1475,7 @@ prepare_installation()
14511475 echo ' # SPDX-FileCopyrightText: none'
14521476 echo ' # SPDX-License-Identifier: CC0-1.0'
14531477 echo ' '
1454- echo ' install.type =system'
1478+ echo ' install.destination =system'
14551479 echo " install.build.type=${BUILD_TYPE:? } "
14561480 echo " install.version.code=${MODULE_VERCODE:? } "
14571481 echo " install.version=${MODULE_VERSION:? } "
@@ -2121,7 +2145,7 @@ copy_file()
21212145
21222146move_file ()
21232147{
2124- mv -f " $1 " " $2 " / || ui_error " Failed to move the file '$1 ' to '$2 '" 100
2148+ mv -f " $1 " " $2 " / || ui_error " Failed to move the file '$1 ' to '$2 '" 101
21252149}
21262150
21272151move_rename_file ()
@@ -2175,12 +2199,31 @@ delete_temp()
21752199{
21762200 for filename in " ${@ } " ; do
21772201 if test -e " ${TMP_PATH:? } /${filename?} " ; then
2178- # ui_debug "Deleting '${TMP_PATH?}/${filename?}'..."
2179- rm -rf -- " ${TMP_PATH:? } /${filename:? } " || ui_error ' Failed to delete temp files/folders' 103
2202+ # ui_debug "Deleting '${TMP_PATH?}/${filename?}'..."
2203+ rm -rf -- " ${TMP_PATH:? } /${filename:? } " || ui_error ' Failed to delete temp files/folders in delete_temp() ' 103
21802204 fi
21812205 done
21822206}
21832207
2208+ delete_if_sha256_match ()
2209+ {
2210+ local _filename _filehash _hash
2211+
2212+ if test -f " ${1:? } " ; then
2213+ _filename=" ${1:? } "
2214+ _filehash=" $( sha256sum -- " ${_filename:? } " | cut -d ' ' -f ' 1' -s) " || ui_error ' Failed to calculate SHA256 hash' 103
2215+ shift
2216+ for _hash in " ${@ } " ; do
2217+ if test " ${_hash:? } " = " ${_filehash:? } " ; then
2218+ ui_debug " Deleting '${_filename:? } '..."
2219+ rm -f -- " ${_filename:? } " || ui_error ' Failed to delete file in delete_if_sha256_match()' 103
2220+ return
2221+ fi
2222+ done
2223+ ui_debug " Deletion of '${_filename:? } ' skipped due to hash mismatch!"
2224+ fi
2225+ }
2226+
21842227delete_dir_if_empty ()
21852228{
21862229 if test -d " $1 " ; then
0 commit comments