summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-07-20 20:57:35 +0300
committerPaul Buetow <paul@buetow.org>2026-07-20 20:57:35 +0300
commit247dc4aa7002a08f202bc80d67595a56f20103bf (patch)
tree95e1bb0e1daa98c43d583a02bdfae50b2261108b /scripts
parent5ee6a3caa3327bcdefa23f42f571fda7d077b858 (diff)
add sideload script
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/sideload-koreader48
1 files changed, 48 insertions, 0 deletions
diff --git a/scripts/sideload-koreader b/scripts/sideload-koreader
new file mode 100755
index 0000000..f9ad521
--- /dev/null
+++ b/scripts/sideload-koreader
@@ -0,0 +1,48 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+declare -r PROGRAM=${0##*/}
+declare -r REMOTE_APK=/data/local/tmp/koreader.apk
+declare -r PACKAGE=org.koreader.launcher
+
+usage() {
+ printf 'Usage: %s PATH_TO_KOREADER_APK\n' "$PROGRAM"
+}
+
+die() {
+ printf '%s: %s\n' "$PROGRAM" "$*" >&2
+ exit 1
+}
+
+cleanup() {
+ adb shell rm -f "$REMOTE_APK" >/dev/null 2>&1 || true
+}
+
+(( $# == 1 )) || { usage >&2; exit 2; }
+declare -r APK=$1
+
+command -v adb >/dev/null 2>&1 || die 'adb is not installed'
+[[ -f $APK ]] || die "APK not found: $APK"
+
+adb get-state >/dev/null 2>&1 \
+ || die 'connect one Supernote with USB debugging enabled'
+
+declare MODEL
+MODEL=$(adb shell getprop ro.product.model | tr -d '\r')
+readonly MODEL
+[[ $MODEL == *Supernote* ]] || die "connected device is not a Supernote: $MODEL"
+
+trap cleanup EXIT
+printf 'Copying %s to %s...\n' "$APK" "$MODEL"
+adb push "$APK" "$REMOTE_APK"
+
+printf 'Installing KOReader...\n'
+adb shell pm install -r "$REMOTE_APK"
+
+declare INSTALLED_PACKAGES
+INSTALLED_PACKAGES=$(adb shell pm list packages | tr -d '\r')
+readonly INSTALLED_PACKAGES
+grep -Fxq "package:$PACKAGE" <<< "$INSTALLED_PACKAGES" \
+ || die 'KOReader package was not found after installation'
+
+printf 'KOReader installed successfully on %s.\n' "$MODEL"