#!/bin/sh
##-----------------------------------------------------------------------
#! Update AIPS text BUT not binary areas via rsynch
## UPDATE UNIX
#-----------------------------------------------------------------------
#;  Copyright (C) 2023-2024
#;  Associated Universities, Inc. Washington DC, USA.
#;
#;  This program is free software; you can redistribute it and/or
#;  modify it under the terms of the GNU General Public License as
#;  published by the Free Software Foundation; either version 2 of
#;  the License, or (at your option) any later version.
#;
#;  This program is distributed in the hope that it will be useful,
#;  but WITHOUT ANY WARRANTY; without even the implied warranty of
#;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#;  GNU General Public License for more details.
#;
#;  You should have received a copy of the GNU General Public
#;  License along with this program; if not, write to the Free
#;  Software Foundation, Inc., 675 Massachusetts Ave, Cambridge,
#;  MA 02139, USA.
#;
#;  Correspondence concerning AIPS should be addressed as follows:
#;         Internet email: aipsmail@nrao.edu.
#;         Postal address: AIPS Project Office
#;                         National Radio Astronomy Observatory
#;                         520 Edgemont Road
#;                         Charlottesville, VA 22903-2475 USA
#-----------------------------------------------------------------------
#   Update the $AIPS_VERSION/$ARCH areas (mostly $LOAD) from NRAO.
#   $RsyncMaster  must be set as well as $LogFile, $AIPS_VERSION, $ARCH
#-----------------------------------------------------------------------

