#!/bin/bash

if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
    set -x
fi
set -eu
set -o pipefail

echo "START: installing MapR ecosystem repository"

MAPR_REPO_DIR=/opt/mapr-repository/ecosystem

RPM_REPO=${DIB_MAPR_ECO_RPM_REPO:-}
DEB_REPO=${DIB_MAPR_ECO_DEB_REPO:-}

if [ "$DISTRO_NAME" = "ubuntu" ]; then
    case "$DIB_MAPR_VERSION" in
        "3.1.1")
            MAPR_REPO_URL=${DIB_MAPR_ECO_DEB_REPO:-"http://package.mapr.com/releases/ecosystem/ubuntu/"}
        ;;
        "4.0.1" | "4.0.2")
            MAPR_REPO_URL=${DIB_MAPR_ECO_DEB_REPO:-"http://package.mapr.com/releases/ecosystem-4.x/ubuntu/"}
        ;;
    esac
elif [ "$DISTRO_NAME" = "centos" -o "$DISTRO_NAME" = "rhel" ]; then
    case "$DIB_MAPR_VERSION" in
        "3.1.1")
            MAPR_REPO_URL=${DIB_MAPR_ECO_RPM_REPO:-"http://package.mapr.com/releases/ecosystem/redhat/"}
        ;;
        "4.0.1" | "4.0.2")
            MAPR_REPO_URL=${DIB_MAPR_ECO_RPM_REPO:-"http://package.mapr.com/releases/ecosystem-4.x/redhat/"}
        ;;
    esac
else
    echo "Unknown distribution"
    exit 1
fi

echo "Downloading MapR repository archive"
if [ -z ${DEB_REPO} -o -z ${RPM_REPO} ]; then
    LATEST_ARCHIVE=$(curl -s ${MAPR_REPO_URL} | grep -Po '(?<=<a href=")(mapr-ecosystem.*?\.tgz)(?<!">)' | uniq | sort | tail -n 1)
    if [ -z ${LATEST_ARCHIVE} ]; then
        echo "No repository archive found"
        exit 1
    fi
    MAPR_REPO_URL=${MAPR_REPO_URL}/${LATEST_ARCHIVE}
fi

mkdir -p ${MAPR_REPO_DIR}

sudo curl ${MAPR_REPO_URL} -o ${MAPR_REPO_DIR}/mapr-ecosystem.tgz

if [ $? != 0 ]; then
    echo "MapR repository archive download failed"
    exit 1
fi

echo "Unpacking MapR repository archive"
tar -zxf ${MAPR_REPO_DIR}/mapr-ecosystem.tgz -C ${MAPR_REPO_DIR}

echo "Removing MapR repository archive"
rm -f ${MAPR_REPO_DIR}/mapr-ecosystem.tgz

echo "Removing old packages"
SCRIPT_FILE="/tmp/versions.py"
SPEC_FILE="/opt/mapr-repository/version-spec"
python ${SCRIPT_FILE} --path ${MAPR_REPO_DIR} --spec-file ${SPEC_FILE} | xargs sudo rm -f || echo "Operation failed"

if [ "$DISTRO_NAME" = "ubuntu" ]; then
    mkdir -p "${MAPR_REPO_DIR}"/dists/binary/optional/binary-amd64
    cd ${MAPR_REPO_DIR}
    dpkg-scanpackages -m . /dev/null | gzip -9c > dists/binary/optional/binary-amd64/Packages.gz
elif [ "$DISTRO_NAME" = "centos" -o "$DISTRO_NAME" = "rhel" ]; then
    createrepo "${MAPR_REPO_DIR}"
fi

echo "Adding MapR repository"
if [ "$DISTRO_NAME" = "ubuntu" ]; then
    cat >> /etc/apt/sources.list.d/maprtech.list << EOF
deb [arch=amd64] file://${MAPR_REPO_DIR} binary optional
EOF

elif [ "$DISTRO_NAME" = "centos" -o "$DISTRO_NAME" = "rhel" ]; then
    cat >> /etc/yum.repos.d/maprtech.repo << EOF
[mapr-ecosystem]
name=MapR Technologies
baseurl=file://${MAPR_REPO_DIR}
enabled=1
gpgcheck=0
protect=1
EOF
fi

echo "END: installing MapR ecosystem repository"

