#!/bin/bash # # Download LineageOS images # # Parameters BASENAME="`basename $0`" DEVICE="$1" VERSION="$2" DATE="$3" FILE="lineage-${VERSION}-${DATE}-nightly-${DEVICE}-signed.zip" UPSTREAM="https://download.lineageos.org" RECOVERY="lineage-${VERSION}-${DATE}-recovery-${DEVICE}.img" RECOVERY_URL="https://mirrorbits.lineageos.org/recovery/${DEVICE}/${DATE}/${RECOVERY}" BASE_URL="https://mirrorbits.lineageos.org/full/${DEVICE}/${DATE}/${FILE}" DL_PAGE="https://download.lineageos.org/${DEVICE}" DL_PATTERN="mirrorbits" DL="$HOME/data/distros/lineageos/official/${DEVICE}" CWD="`pwd`" # Determine latest image version function lineageos_dl_determine_latest { local type="$1" lynx -dump "${UPSTREAM}/${DEVICE}" | grep ${DL_PATTERN} | awk '{ print $2 }' | grep ${type} | sort -r | grep -v -v '?sha256' | head -1 } # Syntax check if [ -z "$DATE" ]; then if [ ! -z "$DEVICE" ]; then echo "$BASENAME: trying to guess download URLs and file names..." BASE_URL="`lineageos_dl_determine_latest full`" FILE="`basename $BASE_URL`" RECOVERY_URL="`lineageos_dl_determine_latest recovery`" RECOVERY="`basename $RECOVERY_URL`" if [ -z "$BASE_URL" ]; then echo "error: could not automatically determine download URL, please specify version and build date manually" exit 1 fi else echo "usage: $BASENAME []" echo "example: $BASENAME cedric" echo "example: $BASENAME cedric 17.1 20210325" exit 1 fi fi # Set file names HASH="$FILE.sha256" RECOVERY_HASH="$RECOVERY.sha256" # Ensure destination folder exists echo "$BASENAME: download destination set to $DL" mkdir -p $DL # Download package if [ ! -e "$DL/$FILE" ]; then wget -c $BASE_URL -O $DL/$FILE || exit 1 else echo "$BASENAME: file $FILE already exists, skipping" fi # Download signature if [ ! -e "$DL/$HASH" ]; then wget -c "$BASE_URL?sha256" -O $DL/$HASH || exit 1 else echo "$BASENAME: file $HASH already exists, skipping" fi # Download recovery if [ ! -e "$DL/$RECOVERY" ]; then wget -c $RECOVERY_URL -O $DL/$RECOVERY || exit 1 else echo "$BASENAME: file $RECOVERY already exists, skipping" fi # Download recovery signature if [ ! -e "$DL/$RECOVERY_HASH" ]; then wget -c $RECOVERY_URL?sha256 -O $DL/$RECOVERY_HASH || exit 1 else echo "$BASENAME: file $RECOVERY_HASH already exists, skipping" fi cd $DL echo "$BASENAME: checking hashes..." sha256sum -c $HASH sha256sum -c $RECOVERY_HASH # Verify build authenticity echo "$BASENAME: please verify build authenticity with a procedure like this:" echo "" echo "git clone https://github.com/LineageOS/update_verifier" echo "cd update_verifier" echo "pip3 install -r requirements.txt" echo "python3 update_verifier.py lineageos_pubkey $DL/$FILE" echo "" echo "more info at https://wiki.lineageos.org/verifying-builds.html" # Teardown cd $CWD