#!/bin/bash
#
# Author.....: Jansen Sena <jansen@jsena.info>
# Comment....: Fix the cedilla configuration in Ubuntu 9.04 + Gnome
# 

LIBGTKFILE="/usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules"
ENVFILE="/etc/environment"

DATE="/bin/date"
MV="/bin/mv"
CP="/bin/cp"
RM="/bin/rm"
SED="/bin/sed"
EGREP="/bin/egrep"
AWK="/usr/bin/awk"

NOW=$( ${DATE} '+%Y%m%d%H%M%S' )
LOGFILE="$0_${NOW}.log"

if [ ${LOGNAME} != "root" ]; then
	echo "Você precisa executar o script como super-usuário."
	echo "Abortando execução."
	exit 1
fi

if [ ! -f ${LIBGTKFILE} ]; then
	echo "O arquivo ${LIBGTKFILE} não está presente em seu sistema."
	echo "Você está utilizando o Ubuntu 9.04 e o Gnome como ambiente gráfico?"
	echo "Abortando execução."
	exit 2
fi

if [ ! -f ${ENVFILE} ]; then
	echo "O arquivo ${ENVFILE} não está presente em seu sistema."
	echo "Abortando execução."
	exit 3
fi

$EGREP '^"cedilla" *"Cedilla" *"gtk20" *.*' ${LIBGTKFILE} | $AWK '{ print $5 }' | $EGREP '("|:)en("|:)' >/dev/null 2>&1

if [ $? -eq 0 ]; then
	echo "Arquivo ${LIBGTKFILE} parece já conter a configuração correta para o cedilha."
else
	echo -n "Movendo arquivo ${LIBGTKFILE} para ${LIBGTKFILE}.BKP... "
	$MV ${LIBGTKFILE} ${LIBGTKFILE}.BKP 2>>${LOGFILE}
	if [ $? -eq 0 ]; then
		echo "OK."
	else
		echo "FALHOU."
		echo "Corrija o problema manualmente e tente executar o script novamente."
		echo "Mais informações podem ser obtidas no arquivo de log: ${LOGFILE}."
		exit 4
	fi

	echo -n "Corrigindo arquivo ${LIBGTKFILE}... "
	$SED 's/\(^\"cedilla\" \"Cedilla\" \"gtk20\" \"\/usr\/share\/locale\"\) "\(.*\)"/\1 "\2:en"/' ${LIBGTKFILE}.BKP > ${LIBGTKFILE} 2>>${LOGFILE}
	if [ $? -eq 0 ]; then
		echo "OK."
	else
		echo "FALHOU."
		echo "Corrija o problema manualmente e tente executar o script novamente."
		echo "Abortando execução."
		exit 5
	fi
fi

source ${ENVFILE}
if [ "$GTK_IM_MODULE" == "cedilla" ] && ( $EGREP '^ *export *GTK_IM_MODULE' $ENVFILE >/dev/null 2>&1 ); then
	echo "O arquivo ${ENVFILE} parece já ter a configuração correta para o cedilha."
else	
	echo -n "Copiando arquivo ${ENVFILE} para ${ENVFILE}.BKP... "
	$CP ${ENVFILE} ${ENVFILE}.BKP 2>>${LOGFILE}
	if [ $? -eq 0 ]; then
		echo "OK."
	else
		echo "FALHOU."
		echo "Corrija o problema manualmente e tente executar o script novamente."
		echo "Mais informações podem ser obtidas no arquivo de log: ${LOGFILE}."
		exit 6
	fi

	echo -n "Alterando arquivo ${ENVFILE}... "
	echo "export GTK_IM_MODULE=cedilla" >> ${ENVFILE} 2>>${LOGFILE}
	if [ $? -eq 0 ]; then
		echo "OK."
	else
		echo "FALHOU."
		echo "Corrija o problema manualmente e tente executar o script novamente."
		echo "Abortando execução."
		exit 7
	fi
fi

if [ -n ${LOGFILE} ]; then
	$RM ${LOGFILE} 2>/dev/null
fi

echo "Tudo parece ter funcionado sem problemas."
echo "Reinicie sua sessão e teste se o cedilha está funcionando corretamente. :-)"
echo "http://www.jsena.info"
exit 0


