#!/bin/sh

# Deploy release from local build

set -e

# Environment vars
# DESTDIR, prefix for target files, optional

MIX_ENV="${MIX_ENV:-prod}"
RELEASE_VSN="${RELEASE_VSN:-<%= version %>}"
RELEASE_NAME="${RELEASE_NAME:-<%= app_name %>}"

# Config vars
DEPLOY_DIR="<%= deploy_dir %>"
DEPLOY_USER="${DEPLOY_USER:-<%= deploy_user %>}"
APP_GROUP="${APP_USER:-<%= app_group %>}"

CURRENT_LINK="${DESTDIR}${DEPLOY_DIR}/current"

<%= case release_system do %>
<% :mix -> %>
TAR_FILE="_build/${MIX_ENV}/${RELEASE_NAME}-${RELEASE_VSN}.tar.gz"
<% :distillery -> %>
TAR_FILE="_build/${MIX_ENV}/rel/${RELEASE_NAME}/releases/${RELEASE_VSN}/${RELEASE_NAME}.tar.gz"
<% end %>
TIMESTAMP=$(date +%Y%m%d%H%M%S)
RELEASE_DIR="${DESTDIR}${DEPLOY_DIR}/releases/${TIMESTAMP}"

echo "==> Deploying release $RELEASE_VSN to $RELEASE_DIR"
mkdir -p "$RELEASE_DIR"

echo "===> Extracting release from tar file $TAR_FILE"
tar -C "$RELEASE_DIR" -xf "$TAR_FILE"
chown -R ${DEPLOY_USER}:${APP_GROUP} "${RELEASE_DIR}"

echo "===> Setting current symlink $CURRENT_LINK"
if [[ -L "$CURRENT_LINK" ]]; then
    rm "$CURRENT_LINK"
fi
ln -s "$RELEASE_DIR" "$CURRENT_LINK"

echo "===> Setting file permissions for release binary"
chmod 750 "${CURRENT_LINK}/bin/${RELEASE_NAME}"
