#!/bin/bash
#
# sp_channels_subscribe
#
# (c) 2012-2013 SUSE Linux GmbH, Germany.
# GNU Public License. No warranty.
#
# Version: 2013-01-29
#

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

test -z "${SUBSCR_NAP}" &&\
	SUBSCR_NAP="20"

# TODO channel selection for compl. tree of one ore more basic channel (xml lists parent. optional) 
# TODO channel selection for architecture 
# TODO sles pool for proxy as child of proxy? s. mail K.Frederiksen.
# TODO suse-manager-1.2-pool-x86_64, suse-manager-1.2-updates-x86_64 correct?
	DEFLT_CHANNELS="
sles11-sp1-pool-x86_64
sles11-sp1-updates-x86_64
sles11-sp1-suse-manager-tools-x86_64
sles11-sp2-updates-x86_64
sles11-sp2-core-x86_64
sles11-sp2-suse-manager-tools-x86_64
sles11-sp2-extension-store-x86_64
"

test -z "${SUBSCR_CHANNELS}" &&\
	SUBSCR_CHANNELS=$DEFLT_CHANNELS


function help() {
	echo "usage:	$(basename $EXE) OPTION [ARGUMENT]"
	echo
	echo "subscribe to channels for SUSE Manager, no sync."
	echo
	echo " --list		[ basic | default | config | known | available | subscribed ]"
	echo " 			list specific channels"
	echo " --subscribe 	[ basic | default | config | typed ]"
	echo " 			subscribe to specific channels. basic channels have to go first."
	echo " --refresh	refresh channel info"
	echo " --version	show version"
	echo " --help		show help"
	echo
	echo "config file is $CFG ."
}


function do_sync() {
	for C in $*; do
		echo $C
		mgr-ncc-sync -q -c $C
	done
	sleep 2
	while killall -q spacewalk-repo-sync; do
		sleep $SUBSCR_NAP
	done
}


# main()
case $1 in 
 -v|--version)
	echo -n "$(basename $EXE) "
	head -11 $EXE | grep "^# Version: "
 ;;
 -l|--list)	
	shift
	# TODO optionally use local file instead of ncc query
	case $1 in
	 p|provided|s|subscribed)
	 	mgr-ncc-sync -q -l | awk '$1=="[P]" {print $2}'
	 	# TODO use local view instead? or show diff?
	 	# spacewalk-remove-channel -l | awk '{print $1}'
	 ;;
	 a|available)
		mgr-ncc-sync -q -l | awk '$1=="[.]" {print $2}'
	 ;;
	 k|known|all)
		mgr-ncc-sync -q -l | awk '$1~/\[.\]/ {print $2}'
	 ;;
	 b|basic)
		# TODO awk pattern
		mgr-ncc-sync -q -l | grep "^\[.\]" | awk '{print $2}'
	 ;;
	 d|default*)
		echo $DEFLT_CHANNELS
	 ;;
	 c|config*)
		echo $SUBSCR_CHANNELS
	 ;;
	esac
 ;;
 -s|--subscr*)
	shift
	case $1 in
	 c|config*)
		# TODO basic channels first?
		do_sync $SUBSCR_CHANNELS
	 ;;
	 t|typed)
		shift; shift
		while test $# -gt 0 ; do
		# TODO basic channels first
			do_sync $1
			shift
		done
	 ;;
	 b|basic*)
		# TODO awk pattern
		BASIC_CHANNELS=$(mgr-ncc-sync -q -l |\
		 	grep "^\[\.\]" | awk '{print $2}')
		do_sync $BASIC_CHANNELS
	 ;;
	 d|default*)
		do_sync $DEFLT_CHANNELS
	 ;;
	esac
 ;;
 -r|--refresh)
	# TODO test this
	mgr-ncc-sync -q -s
 ;;
 *)
	help
 ;;
esac
#
