#! /bin/sh

# This script synchronizes directories on a laptop with a file server

# Transform named parameters to environment variables

for x ; do export ${x%=*}="${x#*=}"; done

# Define some defaults

if [ "$HOMESERVER" = "" ]; then
  export HOMESERVER=bethel.munts.net
fi

if [ "$TESTFLAG" = "" ]; then
  export TESTFLAG=-n
fi

GitDir()
{
  if [ -d "$1" ]; then
    echo "$1"
    savedir=`pwd`
    cd "$1"
    git status
    git pull
    cd "$savedir"
    echo " "
  fi
}

SvnDir()
{
  if [ -d "$1"/.svn ]; then
    echo "$1"
    svn status --no-ignore "$1"
    svn update "$1"
    echo " "
  else
    for f in "$1"/* ; do
      if [ -d "$f"/.svn ]; then
        svn status --no-ignore "$f"
        svn update "$f"
        echo " "
      fi
    done
  fi
}

SyncDir()
{
  if [ -d "$2" ]; then
    echo "$2"
    rsync -avc $TESTFLAG --delete "$1" "$2" 2>&1 | grep -e 'sent .* received' -v | grep -v 'receiving file list' | grep -v 'total size is' | grep -v -E '^.*/$'
  fi
}

SyncDirTime()
{
  if [ -d "$2" ]; then
    echo "$2"
    rsync -av $TESTFLAG --delete --modify-window=2 "$1" "$2"  2>&1 | grep -e 'sent .* received' -v | grep -v 'receiving file list'| grep -v 'total size is' | grep -v -E '^.*/$'
  fi
}

# Remove flotsam

if [ -x /opt/bin/cleanupfiles ]; then
  /opt/bin/cleanupfiles
fi

if [ -x /usr/local/bin/cleanupfiles ]; then
  /usr/local/bin/cleanupfiles
fi

if [ -x /usr/local/bin/cleanupfiles.bat ]; then
  /usr/local/bin/cleanupfiles.bat
fi

echo " "

# Update git checkout directories

GitDir "$HOME/adaeurope2019"
GitDir "$HOME/adaeurope2023"
GitDir "$HOME/arm-mcu"
GitDir "$HOME/avr-mcu"
GitDir "$HOME/libsimpleio"
GitDir "$HOME/muntsos"
GitDir "$HOME/rpi-mcu"

# Update subversion checkout directories

SvnDir "$HOME/projects"
SvnDir "$HOME/src"
SvnDir "$HOME/www"

if [ "`hostname`" = "$HOMESERVER" ]; then
  exit 0
fi

# Update document directories

SyncDir $HOMESERVER:doc/					"$HOME/doc"

# Update certain directories stored on shiloh

if [ "`hostname`" != "shiloh" ]; then
  if [ "${OS}" = "Windows_NT" ]; then
    C:/Windows/system32/ping -n 1 shiloh.munts.net >/dev/null 2>&1
  else
    ping -c 1 shiloh.munts.net >/dev/null 2>&1
  fi

  if [ $? -eq 0 ]; then
    #SyncDir shiloh.munts.net:/export/recordings/Music/		"$HOME/Music"
    #SyncDir shiloh.munts.net:/export/software/Books/		"$HOME/Books"
    SyncDir shiloh.munts.net:/export/software/Windows/Misc/	/c/PROGRA~1/Misc
    SyncDir shiloh.munts.net:/export/software/Windows/Misc/	/c/PROGRA~2/Misc
  fi
fi

# Update Alire index(es)

if [ -d "$HOME/.config/alire/indexes" ]; then
  ${ALR:-alr} index --list
  echo ""
  ${ALR:-alr} index --update-all
fi
