#!/bin/bash
#
# This script will either enable, or disable, the updating 
#  of openshift rpms via yum
#
##############
# VARIABLES
##############
CONF_FILE="/etc/yum.conf"
PACKAGE_LIST="origin origin-clients origin-clients-redistributable origin-dockerregistry origin-master origin-node origin-pod origin-recycle origin-sdn-ovs origin-tests tuned-profiles-origin-node"

##############
# HELP
##############
usage() {
  echo "Usage: ${0} <exclude | unexclude>" >&2
  echo >&2
  echo "exclude | disable" >&2                                                                                         
  echo "  exclude all openshift packages via an excludes= line in ${CONF_FILE}" >&2                                    
  echo "  This disables updates for all openshift packages" >&2
  echo >&2
  echo "unexclude | enable" >&2
  echo "  removes all openshift packages from the excludes= line in ${CONF_FILE}" >&2
  echo "  This re-enables updates for all openshift packages" >&2
  echo >&2
  popd &>/dev/null
  exit 1
}

##############
# FUNCTIONS
##############
exclude_packages() {
  # Ensure there is an exclude line
  if ! grep -q exclude= ${CONF_FILE} ; then
    echo "Adding exclude= to ${CONF_FILE}"
    sed 's|\(obsoletes=.*\)|\1\nexcludes=|' ${CONF_FILE}
  fi
  # Add each package to the exclude line
  for package in ${PACKAGE_LIST}
  do
    if ! grep exclude= /etc/yum.conf | grep -q " ${package} " ; then
      sed -i "s|exclude=|exclude= ${package} |" ${CONF_FILE}
    fi
  done
}

unexclude_packages() {
  # Remove each package to the exclude line
  for package in ${PACKAGE_LIST}
  do
    if grep exclude= /etc/yum.conf | grep -q " ${package} " ; then
      sed -i "s| ${package} ||" ${CONF_FILE}
    fi
  done
}

##############
# MAIN PROGRAM
##############
case "$1" in
  exclude | disable )
    exclude_packages
    ;;
  unexclude | enable )
    unexclude_packages
    ;;
  * )
    echo "Unknown Option: ${1}"
    echo
    usage
    ;;
esac

exit 0
