#!/bin/sh
# shellcheck disable=SC1091
# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 :

set -e

. /lib/functions.sh
. /lib/overthebox
. /lib/upgrade/common.sh

export_bootdevice || {
	otb_err "Invalid /proc/cmdline, please reboot your device"
	exit 1
}

otb_save_action_id "$1" 2>/dev/null || true

if [ -z "$1" ]; then
	# Get image URL from provisionning
	prov_url="$(otb_device_get release_channel | jq -r '.image_url')"
	case "$prov_url" in
		http*.img.gz|ftp*.img.gz) url=$prov_url ;;
		*) otb_err "No valid image URL found !" ; exit 1 ;;
	esac
else
	case "$1" in
		http*.img.gz|ftp*.img.gz) url=$1 ;;
		*) url=$(otb_json_get "$1" "arguments.url") ;;
	esac
fi

cd /tmp

otb_info "Downloading image from '$url'..."
curl -sS --connect-timeout 5 "$url.sig" -o img.gz.sig
curl -sS --connect-timeout 5 "$url"     -o img.gz

usign -V -m img.gz -P /etc/opkg/keys

otb_info "Testing sysupgrade..."
sysupgrade -T img.gz

otb_info "Performing sysupgrade..."
sysupgrade img.gz
