#!/bin/bash
wikiname=$1
FOSSILBIN=fossil
if [ x"$wikiname" == "x" ];then
echo "Usage: viwiki wikipagename"
exit
fi
$FOSSILBIN sync
# wikitmpfile=`mktemp /tmp/${USER}_wikiedit.XXXXXXX`
wikitmpfile=${wikiname}.in
if ! $FOSSILBIN wiki export "$wikiname" 2> /dev/null 1> $wikitmpfile ;then
cat /dev/null > $wikitmpfile
wikipagestate='new'
else
wikipagestate='existing'
fi
# make a backup copy of the extracted file to diff detect if changed
cp $wikitmpfile ${wikitmpfile}.orig
if [[ x"$EDITOR" == "x" ]];then # || [[ x"$VISUAL" == "x" ]];then
EDITOR="gvim -f"
fi
echo $EDITOR | grep -q -e gvim
isGvim=$?
echo $EDITOR | grep -q -e 'gvim.*-f'
hasF=$?
if [[ $isGvim == 0 && $hasF != 0 ]]; then
EDITOR="$EDITOR -f"
fi
$EDITOR $wikitmpfile
if ! diff -q $wikitmpfile ${wikitmpfile}.orig;then
echo "Saving changes to $wikitmpfile to wiki"
if [ $wikipagestate == 'new' ];then
$FOSSILBIN wiki create "$wikiname" $wikitmpfile
else
$FOSSILBIN wiki commit "$wikiname" $wikitmpfile
fi
else
echo "Not saving, no changes to $wikitmpfile."
fi
$FOSSILBIN sync
# NOTE// We *keep* the wikitmpfile but remove the orig copy
rm -f ${wikitmpfile}.orig