diff options
Diffstat (limited to 'scriptlets/adbor.sh')
-rwxr-xr-x | scriptlets/adbor.sh | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/scriptlets/adbor.sh b/scriptlets/adbor.sh new file mode 100755 index 0000000..ed060f8 --- /dev/null +++ b/scriptlets/adbor.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# if not this, keep prompting in loop +# adb devices | grep device$ + +MODE="$1" + +[[ ! $( echo "$MODE" | grep -e "^add$" -e "^remove$" ) ]] && echo -e "usage: $0 add/remove" && exit -3 + +while ! adb devices | grep -iq "device$" ; do + + echo "No authorized devices found." + for i in {1..5}; do + echo "Recheck in ${i}..." + sleep 1 + done +done + +DEVICE="$( adb devices | grep -i device$ | awk '{print $1}' | fzf -1 --prompt "Device: " )" +[[ -z "$DEVICE" ]] && echo "No device selected. Exiting." && exit 0 + +if echo "$MODE" | grep -iqF "remove" ; then + + PACKAGE=$( adb -s "${DEVICE}" shell "pm list packages" | sed -r "s|^package:||" | fzf --prompt "[Device: ${DEVICE}] Package to remove: " ) + [[ -z "$PACKAGE" ]] && echo "No package selected. Exiting." && exit 0 + + read -p "Are you sure you want to uninstall package \"${PACKAGE}\"? [Y/n] " -n 1 + # if [[ $REPLY =~ ^[Yy]$ ]] + if [[ $REPLY =~ ^[Nn]$ ]]; then + echo "Uninstall aborted." && exit -1 + fi + adb -s "${DEVICE}" shell "pm uninstall -k --user 0 ${PACKAGE}" && echo "Package uninstalled." && exit 1 + +elif echo "$MODE" | grep -iqF "add" ; then + + PACKAGE=$( comm -13 <(adb -s "${DEVICE}" shell "pm list packages" | sort) <(adb -s "${DEVICE}" shell "pm list packages -u" | sort) | sed -r "s|^package:||" | fzf --prompt "[Device: ${DEVICE}] Package to add: " ) + [[ -z "$PACKAGE" ]] && echo "No package selected. Exiting." && exit 1 + + read -p "Are you sure you want to reinstall package \"${PACKAGE}\"? [Y/n] " -n 1 + # if [[ $REPLY =~ ^[Yy]$ ]] + if [[ $REPLY =~ ^[Nn]$ ]]; then + echo "Reinstall aborted." && exit -2 + fi + + adb -s "${DEVICE}" shell "pm install-existing ${PACKAGE}" && echo "Package reinstalled." && exit 2 + +else + echo -e "usage: $0 add/remove" && exit -3 +fi |