#!/bin/bash
#
# sp_channel_delete
#
# (c) 2013 SUSE Linux GmbH, Germany.
# GNU Public License. No warranty.
#
# Version: 2013-09-09
#

EXE=$0

CFG="/etc/sysconfig/spock"
test -s $CFG && source $CFG

test -z "${TEMP}" && TEMP="/dev/shm/spk.$RANDOM"
test -z "${SPCMD_USER}" && SPCMD_USER="admin"
test -z "${SPCMD_PASS}" && SPCMD_PASS="suse1234"

CHANNEL=$2
echo $CHANNEL


function help() {
	echo "usage:    $(basename $0) --delete CHANNEL"
	echo "usage:    $(basename $0) --help | --version"
	echo
	echo "Before deleting a parentchannel, all childchannels need to be deleted first."
	echo
	echo "example:    $(basename $0) --delete sles11-sp3-updates-x86_64"
	echo
}


function check_cred() {
	if [ -z $SPCMD_USER ] || [ -z $SPCMD_USER ]; then
		echo "Please set SPCMD_USER and SPCMD_USER in $CFG"
		exit 1
	fi
}


function check_parent_empty() {
	spacecmd -u $SPCMD_USER -p $SPCMD_USER -q -- softwarechannel_listbasechannels >$TEMP 2>/dev/null
	grep $CHANNEL $TEMP > /dev/null 2>&1
	if [ $(echo $?) -eq 0 ]; then
		BB=$(spacecmd -u $SPCMD_USER -p $SPCMD_USER -q -- softwarechannel_listchildchannels $CHANNEL)
		if [ -z BB ]; then
			echo "Channel is a parent channel and contains one or more child channels. Please delete these first:"
			function_listchildchannels
			rm $TEMP
			exit 1
		fi
		rm $TEMP
		return 1
	fi
	return 0
}


function check_child() {
	spacecmd -u $SPCMD_USER -p $SPCMD_PASS -q -- softwarechannel_listchildchannels >$TEMP 2>/dev/null
	grep $CHANNEL $TEMP >/dev/null 2>&1
	if [ $(echo $?) -gt 0 ]; then
		echo "Channel does not exist."
		rm $TEMP
		exit 1
	fi
	rm $TEMP
}


function_listchildchannels() {
	echo "Base channels:"
	BC=$(spacecmd -u $SPCMD_USER -p $SPCMD_PASS -q -- softwarechannel_listbasechannels)
	for C in $BC; do
		echo "Basechannel $C has the following childchannels: "
		spacecmd -u $SPCMD_USER -p $SPCMD_PASS -q -- softwarechannel_listchildchannels $C
		echo
	done
}


#main()
case $1 in
 -d|--delete)
	check_cred
	if [ -z $CHANNEL ]; then
		help
		exit 1
	fi
	if check_parent_empty ; then
		check_child	
	fi
	/usr/bin/spacewalk-remove-channel -c $CHANNEL
	if [ $(echo $?) -gt 0 ]; then
		echo "Something did not work as expected."
		echo
		help
		exit 2
	fi
	echo "Success"
 ;;
 -v|--version)
	echo -n "$(basename $EXE) "
	head -11 $EXE | grep "^# Version: "
 ;;
 *)
	help
 ;;
esac
#
