#!/bin/bash

SamplesDir="samples/" # Must include trailing /
ProgressFile="progress.txt"
if ! [ -e $SamplesDir ]; then echo "Error: $SamplesDir does not exist (are you in the right directory?)"; exit 1; fi
if ! [ -e $ProgressFile ]; then echo "Error: $ProgressFile does not exist (are you in the right directory?)";exit 1;fi

if test "a$1" == a; then
  echo "Usage: $0 oldname newname"
  echo "oldname and newname are relative to $SamplesDir, and can be prefixes of several files/directories"
  echo "Moves files from one samples directory to another, keeping $ProgressFile adjusted.  Make sure gradint is not running (including waiting for start) when in use."
  exit 1
fi

Src=$1
Dest=$2

find "$SamplesDir" -follow -type f | grep "^$SamplesDir$Src" | \
while true; do read || break;
  SrcFile=$REPLY
  DestFile=$(echo "$SrcFile"|sed -e "s|^$SamplesDir$Src|$SamplesDir$Dest|")
  mkdir -p "$DestFile" ; rmdir "$DestFile" # ensure parent dirs exist before moving file across
  mv -b "$SrcFile" "$DestFile"
  SrcFile=$(echo "$SrcFile"|sed -e "s|$SamplesDir||")
  DestFile=$(echo "$DestFile"|sed -e "s|$SamplesDir||")
  gzip -fdc "$ProgressFile" | sed -e "s|$SrcFile|$DestFile|g" > /tmp/newprog ; mv /tmp/newprog "$ProgressFile" # (ideally should re-write to batch these changes, but leave like this for now in case need to recover from unfinished operation)
done

rmdir "$SamplesDir$Src" 2>/dev/null >/dev/null # IF it's a directory