#!/usr/bin/env bash
set -ex

export ETH_GAS=${ETH_GAS:-"7000000"}

# Get config variables
CONFIG_FILE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )/out/config.json"

# shellcheck source=/dev/null
. load-addresses

cd contracts/line-spell
dapp build

tokens=$(jq -r ".tokens | keys_unsorted[]" "$CONFIG_FILE")
for token in $tokens; do
    ilks=$(jq -r ".tokens.${token}.ilks | keys_unsorted[]" "$CONFIG_FILE")
    for ilk in $ilks; do
        ilksT+="$(seth --to-bytes32 "$(seth --from-ascii "${token}-${ilk}")"),"
        lines+="$(seth --to-uint256 "$(bc <<< "$(jq -r ".tokens.${token}.ilks.${ilk} | .line" "$CONFIG_FILE")*10^45")"),"
    done
done

ilksT="[${ilksT%,}]"
lines="[${lines%,}]"

EXEC_PROPOSAL=$(seth send --create out/MultiLineSpell.bin 'MultiLineSpell(address,address,address,bytes32[] memory,uint256[] memory)' "$MCD_MOM" "$MCD_MOM_LIB" "$MCD_VAT" "$ilksT" "$lines")

cd ../../

# Add new addresses to json file
cat >> ./out/addresses.tmp.json << EOF
{
    "EXEC_PROPOSAL": "$EXEC_PROPOSAL"
}
EOF
result=$(jq -s add "./out/addresses.json" "./out/addresses.tmp.json")
cat > ./out/addresses.json << EOF
$result
EOF

rm ./out/addresses.tmp.json

echo "EXECUTIVE SPELL DEBT CEILINGS COMPLETED SUCCESSFULLY"
