#!/bin/csh -f
#
#  PKGUPDATE - Update the named packages

unalias 	grep ls

set pkg		= ""
set all		= no
set list_only	= no

if ($#argv < 1) then
    exit 0
else
    # Process cmdline flags.
    while ("$1" != "")
      switch ("$1")
      case -all:                          # clean all package sources
        set all = yes
        breaksw
      case -list:                         # list packages needing updating
        set list_only = yes
        breaksw
      default:
        set pkg = $1
        break
      endsw

      shift
   end
endif


set  bindir     = "`dirname $0`"                # get iraf root directory 
set  irafdir    = $bindir:h

set REPO	= `${irafdir}/util/pkgrepo`
if ($?IRAFARCH) then
    set arch    = $IRAFARCH
else
    set arch    = `${irafdir}/unix/hlib/irafarch.csh -actual`
endif

echo "Updating repository data ...."
../util/pkginit                                # init repository information

# Check for a self-update.
if ("$pkg" == "-self") then
    echo "Updating utility scripts ...."
    /bin/rm -f /tmp/util.tgz
    ../util/pkgget ${REPO}/util-universal.tar.gz /tmp/util.tgz
    (chdir ../util ; tar zxf /tmp/util.tgz ; /bin/rm -f /tmp/util.tgz)
    echo "Done"
    exit 0
endif
 
# Check for a extern update.
if ("$pkg" == "-config") then
    echo "Updating config script ...."
    ../util/pkgget ${REPO}/config-universal configure
    chmod 777 configure
    echo "Done"
    exit 0
endif
 


# Process the requested package and any dependencies.
foreach ip ( `cat .repo_pkgs` )

  if (-e $ip/.installed) then

     set pd = `grep $ip $ip/.installed | awk '{printf("%s\n", $1)}'`
     set rd = `grep $ip .repo_manifest | head -1 | awk '{printf("%s\n", $3)}'`

     set alist = `(chdir $ip; ls -1 .inst*.* | sed -e "s/\.installed\.//g")`

     if ($rd > $pd) then

       # Update each installed architecture automatically.
       foreach a ( $alist )

	 if ("$list_only" == "yes") then
            printf "Package %-12s for %-8s is out of date ....\n" $ip $a
	 else
	    if ("$all" == "yes" || "$ip" == "$pkg") then
              echo "Updating package '$ip' for '$a' ...."
              ../util/pkginst $ip
	    endif
	 endif
       end

     else
	if ("$list_only" == "yes" || $rd <= $pd) then
           printf "Package %-12s is current ....\n" $ip
	endif
     endif

  else
     printf "Package %-12s is not installed ....\n" $ip
  endif

  ${irafdir}/util/pkgenv -init
end

echo "Done"
exit 0