echo ""                   >> $LogFile
echo "UPDPSYNC:  doing binary synchronization" >> $LogFile
[ -t 1 ] && echo "UPDPSYNC:  doing binary synchronization"
echo ""                   >> $LogFile
#                                        rsync
rcount=0
MAX_RCOUNT=20           #Give ourselves 200 minutes before giving up
#
#   cd $AIPS_VERSION/$ARCH
cd $AIPS_VERSION
basen=`basename $AIPS_VERSION`
baset=`basename $AIPS_ROOT/TEXT`
while true
do
                         #If the grep succeeds then do the rsync for real
                         #otherwise wait ten minutes and try again
                         #if we don't succeed after 20 tries give up
     INPROG=`rsync -nvca $RsyncMaster::$basen/SYSTEM/* | grep BUILD.INPROG`
     INPROG="X$INPROG"
     if [ "$INPROG" != "X" ]
     then
        [ -t 1 ] && echo "UPDPSYNC: rsync build underway, waiting...."
        echo "UPDPSYNC: rsync build underway, waiting...."  >> $LogFile
        rcount=`expr $rcount + 1`
        if [ $rcount -gt $MAX_RCOUNT ]
        then
           echo ""                                                   >> $LogFile
           [ -t 1 ] && echo "UPDPSYNC: rsync failed to upate, try again later."
           echo "UPDPSYNC: rsync failed to upate, try again later."  >> $LogFile
           echo ""                                                   >> $LogFile
           break
        fi
        sleep 600
     else
        echo ""           >> $LogFile
        [ -t 1 ] && echo "UPDPSYNC: rsync $ARCH/SYSTEM"
        echo "UPDPSYNC: rsync $ARCH/SYSTEM"           >> $LogFile
        rsync -vcaz --timeout=480 $RsyncMaster::$basen/$ARCH/SYSTEM/* $ARCH/SYSTEM >>$LogFile
#        [ -t 1 ] && echo "UPDPSYNC: rsync $ARCH/LIBR"
#        echo "UPDPSYNC: rsync $ARCH/LIBR"           >> $LogFile
#        rsync -vcaz --timeout=480 $RsyncMaster::$basen/$ARCH/LIBR/* $ARCH/LIBR >>$LogFile
#        [ -t 1 ] && echo "UPDPSYNC: rsync $ARCH/LOAD"
#        echo "UPDPSYNC: rsync $ARCH/LOAD"           >> $LogFile
#        rsync -vcaz --timeout=960 $RsyncMaster::$basen/$ARCH/LOAD/* $ARCH/LOAD >>$LogFile
        [ -t 1 ] && echo "UPDPSYNC: rsync $ARCH/LOAD/contain*"
        echo "UPDPSYNC: rsync $ARCH/LOAD/contain*"           >> $LogFile
        rsync -vcaz --timeout=960 $RsyncMaster::$basen/$ARCH/LOAD/contain* $ARCH/LOAD/ >>$LogFile
#
        [ -t 1 ] && echo "UPDPSYNC: rsync AIPS"
        echo "UPDPSYNC: rsync AIPS"           >> $LogFile
        rsync -vcaz --timeout=480 $RsyncMaster::$basen/AIPS/* AIPS >>$LogFile
        [ -t 1 ] && echo "UPDPSYNC: rsync APL"
        echo "UPDPSYNC: rsync APL"           >> $LogFile
        rsync -vcaz --timeout=480 $RsyncMaster::$basen/APL/* APL >>$LogFile
        [ -t 1 ] && echo "UPDPSYNC: rsync DOC"
        echo "UPDPSYNC: rsync DOC"           >> $LogFile
        rsync -vcaz --timeout=480 $RsyncMaster::$basen/DOC/* DOC >>$LogFile
        [ -t 1 ] && echo "UPDPSYNC: rsync HELP"
        echo "UPDPSYNC: rsync HELP"           >> $LogFile
        rsync -vcaz --timeout=480 $RsyncMaster::$basen/HELP/* HELP >>$LogFile
        [ -t 1 ] && echo "UPDPSYNC: rsync HIST"
        echo "UPDPSYNC: rsync HIST"           >> $LogFile
        rsync -vcaz --timeout=480 $RsyncMaster::$basen/HIST/* HIST >>$LogFile
        [ -t 1 ] && echo "UPDPSYNC: rsync INC"
        echo "UPDPSYNC: rsync INC"           >> $LogFile
        rsync -vcaz --timeout=480 $RsyncMaster::$basen/INC/* INC >>$LogFile
        [ -t 1 ] && echo "UPDPSYNC: rsync Q"
        echo "UPDPSYNC: rsync Q"           >> $LogFile
        rsync -vcaz --timeout=480 $RsyncMaster::$basen/Q/* Q >>$LogFile
        [ -t 1 ] && echo "UPDPSYNC: rsync QY"
        echo "UPDPSYNC: rsync QY"           >> $LogFile
        rsync -vcaz --timeout=480 $RsyncMaster::$basen/QY/* QY >>$LogFile
        [ -t 1 ] && echo "UPDPSYNC: rsync RUN"
        echo "UPDPSYNC: rsync RUN"           >> $LogFile
        rsync -vcaz --timeout=480 $RsyncMaster::$basen/RUN/* RUN >>$LogFile
        [ -t 1 ] && echo "UPDPSYNC: rsync SYSTEM"
        echo "UPDPSYNC: rsync SYSTEM"           >> $LogFile
        rsync -vcaz --timeout=480 $RsyncMaster::$basen/SYSTEM/* SYSTEM >>$LogFile
        [ -t 1 ] && echo "UPDPSYNC: rsync Y"
        echo "UPDPSYNC: rsync Y"           >> $LogFile
        rsync -vcaz --timeout=480 $RsyncMaster::$basen/Y/* Y >>$LogFile
        [ -t 1 ] && echo "UPDPSYNC: rsync TEXT"
        cd $AIPS_ROOT
        echo "UPDPSYNC: rsync TEXT"           >> $LogFile
        rsync -vcaz --timeout=480 $RsyncMaster::$baset/* TEXT >>$LogFile
        echo ""           >> $LogFile
        break
     fi
done
#
#                                        reports
#cd $AIPS_VERSION/$ARCH/UPDATE
#echo ""                   >> $LogFile
#echo "UPDPSYNC:  COMRPLs" >> $LogFile
#echo ""                   >> $LogFile
#cat COMRPL.UNQ            >> $LogFile
#echo ""                   >> $LogFile
#echo "UPDPSYNC:  COMLNKs" >> $LogFile
#echo ""                   >> $LogFile
#cat COMLNK.UNQ            >> $LogFile
#echo ""                   >> $LogFile
