#!/bin/sh

set -e

_activate_action=commit_other
_allow_downgrade=false
_downgrade_factory=true

for i in "$@"
do
    case "$i" in
        -t)
            _activate_action=activate_other
            ;;
        -d)
            _allow_downgrade=true
            _downgrade_factory=false
            ;;
        -f)
            _allow_downgrade=true
            ;;
    esac
done

ver=$(grep ^Version /var/content | cut -f2 -d=)

if ! $_allow_downgrade || $_downgrade_factory
then
    is_downgrade=false

    ver_old=$(/etc/version -v); ver_old=${ver_old#*.}
    ver_old_a=${ver_old%.*}
    ver_old_b=${ver_old#*.}

    ver_a=${ver%.*}
    ver_b=${ver#*.}

    [ "$ver_old_a" -gt "$ver_a" ] && is_downgrade=true
    [ "$ver_old_a" -eq "$ver_a" ] && [ "$ver_old_b" -gt "$ver_b" ] && is_downgrade=true

    if $is_downgrade
    then
        $_allow_downgrade || exit 8
    fi
fi

oem=$(sed -n 's/^firmware_version\t//p' /proc/sys/urlader/environment)
grep -q "^OEMs=.*\<$oem\>" /var/content || exit 2

/var/urladerupdate || true



if $is_downgrade
then
    $_downgrade_factory && /bin/setfactorydefaults
fi

/sbin/bootslotctl program_other /var/tmp/fit-image "${ver}-$(grep ^Build /var/content | cut -f2 -d=)" || exit 6
/sbin/bootslotctl "$_activate_action" || exit 6


echo "Setting linux_fs_start mirror..." > /dev/console

exit 1
