#!/bin/sh
# Schemas Optimizer
# Copyright 2006 Joel Bryan T. Juliano <joelbryan.juliano@gmail.com>
# GNU Public License

function usage {
echo "Usage: schemas-optimize [options]"
echo ""
echo "options:"
echo "perform -- optimize gconf schemas database"
echo "restore -- undo all optimization"
}

function optimize {
schemas_dir="/usr/share/gconf/schemas"
action="`ls $schemas_dir | grep schemas`"
tmpdir="/tmp"
tmp_suffix="_tmp"
counter=0
rounds=2


while [ $counter -ne $rounds ]
	do

		for i in $action
		do
		cat $schemas_dir/$i | sed -e '/^[ \t]*$/d;s,^[ \t]*,,;s,>[ \t]*<,><,g;s,[ \t]*$,,' > "$tmpdir/$i$tmp_suffix"
		cat "$tmpdir/$i$tmp_suffix" | tr '\012' ' ' > $tmpdir/$i  2> /dev/null
		sudo cp $tmpdir/$i $schemas_dir 2> /dev/null
		rm -rf $tmpdir/$i
		done

		counter=$(( $counter + 1 ))
	done
}


function backup {

	if [ ! -s /usr/share/gconf/schemas/backup ]
	then
		schemas_dir="/usr/share/gconf/schemas"
		sudo mkdir $schemas_dir/backup
		sudo cp $schemas_dir/*.schemas $schemas_dir/backup
	fi

}

function restore {
	schemas_dir="/usr/share/gconf/schemas"
	sudo cp $schemas_dir/backup/*.schemas $schemas_dir/
}

if [ -s $1 ]
then
	usage
fi

if [ "$1" = "perform" ] 
then
	backup && optimize
fi

if [ "$1" = "restore" ]
then
	restore
fi
