#!/bin/sh

if [[ ! -z "${DRONE_WORKSPACE}" ]]; then
	cd ${DRONE_WORKSPACE}
fi

# if the netrc enviornment variables exist, write
# the netrc file.

if [[ ! -z "${DRONE_NETRC_MACHINE}" ]]; then
	cat <<EOF > /root/.netrc
machine ${DRONE_NETRC_MACHINE}
login ${DRONE_NETRC_USERNAME}
password ${DRONE_NETRC_PASSWORD}
EOF
fi

# if the ssh_key environment variable exists, write
# the ssh key and add the netrc machine to the
# known hosts file.

if [[ ! -z "${DRONE_SSH_KEY}" ]]; then
	mkdir /root/.ssh
	echo -n "$DRONE_SSH_KEY" > /root/.ssh/id_rsa
	chmod 600 /root/.ssh/id_rsa

	touch /root/.ssh/known_hosts
	chmod 600 /root/.ssh/known_hosts
	ssh-keyscan -H ${DRONE_NETRC_MACHINE} > /etc/ssh/ssh_known_hosts 2> /dev/null
fi

# configure git global behavior and parameters via the
# following environment variables:


if [[ -z "${DRONE_COMMIT_AUTHOR_NAME}" ]]; then
	export DRONE_COMMIT_AUTHOR_NAME=drone
fi

if [[ -z "${DRONE_COMMIT_AUTHOR_EMAIL}" ]]; then
	export DRONE_COMMIT_AUTHOR_EMAIL=drone@localhost
fi

export GIT_AUTHOR_NAME=${DRONE_COMMIT_AUTHOR_NAME}
export GIT_AUTHOR_EMAIL=${DRONE_COMMIT_AUTHOR_EMAIL}
export GIT_COMMITTER_NAME=${DRONE_COMMIT_AUTHOR_NAME}
export GIT_COMMITTER_EMAIL=${DRONE_COMMIT_AUTHOR_EMAIL}

# invoke the sub-script based on the drone event type.
# TODO we should ultimately look at the ref, since
# we need something compatible with deployment events.

CLONE_TYPE=$DRONE_BUILD_EVENT
case $DRONE_COMMIT_REF in
  refs/tags/* ) CLONE_TYPE=tag ;;
  refs/pull/* ) CLONE_TYPE=pull_request ;;
  refs/pull-request/* ) CLONE_TYPE=pull_request ;;
  refs/merge-requests/* ) CLONE_TYPE=pull_request ;;
esac

case $CLONE_TYPE in
pull_request)
	clone-pull-request
	;;
tag)
	clone-tag
	;;
*)
	clone-commit
	;;
esac