#!/usr/bin/env bash

set -ueo pipefail

HBASE_VERSION="2.4.1"
HBASE_FILE="hbase-${HBASE_VERSION}-bin.tar.gz"
HBASE_URL="https://downloads.apache.org/hbase/${HBASE_VERSION}/${HBASE_FILE}"
HBASE_FILE_CKSUM="5afb643c2391461619516624168e042b42a66e25217a3319552264c6af522e3a21a5212bfcba759b7b976794648ef13ee7b5a415f33cdb89bba43d40162aa685"
HBASE_HOST="127.0.0.1"
HBASE_CONFIG="hbase/conf/hbase-site.xml"

declare -a DEPS=("java")

check_dependencies() {
    for i in "${DEPS[@]}"
    do
        if [[ -z $(which "${i}") ]]; then
            error "Could not find ${i}"
            exit 1
        fi
    done
}

download() {
    if [ -f "$HBASE_FILE" ]; then
        CKSUM="$(sha512 -q ${HBASE_FILE})"
        if [ "$CKSUM" = "$HBASE_FILE_CKSUM" ]; then
            printf "HBase archive exists\n"
        fi
    else
        printf "Downloading ${1}\n"
        curl -LO ${1}
    fi

    printf "Extracting HBase archive\n"
    tar xfz ${HBASE_FILE}
    mv -f hbase-${HBASE_VERSION} hbase/
}

create_config() {
    printf "Writing HBase config\n"
    cat <<EOF > $2
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///${1}/hbase</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>${1}/zookeeper</value>
  </property>
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>
</configuration>
EOF
}

check_dependencies
download ${HBASE_URL}
create_config "/tmp" ${HBASE_CONFIG}