#!/bin/bash
#
# sp_channel_treeclone
#
# (c) 2012 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"

PARENT=$2
OPTION2=$3
LABEL=$4


function help() {
	echo "usage:    $(basename $0) OPTION"
	echo "usage:    $(basename $0) OPTION CHANNEL1 -p PREFIX"
	echo "usage:    $(basename $0) OPTION CHANNEL1 -x XARGS"
	echo
	echo " --clone          clone parent and all child channels"
	echo " --list           list channels"
	echo " --version        show version"
	echo " --help           show help"
	echo
	echo
	echo "example:    $(basename $0) --clone sles11-sp1-pool-x86_64 -p susedev"
	echo "example:    $(basename $0) --clone sles11-sp1-pool-x86_64 -x \"s/86_64/86_64-susedev\""
	echo 
}


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


function check_parent() {
        spacecmd -u $SPCMD_USER -p $SPCMD_PASS -q -- softwarechannel_listbasechannels >$TEMP 2>/dev/null
	grep $PARENT $TEMP >/dev/null 2>&1
	if [ $(echo $?) -gt 0 ] ; then
		echo "Parent channel does not exist. The following channels are available:"
	spacecmd -u $SPCMD_USER -p $SPCMD_PASS -q -- softwarechannel_listbasechannels
		rm $TEMP
		exit 1
	fi
	rm $TEMP
}


#main()
case $1 in
 -l|--list)
	check_cred
	echo "Base channels:"
	spacecmd -u $SPCMD_USER -p $SPCMD_PASS -q -- softwarechannel_listbasechannels
 ;;
 -c|--clone)
	check_cred
	if [ -z $OPTION2 ] || [ -z $PARENT ] || [ -z $LABEL ] ; then
		help
		exit 1
	fi
	case $OPTION2 in
	-p|-x)
		check_parent
		spacecmd -u $SPCMD_USER -p $SPCMD_PASS -q -- softwarechannel_clonetree -s $PARENT $OPTION2 "$LABEL"
		if [ $(echo $?) -gt 0 ] ; then
			echo "Something did not work as expected."
			echo
			help
			exit 2
		fi
	;;
	*)
		help
		;;
	esac
 ;;
 -v|--version)
	echo -n "$(basename $EXE) "
	head -11 $EXE | grep "^# Version: "
 ;;
 *)
	help
 ;;
esac
#                
