#!/bin/bash
#Created by Sam Gleske
#MIT License
#Created Thu Sep 12 16:04:35 EDT 2013

#bash option stop on first error
set -e

#Include all user options and dependencies
git_mirrors_dir="$(dirname "${0}")"
cd "${git_mirrors_dir}"
. "config.sh"
. "lib/VERSION"
. "lib/functions.sh"

PROGNAME="${0##*/}"
PROGVERSION="${VERSION}"

#Default script options
project_name=""
quiet=false

#
# ARGUMENT HANDLING
#

usage()
{
  cat <<EOF
${PROGNAME} ${PROGVERSION} - MIT License by Sam Gleske

USAGE:
  ${PROGNAME} --delete PROJECT

DESCRIPTION:
  This program deletes a project so that it will no longer be mirrored.

  -h,--help          Show help
  -v,--version       Show program version
  -d,--delete PROJECT
                     Deletes a project so it is no longer mirrored.
  -q,--quiet         Suppress user confirmation messages.


EOF
}
#Short options are one letter.  If an argument follows a short opt then put a colon (:) after it
SHORTOPTS="hvd:q"
LONGOPTS="help,version,delete:,quiet"
ARGS=$(getopt -s bash --options "${SHORTOPTS}" --longoptions "${LONGOPTS}" --name "${PROGNAME}" -- "$@")
eval set -- "$ARGS"
while true; do
  case $1 in
    -h|--help)
        usage
        exit 1
      ;;
    -v|--version)
        echo "${PROGNAME} ${PROGVERSION}"
        exit 1
      ;;
    -d|--delete)
        project_name="${2}"
        shift 2
      ;;
    -q|--quiet)
        quiet=true
        shift
      ;;
    --)
        shift
        break
      ;;
    *)
        shift
      ;;
    esac
done

#
# Program functions
#

function preflight() {
  STATUS=0
  if [ -z "${project_name}" ];then
    red_echo -n "Must specify " 1>&2
    yellow_echo -n "--delete" 1>&2
    red_echo " option." 1>&2
    STATUS=1
  elif [ ! -e "${repo_dir}/${gitlab_namespace}/${project_name}" ];then
    yellow_echo -n "${repo_dir}/${gitlab_namespace}/${project_name}" 1>&2
    echo " does not exist." 1>&2
    exit
  fi
  return ${STATUS}
}

#
# Main execution
#

#Run a preflight check on options for compatibility.
if ! preflight;then
  echo "Command aborted due to previous errors." 1>&2
  exit 1
fi

if ! ${quiet};then
  echo -n "Will DELETE "
  red_echo "${repo_dir}/${gitlab_namespace}/${project_name}"
  echo
  echo -n "Are you sure you wish to delete project "
  yellow_echo -n "${gitlab_namespace}/${project_name}"
  echo -n "? (y/N): "
  read ans
  echo
  #convert upper case to lower case
  ans="$(echo "${ans}" | tr '[A-Z]' '[a-z]')"
  if [ ! "${ans}" = "y" -a ! "${ans}" = "yes" ];then
    echo "User aborted operation." 1>&2
    exit 1
  fi
fi

rm -rf "${repo_dir}/${gitlab_namespace}/${project_name}"
green_echo -n "DELETED" 1>&2
echo " ${repo_dir}/${gitlab_namespace}/${project_name}" 1>&2
echo 1>&2
yellow_echo -n "**NOTE**:" 1>&2
echo " You must log into the GitLab web interface in order to delete the project from GitLab!" 1>&2