mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2024-12-27 03:18:33 +03:00
117 lines
2.4 KiB
Bash
117 lines
2.4 KiB
Bash
|
#! /bin/bash
|
||
|
#=====================================================================
|
||
|
# Selects an android device
|
||
|
# Copyright (C) 2012-2020 Diego Torres Milano. All rights reserved.
|
||
|
#
|
||
|
# See:
|
||
|
# - http://dtmilano.blogspot.ca/2013/01/android-select-device.html
|
||
|
# - http://dtmilano.blogspot.ca/2012/03/selecting-adb-device.html
|
||
|
# for details on usage.
|
||
|
#=====================================================================
|
||
|
|
||
|
# BMA: GIST FROM https://gist.github.com/dtmilano/4537110
|
||
|
|
||
|
get_adb_devices() {
|
||
|
adb $ADB_SERVER devices $LONG 2>&1 | tail -n +2 | sed '/^$/d'
|
||
|
}
|
||
|
|
||
|
git_pull() {
|
||
|
[[ "$UNAME" == 'Linux' ]] && OPT=-e
|
||
|
ASD=$(readlink $OPT $0)
|
||
|
if [[ -n "$ASD" ]]
|
||
|
then
|
||
|
DIR=$(dirname $ASD)
|
||
|
if [[ -n "$DIR" && -d "$DIR/.git" ]]
|
||
|
then
|
||
|
(cd $DIR && git pull)
|
||
|
fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
PROGNAME=$(basename $0)
|
||
|
VERSION="3.3.0"
|
||
|
UNAME=$(uname)
|
||
|
DEVICE_OPT=
|
||
|
LONG=
|
||
|
ADB_SERVER=
|
||
|
|
||
|
git_pull > /dev/null
|
||
|
|
||
|
for opt in "$@"
|
||
|
do
|
||
|
case "$opt" in
|
||
|
-d|-e|-s|-t)
|
||
|
DEVICE_OPT=$opt
|
||
|
;;
|
||
|
|
||
|
-l|--long)
|
||
|
LONG=-l
|
||
|
;;
|
||
|
|
||
|
start-server|kill-server|connect|pair|-help)
|
||
|
exit 0
|
||
|
;;
|
||
|
|
||
|
-V|--version)
|
||
|
echo "$PROGNAME version $VERSION"
|
||
|
exit 0
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
[ -n "$DEVICE_OPT" ] && exit 0
|
||
|
DEV=$(get_adb_devices)
|
||
|
if [ -z "$DEV" ]
|
||
|
then
|
||
|
echo "$PROGNAME: ERROR: There's no locally connected devices." >&2
|
||
|
read -p "Do you want to connect to a remote adb server? [Y/n]: " REPLY
|
||
|
case "$REPLY" in
|
||
|
n|N)
|
||
|
exit 1
|
||
|
;;
|
||
|
|
||
|
y|Y|"")
|
||
|
read -p "ADB server IP: " IP
|
||
|
ADB_SERVER="-H $IP"
|
||
|
DEV=$(get_adb_devices)
|
||
|
;;
|
||
|
esac
|
||
|
elif echo "$DEV" | grep -q 'daemon started successfully'
|
||
|
then
|
||
|
# try again
|
||
|
DEV=$(get_adb_devices)
|
||
|
fi
|
||
|
N=$(echo "$DEV" | wc -l | sed 's/ //g')
|
||
|
|
||
|
case $N in
|
||
|
1)
|
||
|
# only one device detected
|
||
|
D=$DEV
|
||
|
;;
|
||
|
|
||
|
*)
|
||
|
# more than one device detected
|
||
|
OLDIFS=$IFS
|
||
|
IFS="
|
||
|
"
|
||
|
PS3="Select the device to use, <Q> to quit: "
|
||
|
select D in $DEV
|
||
|
do
|
||
|
[ "$REPLY" = 'q' -o "$REPLY" = 'Q' ] && exit 2
|
||
|
[ -n "$D" ] && break
|
||
|
done < /dev/tty
|
||
|
|
||
|
IFS=$OLDIFS
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
if [ -z "$D" ]
|
||
|
then
|
||
|
echo "$PROGNAME: ERROR: target device couldn't be determined" >&2
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# this didn't work on Darwin
|
||
|
# echo "-s ${D%% *}"
|
||
|
### BMA Modified printf -- '-s %s\n' "$(echo ${D} | sed 's/ .*$//')"
|
||
|
printf -- '%s' "$(echo ${D} | sed 's/ .*$//')"
|