#!/bin/bash -x
|
# Utilities to interact with android more easily
|
|
function run_quiet() { eval "$* >/dev/null 2>&1"; }
|
|
make_csv() {
|
out=""
|
in=$1
|
for p in $in; do
|
if [ "x$out" == "x" ]; then
|
out=$p
|
else
|
out="$out,$p"
|
fi
|
done
|
echo $out
|
}
|
|
make_spaces() {
|
out=""
|
in=$1
|
for p in $in; do
|
if [ "x$out" == "x" ]; then
|
out=$p
|
else
|
out="$out $p"
|
fi
|
done
|
echo $out
|
}
|
|
cmd_exists() {
|
which $1 > /dev/null
|
return $?
|
}
|
|
do_adb_root() {
|
ADB="$1"
|
$ADB root > /dev/null 2>&1
|
return $?
|
}
|
|
die() {
|
exit_code=$1
|
msg=$2
|
c_error "$msg"
|
exit $exit_code
|
}
|
|
die_if_no_androdeb() {
|
set +e
|
$ADB shell ls /data/androdeb/debian > /dev/null 2>&1
|
if [ $? -ne 0 ]; then die 8 "Existing androdeb env not found on device. $1"; fi
|
set -e
|
}
|
|
# Helper function to count number of source arguments in a list
|
# when more than one argument is supplied, it is assumed the last argument
|
# is a destination
|
count_sources() {
|
local source_count=$#
|
if [ $source_count -gt 1 ]; then
|
source_count=$((source_count - 1))
|
fi
|
echo "$source_count"
|
}
|
|
# Borrowed from project LISA.
|
################################################################################
|
# Logging functions
|
################################################################################
|
c_error() {
|
NOW=$(date +"%H:%m:%S")
|
# If there is only one parameter, let's assume it's just the message
|
if [ $# -gt 1 ]; then
|
local parent_lineno="$1"
|
local message="$2"
|
echo -e "${red}$NOW - ERROR: on or near line ${parent_lineno}: ${message}${nocol}"
|
return
|
fi
|
|
local message="$1"
|
echo -e "${red}$NOW - ERROR : ${message}${nocol}"
|
}
|
|
c_warning() {
|
NOW=$(date +"%H:%m:%S")
|
# If there is only one parameter, let's assume it's just the message
|
if [ $# -gt 1 ]; then
|
local parent_lineno="$1"
|
local message="$2"
|
echo -e "${yellow}$NOW - WARNING: on or near line ${parent_lineno}: ${message}${nocol}"
|
return
|
fi
|
local message="$1"
|
echo -e "${yellow}$NOW - WARNING : ${message}${nocol}"
|
}
|
|
c_info() {
|
NOW=$(date +"%H:%m:%S")
|
# If there is only one parameter, let's assume it's just the message
|
if [ $# -gt 1 ]; then
|
local parent_lineno="$1"
|
local message="$2"
|
echo -e "${blue}$NOW - INFO: on or near line ${parent_lineno}: ${message}${nocol}"
|
return
|
fi
|
local message="$1"
|
echo -e "${blue}$NOW - INFO : ${message}${nocol}"
|
}
|
|
d_notify() {
|
MESSAGE=$1
|
ICON=$2
|
# Let's try to send a desktop notification,
|
# silently fails if there is not support.
|
notify-send \
|
--icon=$ICON \
|
--urgency=critical \
|
--expire-time=1500 \
|
"Test Series" \
|
"$MESSAGE" \
|
2>/dev/null
|
}
|
|
my_tput() {
|
if [ "${TERM-dumb}" == dumb ]; then
|
return
|
fi
|
tput $*
|
}
|
|
box_out()
|
{
|
local s=("$@") b w
|
for l in "${s[@]}"; do
|
((w<${#l})) && { b="$l"; w="${#l}"; }
|
done
|
my_tput setaf 3
|
echo -e "|-${b//?/-}-|"
|
for l in "${s[@]}"; do
|
printf '| %s%*s%s |\n' "$(my_tput setaf 4)" "-$w" "$l" "$(my_tput setaf 3)"
|
# echo "|-${b//?/-}-|"
|
done
|
echo "|-${b//?/-}-|"
|
my_tput sgr 0
|
}
|
|
|
################################################################################
|
# Colors
|
################################################################################
|
|
if [ -t 1 ]; then
|
ncolors=$(my_tput colors)
|
if [ -n "${ncolors}" ] && [ ${ncolors} -ge 8 ]; then
|
nocol='\e[0m' # No Color
|
white='\e[1;37m'
|
black='\e[0;30m'
|
blue='\e[0;34m'
|
lblue='\e[1;34m'
|
green='\e[0;32m'
|
lgreen='\e[1;32m'
|
cyan='\e[0;36m'
|
lcyan='\e[1;36m'
|
red='\e[0;31m'
|
lred='\e[1;31m'
|
purple='\e[0;35m'
|
lpurple='\e[1;35m'
|
brown='\e[0;33m'
|
yellow='\e[1;33m'
|
grey='\e[0;30m'
|
lgrey='\e[0;37m'
|
fi
|
fi
|