#!/bin/bash set -e DIR="$(dirname "$(realpath "$0")")" PROGNAME="$0" OTA_DIR="~/LineageOTA/builds/full" OTA_USER="lineage" OTA_HOST="lineageos-ota.ch1p.io" OTA_PORT=60011 BOLD=$(tput bold) RST=$(tput sgr0) RED=$(tput setaf 1) CYAN=$(tput setaf 6) echoinfo() { >&2 echo "${CYAN}$@${RST}" } echoerr() { >&2 echo "${RED}${BOLD}error:${RST}${RED} $@${RST}" } die() { echoerr "$@" exit 1 } usage() { cat <<-_EOF usage: $PROGNAME OPTIONS DEVICE Options: --root DIR LineageOS root -h, --help show this help _EOF exit 1 } ROOT= DEVICE= [ -z "$1" ] && usage while [[ $# -gt 0 ]]; do case $1 in -h|--help) usage ;; --root) ROOT="$2" shift ;; *) if [ -n "$DEVICE" ]; then die "unexpected extra argument: $1" fi DEVICE="$1" esac shift done [ -z "$DEVICE" ] && die "no device specified" [ -z "$ROOT" ] && die "lineageos root device not specified" [ -d "$ROOT" ] || die "$ROOT: no such directory" PRODUCT_DIR="$ROOT/out/target/product/$DEVICE" [ -d "$PRODUCT_DIR" ] || die "product directory for device \"$DEVICE\" not found" ZIP="$(realpath "$(find "$PRODUCT_DIR" -type f -samefile "$PRODUCT_DIR/lineage_${DEVICE}-ota-eng.user.zip" | grep -v "lineage_${DEVICE}-ota-eng.user.zip" | grep -e .zip$ | sort -r | head -1)")" ZIP_NAME="$(basename "$ZIP")" PROP="$PRODUCT_DIR/system/build.prop" PROP_NAME="${ZIP_NAME}.prop" echo echo " Device: ${BOLD}${DEVICE}${RST}" echo " ZIP: ${BOLD}${ZIP_NAME}${RST}" echo echo -n "Press enter to confirm or Ctrl+C to cancel." read echoinfo "uploading zip (${BOLD}${ZIP_NAME}${RST}${CYAN})${RST}" scp -P$OTA_PORT "$ZIP" $OTA_USER@$OTA_HOST:$OTA_DIR/ echoinfo "uploading prop file (${BOLD}${PROP_NAME}${RST}${CYAN})${RST}" scp -P$OTA_PORT "$PROP" $OTA_USER@$OTA_HOST:$OTA_DIR/$PROP_NAME