#!/bin/bash

set -e

root_dir="${HOME}/.bitcore"
platform=`uname -a | awk '{print tolower($1)}'`
arch=`uname -m`
version="0.12.1"
#url="https://github.com/Oskii/Veggie/releases/download"
url="https://github.com/Oskii/Veggie/releases/download/${version}"
if [ "${platform}" == "linux" ]; then
    if [ "${arch}" == "x86_64" ]; then
        tarball_name="veggiecore-${version}-linux64.tar.gz"
        #tarball_name="Veggie-1.6.tar.gz"
    elif [ "${arch}" == "x86_32" ]; then
        tarball_name="veggiecore-${version}-linux32.tar.gz"
        #tarball_name="Veggie-1.6.tar.gz"

    fi
elif [ "${platform}" == "darwin" ]; then
    tarball_name="veggiecore-${version}-osx64.tar.gz"
else
    echo "Dash binary distribution not available for platform and architecture"
    exit -1
fi

binary_url="${url}/${tarball_name}"
shasums_url="${url}/SHA256SUMS.asc"

download_bitcoind() {

    mkdir -p "${root_dir}"
    mkdir -p "${root_dir}/data"

    cd "${root_dir}/data"

    echo "directory is ${root_dir}/data"
    echo "Downloading veggie: ${binary_url}"
    #echo "changing permissions of directory"
    #sudo chmod 777 -R .

    is_curl=true
    echo "1"
    if hash curl 2>/dev/null; then
        curl --fail -I $binary_url >/dev/null 2>&1
        echo "2"
    else
        is_curl=false
        wget --server-response --spider $binary_url >/dev/null 2>&1
        echo "3"
    fi
    echo "4"
    if test $? -eq 0; then
        echo "5"
        if [ "${is_curl}" = true ]; then
            curl -L $binary_url > $tarball_name
            echo "6"
            curl -L $shasums_url > SHA256SUMS.asc
            echo "7"
        else
            wget $binary_url
            wget $shasums_url
            echo "8"
        fi
        if test -e "${tarball_name}"; then
            echo "Unpacking veggie distribution"
            tar -xvzf $tarball_name --no-overwrite-dir #permissions issues
            if test $? -eq 0; then
                ln -sf "veggiecore-${version}/bin/Veggied"
                return;
            fi
        fi
    fi
    echo "Veggie binary distribution could not be downloaded"
    exit -1
}

verify_download() {
    echo "Verifying signatures of veggie download"
    gpg --verify "${root_dir}/bin/SHA256SUMS.asc"

    if hash shasum 2>/dev/null; then
        shasum_cmd="shasum -a 256"
    else
        shasum_cmd="sha256sum"
    fi

    download_sha=$(${shasum_cmd} "${root_dir}/bin/${tarball_name}" | awk '{print $1}')
    expected_sha=$(cat "${root_dir}/bin/SHA256SUMS.asc" | grep "${tarball_name}" | awk '{print $1}')
    echo "Checksum (download): ${download_sha}"
    echo "Checksum (verified): ${expected_sha}"
    if [ "${download_sha}" != "${expected_sha}" ]; then
        echo -e "\033[1;31mChecksums did NOT match!\033[0m\n"
        exit 1
    else
        echo -e "\033[1;32mChecksums matched!\033[0m\n"
    fi
}

download=1
verify=0

if [ "${SKIP_BITCOIN_DOWNLOAD}" = 1 ]; then
    download=0;
fi

if [ "${VERIFY_BITCOIN_DOWNLOAD}" = 1 ]; then
    verify=1;
fi

while [ -n "$1" ]; do
  param="$1"
  value="$2"

  case $param in
    --skip-bitcoin-download)
          download=0
          ;;
    --verify-bitcoin-download)
          verify=1
          ;;
  esac
  shift
done

if [ "${download}" = 1 ]; then
    download_bitcoind
fi

if [ "${verify}" = 1 ]; then
    verify_download
fi

exit 0
