#!/bin/sh

set -e

copies="$1"
echo "$copies" | grep -q ^/ || copies="`pwd`/$copies"

cd /tmp/
mkdir temp.$$.darcsise
cd temp.$$.darcsise

d=`date +%Y-%m-%d`

dw()
{
	darcs w "$@"
}

mkdir travail
( cd travail && darcs init )
darcs get travail sas
mkdir final
( cd final && darcs init )
for i in "$copies"/*
do
	( cd $i && tar cf - . ) | ( cd travail && tar xf - )
	( cd travail && echo "# C'est parti. Enregistrez vos modifs sous darcs, puis quand cet ensemble de fichier aura été traité, passez au suivant en sortant du shell (^D)." >&2 && bash )
	( cd sas && darcs pull --dry-run -a --xml-output ) | grep hash= | while read i
	do
		h="`echo "$i" | sed -e "s/.*hash='//" -e "s/'.*//"`"
		( cd sas && darcs pull -a --matches="hash $h" )
		rsync -a --exclude _darcs sas/ final/
#( cd final && dw -sl ) | cat
		( cd final && dw -sl ) | grep ^a | cut -c 3- | tr '\012' '\000' > temp.add
		cat temp.add | ( cd final && xargs -0 darcs add )
# Alors là on cause, juste parce qu'apparemment si on va trop vite dans notre boucle, darcs perd les pédales.
#(
#( cd final && dw -sl ) | cut -c 3-  | tr '\012' '\000' | ( cd travail && xargs -0 stat -f %Sm -t "%Y%m%d%H%M%S" ) | sort | tail -1
#( cd sas && darcs log --matches="hash $h" ) | sed -e '1s/.*  //' -e '2s/^  \* //' -e '3,$s/^  //'
#)
		(
			( cd final && dw -sl ) | cut -c 3- | grep -v /$ | sed -e 's/ [-+][0-9].*//' | tr '\012' '\000' | ( cd travail && xargs -0 stat -f %Sm -t "%Y%m%d%H%M%S" ) | sort | tail -1
			( cd sas && darcs log --matches="hash $h" ) | sed -e '1s/.*  //' -e '2s/^  \* //' -e '3,$s/^  //'
		) > temp.record
		cat temp.record | ( cd final && darcs record -a --pipe )
	done
done
