#! /bin/csh -f
##
##	Interface to install the DK system.
##
##		Dan Romike		   Nov 1986
##		Copywrite (c), Tektronix, Inc  1986

set DK=(/usr/misc/dk)
set MAN=(/usr/man/manl)
set OPER=(operator)
set OPERGID=(5)
set path=($DK $path) root=() show=()
set PWD=(/etc/passwd)

alias msg echo '"  DKINSTALL: "'
alias nmsg echo -n '"  DKINSTALL: "'

while (1)
   cat << END


      D K    I N S T A L L A T I O N    A N D    W O R K I N G    M E N U


	 0)  New installation [Do items 1 thru 8].
	 ---------------- INSTALLATION ----------------
	 1)  Select DK home directory and local operations account name.
   	 2)  Make programs and scripts.
	 3)  Install programs.
	 4)  Install man pages.
	 5)  Set tape density and footage [dkblks].
	 6)  Read boot tape [MUST be done on each new release].
	 7)  Make backup schedule [dksched].
	 8)  Make dkbackup login entry [dkpwd].
	 ----------------------------------------------
	 9)  Make entires for remote hosts [dkrhosts].
	10)  Only list commands to be executed (toggles).
	11)  Format man pages [optionally print man pages].
        12)  Print source code.
	13)  Format and print documentation.

END
   echo -n "	Select an item [RETURN to exit] "
   set ans=($<) brk=(breaksw) 
   if ( $#ans == 0 ) break
   echo ''

   switch ("$ans")
      case 0:	# do them all
	       set brk=() 

      case 1:	# set the home directory
	       nmsg "Enter home of the DK backup package [default: $DK] "
	       set root=($<)
	       if ( "$root" != "" ) then	# dk root has changed
		  set DK=($root) chng
		  ed - Makefile << END
/^DK=/s:=.*:=${DK}:p
w
END
	       endif
	       msg "Making DK home directory [$DK] ..."
	       make rootdir
	       if ( $status ) exit
	       nmsg "Enter name of your operations account [default: $OPER] "
	       set oper=($<) chng
	       if ( "$oper" != "" ) set OPER=($oper)
	       set OPERGID=(`awk -F: '$1 == "'"$OPER"'" {print $4}' $PWD`)
	       if ( $#OPERGID == 0 ) then
		  msg "Unable to find $OPER account in $PWD."
		  msg "FATAL ERROR: Please make the $OPER account."
		  exit(1)
	       endif
	       ed - Makefile << END
/^OPER=/s:=.*:=${OPER}:p
/^OPERGID=/s:=.*:=${OPERGID}:p
w
END
	       $brk

      case 2:	# run make
	       msg "Making programs and shells ..."
	       make $show all
	       if ( $status ) exit
	       $brk

      case 3:	# install
	       msg "Installing programs and shells ..."
	       make $show install
	       if ( $status ) exit
	       $brk

      case 4:   # man pages
	       nmsg "Name of LOCAL man directory [default: $MAN] "
	       set x=($<)
	       if ( "$x" != "" ) then
		  set MAN=($x) chng
		  msg "Making man directory [$MAN] ..."
		  MKDIRS $MAN/man1 $MAN/man8
		  make MAN=$MAN man
		  if ( $status ) exit
	       endif
	       $brk

      case 5:	# set tape density/footage
	       msg "EXECUTING: dkblks ..."
	       dkblks
	       $brk

      case 6:	# OS release
	       msg "On a new release, DK requires the boot tape to be read."
	       msg "EXECUTING: dkrboot ..."
	       dkrboot
	       $brk

      case 7:	# make a schedule
	       msg "EXECUTING: dksched"
	       dksched
	       if ( $status ) exit
	       $brk

      case 8:	# passwd entry
	       msg "EXECUTING: dkpwd"
	       dkpwd
	       if ( $status ) exit
	       breaksw

      case 9:	# make remote host entries
	       msg "EXECUTING: dkrhosts ..."
	       dkrhosts
	       if ( $status ) exit
	       breaksw

      case 10: 	# show execution
	       if ( "$show" != "" ) then
		  set show=()
		  msg "Commands will be executed."
	       else
		  set show=(-n)
		  msg "Commands will be listed."
	       endif
	       breaksw

      case 11:	# print man pages
	       make $show manformat
	       if ( $status ) exit
	       nmsg "Printer name [RETURN to quit] "
	       set p=($<)
	       if ( $#p == 0 ) breaksw
	       msg "Formating and printing on $p ..."
	       make listman | $p
	       if ( $status ) exit
	       msg "Done."
	       breaksw

      case 12:	# print source
	       nmsg "Printer name [default: lpr] "
	       set p=($<)
	       if ( $#p == 0 ) set p=(lpr)
	       msg "Printing on $p ..."
	       make listsrc | $p
	       if ( $status ) exit
	       msg "Done."
	       breaksw

      case 13:	# print documentation
	       make docprint
	       if ( $status ) exit
	       breaksw

      default:	# what?
	       msg "Unknown entry ($ans)"
	       continue
   endsw
end

if ( $?chng ) then
   msg "Updating installation program ..."
   ed - dkinstall << END
/^set DK=/s:=(\(.*\)):=($DK):p
/^set MAN=/s:=(\(.*\)):=($MAN):p
/^set OPER=/s:=(\(.*\)):=($OPER):p
/^set OPERGID=/s:=(\(.*\)):=($OPERGID):p
w
END
   exit(0)
endif
##################
##################
##################
##################
##################
##################
##################
##################
##################
##################
##################
