#!/bin/bash

if [ -r /etc/repopusher/repopusher.conf ]; then
. /etc/repopusher/repopusher.conf
else
    echo "Could not read /etc/repopusher/repopusher.conf" >&2
    exit 1
fi

REPOPUSH_NO_SCAN_FILE='/etc/no_repopush_scan'

function skip_home(){
  if [ "${project:0:5}" == "home:" ]; then
     echo "==== skip $project ($date)" >> $templog
     RC=skip
     sync_finished
     exit
  fi
}

function sync_start(){
        projectdir="`cat $arrived/$project`"
        # this path is a directory this seems to be wrong.
        # files="$repodata$projectdir"
        # that one looks better ;)
        files="$arrived/$project" 

        #dates=`date +%s`
        dates=`date +%Y%m%d-%H%M%S.%N`
        date=`date +%Y%m%d-%H%M%S`
        templog=$logdir/tmp/$server.log.$dates

        if [ "$project" != "ZZZ.fullsync" ]; then
  	        rsync_call="$rsync_call --files-from=$files --exclude=P-$project-P"
        fi
}

function sync_do(){
        echo "==== start ========================== ${date}" >> $templog

        # switch off globbing, to the excludes work
        set -f
        #echo $server: rsync cmd: $cmd
        echo $cmd >> $templog 2>&1
        $cmd >> $templog 2>&1
        RC=$?
        set +f
}

function sync_finished(){

        echo "==== end   ======== RC=${RC} ============ ${date}" >> $templog

        if [ "$RC" != 0 -a "$RC" != skip ]; then
                echo rsync failed... marking as not pushed >> $templog
                push_file="$pushed$project.$server"
                rm -v $push_file >> $templog
                sleep $sleep_after_failed_transfer
        fi


        file="$finished/${server}.${project}"
        $debug && echo "$server: finishing $project ($file) RC=$RC" >> $templog
        echo "$server"     >  "$file"
        echo "$projectdir" >> "$file"

        if [ "$RC" = 0 ]; then
                if ! test -e "$REPOPUSH_NO_SCAN_FILE" ; then
                        echo "mb scan $server -d repositories/$projectdir" >> $templog
                        mb scan "$server" -d "repositories/$projectdir" >> $templog 2>&1
                        RC=$?
                else
                        logger "skipping scanning $projectdir on $server due to /etc/no_repopush_scan"
                        echo "skipping scanning $projectdir on $server due to /etc/no_repopush_scan" >> $templog 
                fi
                echo "==== end scan ===== RC=${RC} ============ ${date}" >> $templog
        fi

        cat $templog | /usr/sbin/cronolog -S $logdir/$server.log "$logdir/%Y/%m/%d/$server-%Y%m%d.log"
        rm $templog

        $debug && echo "$server: $projectdir done; unlocking ($lock)" >> $templog
        rm -f "$lock"

}


