blob: ad72e0582d0c76fc69c90d91a7e6bb69e1fb0206 [file] [log] [blame]
#!/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