#! /bin/sh
# installman.sh --- install or uninstall manpages for Vim
#
# arguments:
# 1  what: "install", "uninstall" or "xxd"
# 2  target directory			   e.g., "/usr/local/man/it/man1"
# 3  language addition			   e.g., "" or "-it"
# 4  vim location as used in manual pages  e.g., "/usr/local/share/vim"
# 5  runtime dir for menu.vim et al.	   e.g., "/usr/local/share/vim/vim70"
# 6  runtime dir for global vimrc file	   e.g., "/usr/local/share/vim"
# 7  source dir for help files		   e.g., "../runtime/doc"
# 8  mode bits for manpages		   e.g., "644"
# 9  vim exe name			   e.g., "vim"
# 10 name of vimdiff exe		   e.g., "vimdiff"
# 11 name of evim exe			   e.g., "evim"

errstatus=0

what=$1
destdir=$2
langadd=$3
vimloc=$4
scriptloc=$5
vimrcloc=$6
helpsource=$7
manmod=$8
exename=$9
# older shells don't support ${10}
shift
vimdiffname=$9
shift
evimname=$9

helpsubloc=$scriptloc/doc
printsubloc=$scriptloc/print
synsubloc=$scriptloc/syntax
tutorsubloc=$scriptloc/tutor

if test $what = "install" -o $what = "xxd"; then
   if test ! -d $destdir; then
      echo creating $destdir
      ./mkinstalldirs $destdir
   fi
fi

if test $what = "install"; then
   # vim.1
   echo installing $destdir/$exename.1
   sed -e s+/usr/local/lib/vim+$vimloc+ \
	   -e s+$vimloc/doc+$helpsubloc+ \
	   -e s+$vimloc/print+$printsubloc+ \
	   -e s+$vimloc/syntax+$synsubloc+ \
	   -e s+$vimloc/tutor+$tutorsubloc+ \
	   -e s+$vimloc/vimrc+$vimrcloc/vimrc+ \
	   -e s+$vimloc/gvimrc+$vimrcloc/gvimrc+ \
	   -e s+$vimloc/menu.vim+$scriptloc/menu.vim+ \
	   -e s+$vimloc/bugreport.vim+$scriptloc/bugreport.vim+ \
	   -e s+$vimloc/filetype.vim+$scriptloc/filetype.vim+ \
	   -e s+$vimloc/scripts.vim+$scriptloc/scripts.vim+ \
	   -e s+$vimloc/optwin.vim+$scriptloc/optwin.vim+ \
	   -e 's+$vimloc/\*.ps+$scriptloc/\*.ps+' \
	   $helpsource/vim$langadd.1 > $destdir/$exename.1
   chmod $manmod $destdir/$exename.1

   # vimtutor.1
   echo installing $destdir/$exename""tutor.1
   sed -e s+/usr/local/lib/vim+$vimloc+ \
	   -e s+$vimloc/tutor+$tutorsubloc+ \
	   $helpsource/vimtutor$langadd.1 > $destdir/$exename""tutor.1
   chmod $manmod $destdir/$exename""tutor.1

   # vimdiff.1
   echo installing $destdir/$vimdiffname.1
   cp $helpsource/vimdiff$langadd.1 $destdir/$vimdiffname.1
   chmod $manmod $destdir/$vimdiffname.1

   # evim.1
   echo installing $destdir/$evimname.1
   sed -e s+/usr/local/lib/vim+$vimloc+ \
	   -e s+$vimloc/evim.vim+$scriptloc/evim.vim+ \
	   $helpsource/evim$langadd.1 > $destdir/$evimname.1
   chmod $manmod $destdir/$evimname.1
fi

if test $what = "uninstall"; then
   echo Checking for Vim manual pages in $destdir...
   if test -r $destdir/$exename.1; then
      echo deleting $destdir/$exename.1
      rm -f $destdir/$exename.1
   fi
   if test -r $destdir/$exename""tutor.1; then
      echo deleting $destdir/$exename""tutor.1
      rm -f $destdir/$exename""tutor.1
   fi
   if test -r $destdir/$vimdiffname.1; then
      echo deleting $destdir/$vimdiffname.1
      rm -f $destdir/$vimdiffname.1
   fi
   if test -r $destdir/$evimname.1; then
      echo deleting $destdir/$evimname.1
      rm -f $destdir/$evimname.1
   fi
fi

if test $what = "xxd"; then
   echo installing $destdir/xxd.1
   cp $helpsource/xxd$langadd.1 $destdir/xxd.1
   chmod $manmod $destdir/xxd.1
fi

exit $errstatus

# vim: set sw=3 sts=3 :
