#! /bin/bash

UPDATER_DIR="/home/iont.tech/updater"

CURRENT_PATCH="$(jq -r '.patch' /home/iont.tech/config.json)"
NEW_PATCH="$(sudo cat /tmp/update/patch/patch | tr -d '\r')"

if [ "$CURRENT_PATCH" -eq "$NEW_PATCH" ]; then
    sudo echo "No patch update" | sudo tee -a "$UPDATER_DIR/update.log"
else
    if [ -z "$CURRENT_PATCH" ] || [ "$CURRENT_PATCH" == "null" ]; then
        CURRENT_PATCH=0
    fi

    sudo echo "Patch updated from $CURRENT_PATCH to $NEW_PATCH" | sudo tee -a "$UPDATER_DIR/update.log"

    sudo jq --arg patch "$NEW_PATCH" '.patch = $patch' /home/iont.tech/config.json | sudo tee /home/iont.tech/config.json.tmp

    for i in $(seq $CURRENT_PATCH $NEW_PATCH); do
        if [ ! -d "/tmp/update/patch/$i" ]; then
            sudo echo "Patch $i not found" | sudo tee -a "$UPDATER_DIR/update.log"
            continue
        fi

        sudo echo "Applying patch $i" | sudo tee -a "$UPDATER_DIR/update.log"
        
        sudo "/tmp/update/patch/$i/patch"

        if [ $? -eq 0 ]; then
            sudo echo "Patch $i applied" | sudo tee -a "$UPDATER_DIR/update.log"
        else
            sudo echo "Patch $i failed" | sudo tee -a "$UPDATER_DIR/update.log"
        fi
    done

    if [ $? -eq 0 ]; then
        sudo echo "Patch bumped to $NEW_PATCH" | sudo tee -a "$UPDATER_DIR/update.log"
    else
        sudo echo "Rewrite patch to config failed" | sudo tee -a "$UPDATER_DIR/update.log"
    fi

    mv /home/iont.tech/config.json.tmp /home/iont.tech/config.json

    if [ $? -ne 0 ]; then
        sudo echo "Move patch config failed" | sudo tee -a "$UPDATER_DIR/update.log"
    fi
fi

sudo chown iont.tech:iont.tech /home/iont.tech/config.json
