#!/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