#!/bin/sh

set -e

. /etc/pkgos/pkgos.conf

if [ -z "${SALSA_TOKEN}" ] ; then
        echo "The \$SALSA_TOKEN variable is empty. Please export it with" >/dev/stderr
        echo "a valid salsa.debian.org token as content." >/dev/stderr
        exit 1
fi

ME=$(basename $0)

usage () {
	echo "$ME --new-release OPENSTACK_RELEASE --debian-release <debian-release> --project-name PROJECT_NAME [--project-id PROJECT_ID] [--jenkins-token JENKINS_TOKEN"]
	exit 1
}

DEBUG=no
for i in $@ ; do
	case "${1}" in
	"--new-release")
		if [ -z "${2}" ] ; then
			echo "No parameter defining the new release."
			usage
		fi
		NEW_RELEASE=${2}
		shift
		shift
	;;
	"--project-id")
		if [ -z "${2}" ] ; then
			echo "No parameter defining the project ID."
			usage
		fi
		PROJECT_ID=${2}
		shift
		shift
	;;
	"--project-name")
		if [ -z "${2}" ] ; then
			echo "No parameter defining the project name."
			usage
		fi
		PROJECT_NAME=${2}
		shift
		shift
	;;
	"--debian-release")
		if [ -z "${2}" ] ; then
			echo "No parameter defining the Debian release"
			usage
		fi
		DEBIAN_RELEASE=${2}
		shift
		shift
	;;
	"--jenkins-token")
		if [ -z "${2}" ] ; then
			echo "No parameter defining the Jenkins token"
			usage
		fi
		JENKINS_TOKEN=${2}
		shift
		shift
	;;
	"--debug")
		DEBUG=yes
		shift
	;;
	*)
	;;
	esac
done
if [ -z "${NEW_RELEASE}" ] ; then
	echo "No NEW_RELEASE (aka: OPENSTACK RELEASE) defined."
	usage
fi
if [ -z "${PROJECT_NAME}" ] ; then
	echo "No PROJECT_NAME defined."
	usage
fi

if [ -z "${PROJECT_ID}" ] ; then
	PROJECT_ID=$(pkgos-salsa-get-project-id --project-name ${PROJECT_NAME})
	if [ -z "${PROJECT_ID}" ] ; then
		echo "Cannot find project id for ${PROJECT_NAME}"
		exit 1
	fi
fi

if [ -z "${DEBIAN_RELEASE}" ] ; then
	echo "No DEBIAN_RELEASE defined."
	usage
fi
if [ -z "${JENKINS_TOKEN}" ] ; then
	echo "No JENKINS_TOKEN defined."
	usage
fi

BRANCH=debian/${NEW_RELEASE}

URL=$(urlencode "https://${DEBIAN_RELEASE}-${NEW_RELEASE}.debian.net/project/${PROJECT_NAME}")
ENCODED_BRANCH=$(urlencode ${BRANCH})

    BLUE="\033[1;34m"
   LGRAY="\033[0;37m"
  NO_COL="\033[0m"
   LBLUE="\033[1;36m"
     RED="\033[1;31m"
   GREEN="\033[1;32m"
   WHITE="\033[1;37m"
  YELLOW="\033[1;33m"
LINEWRAP="\033[7h"
      UP="\033[1A"
    DOWN="\033[1B"
      NL="\033[1E"
      RN="\033[1S"

echo "${YELLOW}-> New webhook for ${PROJECT_NAME}, ${DEBIAN_RELEASE} and ${NEW_RELEASE}${NO_COL}"
if [ "${DEBUG}" = "yes" ] ; then
	echo "Posting to: https://salsa.debian.org/api/v4/projects/${PROJECT_ID}/hooks?push_events=true&url=${URL}&token=${JENKINS_TOKEN}&push_events_branch_filter=${ENCODED_BRANCH}"
	CURL_OPT="-i"
else
	CURL_OPT="-s"
fi
if [ "${DEBUG}" = "no" ] ; then
	curl ${CURL_OPT} -X POST -H "PRIVATE-TOKEN: ${SALSA_TOKEN}" \
		"https://salsa.debian.org/api/v4/projects/${PROJECT_ID}/hooks?push_events=true&url=${URL}&token=${JENKINS_TOKEN}&push_events_branch_filter=${ENCODED_BRANCH}"
	echo ""
fi
