#!/usr/bin/with-contenv bashio
# shellcheck shell=bash
set -e

JSONTOCHECK='/config/addons_config/transmission/settings.json'
JSONSOURCE='/defaults/settings.json'

# If json already exists
if [ -f "${JSONTOCHECK}" ]; then
    # Variables
    echo "Checking settings.json format"

    # Check if json file valid or not
    jq . -S "${JSONTOCHECK}" &>/dev/null && ERROR=false || ERROR=true
    if [ "$ERROR" = true ]; then
        bashio::log.fatal "Settings.json structure is abnormal, restoring options from scratch. Your old file is renamed as settings.json_old"
        mv "${JSONSOURCE}" "${JSONSOURCE}"_old
        cp "${JSONSOURCE}" "${JSONTOCHECK}"
        exit 0
    fi

    # Get the default keys from the original file
    mapfile -t arr < <(jq -r 'keys[]' "${JSONSOURCE}")

    # Check if all keys are still there, or add them
    # shellcheck disable=SC2086
    for KEYS in "${arr[@]}"; do
        # Check if key exists
        KEYSTHERE=$(jq "has(\"${KEYS}\")" "${JSONTOCHECK}")
        if [ "$KEYSTHERE" != "true" ]; then
            #Fetch initial value
            JSONSOURCEVALUE=$(jq -r ".\"$KEYS\"" "${JSONSOURCE}")
            #Add key
            sed -i "3 i\"${KEYS}\": \"${JSONSOURCEVALUE}\"," "${JSONTOCHECK}"
            # Message
            bashio::log.warning "${KEYS} was missing from your settings.json, it was added with the default value ${JSONSOURCEVALUE}"
        fi
    done

    # Show structure in a nice way
    jq . -S "${JSONTOCHECK}" | cat >temp.json && mv temp.json "${JSONTOCHECK}"

    # Message
    bashio::log.info "Your settings.json was checked and seems perfectly normal!"
fi

# Repair structure
################
#jq . -S $CONFIGDIR/settings.json | cat >temp.json && mv temp.json $CONFIGDIR/settings.json
#echo "Making sure settings.json structure is good"
#for KEYS in "incomplete-dir" "download-dir" "rpc-host-whitelist-enabled" "rpc-authentication-required" "rpc-username" "rpc-password" "rpc-whitelist-enabled" "rpc-whitelist"; do
#  KEYSTHERE=$(jq "has(\"${KEYS}\")" $CONFIGDIR/settings.json)
#  [ "$KEYSTHERE" != "true" ] && sed -i "3 i\"${KEYS}\": null," $CONFIGDIR/settings.json && echo "... $KEYS was missing, added"
#done
#jq . -S $CONFIGDIR/settings.json | cat >temp.json && mv temp.json $CONFIGDIR/settings.json
