#!/bin/csh -f

set prog=$0
set base=$prog:h
set base=$base:h
set prog=${prog:t}

set options=()

while ($#argv > 0)
    if ("$1" =~ -*) then
        switch ("$1")
	    case "-c":
	    case "-collapse":
		set collapsef
		breaksw
	    case "-d":
	    case "-delete":
		set deletef
		breaksw
	    case "-m":
	    case "-merge":
		echo "${prog}: missing branch number with $1"
		exit 1
		breaksw
	    case -m[0-9]*:
	    case -merge[0-9]*:
		set branch=`expr "$1" : '-m[a-z]*\([0-9.]*\)$'`
		set mergef
		breaksw
	    case "-restart":
		if ($#argv < 2) then
		    echo "${prog}: missing argument to $1"
		    exit 1
		endif
		set options=($options -restart $2)
		shift
		breaksw
	    case "-au":
	    case "-autoupdate":
		if ($#argv < 2) then
		    echo "${prog}: missing argument to $1"
		    exit 1
		endif
		set options=($options -autoupdate $2)
		shift
		breaksw
	    case "-on":
	    case "-onlynew":
		set options=($options -onlynew) 
		breaksw
	    case "-u":
	    case "-update":
		set updatef
		breaksw
	    case "-prune":
	    	set prunef
		breaksw
	    default:
		echo "${prog}: unknown switch $1"
		exit 1
		breaksw
	endsw
	shift
    else
	break
    endif
end

if ($#argv != 1) then
    cat <<!
Usage:

${prog} -update <coll>	 [ update collection into "REMERGE" sub-directory ]
${prog} -merge <coll>	 [ merge collection with $base ]
${prog} -collapse <coll> [ collapse "REMERGE" sub-directory into collection ]
${prog} -delete <coll>	 [ purge collection of files removed from repository ]
!
    exit 0
endif

set coll="$1"
set supfile="$base/sup/$coll/supfile"
set gone="$base/sup/$coll/gone"
set last="$base/sup/$coll/last"
if (! -r $supfile) then
    echo "${prog}: ${coll}: no such collection in $base"
    exit 1
endif

set dir=`sed <$supfile -n -e "/^${coll} /s;.* prefix=\([^ 	]*\)/REMERGE .*;\1;p"`

if ($?updatef) then
    sup -v $supfile
    set prunef
endif

if ($?prunef) then
    cd $dir/REMERGE
    prune -xmerge=$dir $base
    exec prune -xmerge $dir
endif

if ($?mergef) then
    cd $dir/REMERGE
    exec domerge -r$branch $options $base $dir
endif

if ($?collapsef) then
    cd $dir/REMERGE
    prune -new -xmerge=$dir .
    (cd $dir; find -nosymlink [a-z]* -print | sort) >$last
    sed <$supfile -n -e "/^${coll} /s;/REMERGE ; ;p" \
    | \
    sup -fv - \
    |& \
    tee /dev/tty \
    | \
    exec sed -n -e "s;^SUP Would delete ;;p" >$gone
    exit 0
endif

if ($?deletef) then
    foreach d ($dir $base)
	if (! -w $d) continue
	sed <$gone -n \
	    -e "s,^file \(.*\),set f=$d/\1;rm </dev/tty -fi "'$f $f:h/RCS/$f:t'",p" \
	    -e "s,^directory \(.*\),set f=$d/\1;rm </dev/tty -rfi "'$f'",p" \
        | \
	csh -f
    end
    exit 0
endif
