1
0
mirror of git://f0xx.org/android_cast synced 2026-07-29 05:37:52 +03:00
Files
android_cast/pull_stats.sh
Anton Afanasyeu e2d51fbb27 snap
2026-05-21 11:21:56 +02:00

69 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
set -u
DEVICES_LIST="$(adb devices -l)"
echo "${DEVICES_LIST}"
LOG_ROOT="log_capture/session_stats/"
CLEAN_LOGS="no"
while true; do
yn=""
read -rp "clean logs on device after fetch? [Y/n] " yn
yn="${yn,,}"
case "${yn}" in
y|yes)
CLEAN_LOGS="yes"
break
;;
n|no)
break
;;
"")
CLEAN_LOGS="yes"
break
;;
*)
echo "answer Y(es) or N(o) (y/n or yes/no)"
;;
esac
done
echo "Known devices list:"
echo "${DEVICES_LIST}"
while IFS= read -r DEV; do
[[ -z "${DEV}" ]] && continue
[[ "${DEV}" == List* ]] && continue
SERIAL="$(awk '{print $1}' <<<"${DEV}")"
STATE="$(awk '{print $2}' <<<"${DEV}")"
[[ "${STATE}" != "device" ]] && continue
LOG_PATH="${LOG_ROOT}/${SERIAL}/"
echo "------------ dumping in ${LOG_PATH}"
mkdir -p "${LOG_PATH}"
mapfile -t FILES < <(adb -s "${SERIAL}" shell run-as com.foxx.androidcast ls files/session_stats/ </dev/null \
| tr -d '\r' | grep -v '^$' || true)
if ((${#FILES[@]} == 0)); then
echo " (no session_stats files on ${SERIAL})"
continue
fi
for f in "${FILES[@]}"; do
adb -s "${SERIAL}" exec-out run-as com.foxx.androidcast cat "files/session_stats/${f}" </dev/null \
> "${LOG_PATH}/${f}"
if [[ "${CLEAN_LOGS}" == "yes" ]]; then
adb -s "${SERIAL}" shell run-as com.foxx.androidcast rm -f "files/session_stats/${f}" </dev/null
fi
done
done <<<"${DEVICES_LIST}"
echo "showing all the logs in ${LOG_ROOT} folder and derivatives:"
ls -a ${LOG_ROOT}/*/*
echo "run './gradlew :session-studio:run' to analyze logs; find the latest logs in ${LOG_ROOT}"