summaryrefslogtreecommitdiff
path: root/scripts/sideload-koreader
blob: f9ad5219f08252fc7ffa7c9aec86c1313166b965 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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"