#!/usr/bin/env bash

PROJECT_DIR="/home/buildfarm/teamcity/projects/"
UPDATE_CMD="sudo apt-get update"
PBUILDER_CMD="sudo /usr/lib/pbuilder/pbuilder-satisfydepends"
EMAIL=buildfarm@yandex-team.ru
DEBUILD_CMD="dpkg-buildpackage -rfakeroot -sa -e${EMAIL} -I"
DEBCLEAN_CMD="debclean"
DEBRELEASE_CMD="debrelease --configfile --to verstka --nomail"
DEBTICKET_CMD="debticket -n"

if [ -n "$1" ]; then
    PROJECT_DIR="${PROJECT_DIR}/$1/"
else
    echo 'Not enough command line arguments'
    exit 1
fi

if [ ! -e "${PROJECT_DIR}/debian/changelog" ]; then
    echo 'debian/changelog not found'
    exit 2
fi

# build package
cd $PROJECT_DIR && $UPDATE_CMD && $PBUILDER_CMD && $DEBUILD_CMD || exit 3
cd $PROJECT_DIR && $DEBCLEAN_CMD


# deploy package
DEB_SOURCE=$(dpkg-parsechangelog | sed -n 's/^Source: //p')
DEB_VERSION=$(dpkg-parsechangelog | sed -n 's/^Version: //p')
DEB_ARCH=$(dpkg-architecture | grep DEB_BUILD_ARCH= | sed -e 's/.*=//')
DEB_DISTR=$(dpkg-parsechangelog | sed -n 's/^Distribution: //p')
CHANGES_FILE="${DEB_SOURCE}\_${DEB_VERSION}\_${DEB_ARCH}.changes"

echo "Check if deployment is possible (set NO_DEPLOY)"
NO_DEPLOY=$(ssh dist.yandex.ru "cd /repo/verstka && find . -name '${CHANGES_FILE}' | wc -l")

if [ "$2" != "deploy" -o "${DEB_DISTR}" = "UNRELEASED" ]; then
    NO_DEPLOY="1"
fi

if [ "0" = "${NO_DEPLOY}" ]; then
    echo $DEBRELEASE_CMD
    cd $PROJECT_DIR && $DEBRELEASE_CMD || exit 5

    if [ "0" = $? ]; then
        echo $DEBTICKET_CMD
        $DEBTICKET_CMD || exit 5
    fi
fi
