#!/bin/bash
# LinuxMania : ATOK X3 Installer For Fedora 14; 2010/12/13

if [ "$1" != 'terminal' ]; then
	/usr/bin/gnome-terminal -e "su -c \"$0 terminal\""
	sleep 3
	exit $?
fi

TMP=$(mktemp -d)
LOG=$TMP/install.log
ATOK_CD_MOUNT_DIR=/media/ATOKX3

touch $LOG
clear
echo
echo " ■ LinuxMania: ATOK X3 インストーラ (Fedora 14)"
echo ""
echo " 本スクリプトは、Fedora 14 に ATOK X3 for Linux のインストールを行います。"
echo " ATOK X3 のディスクを挿入し、ネットワークに接続可能な状態であることを"
echo " 確認してから開始してください。"
echo ""
echo " なお x86_64 環境にインストールする場合は、ATOK X3 の動作に必要な"
echo " i386 用パッケージのインストールも自動で行われます。"
echo ""
echo " ATOK X3 for Linux の使用許諾契約書に同意して開始しますか？"
echo " 開始する場合は y を、しない場合は n を入力して"
echo -n " Enter キーを押してください [y/n] "
read line
if [ "$line" != "y" ] && [ "$line" != "yes" ] && [ "$line" != "Y" ] && [ "$line" != "YES" ] ; then
	echo
	echo " 中止しました。"
	sleep 3
	exit
fi
echo ""

rc=0
function fnc_exit() {
	rc=$1
	echo | tee -a $LOG
	nlog=${0%sh}$(date +%Y%m%d-%H%M%S).log
	cp -p $LOG $nlog
	chown $LOGNAME $nlog
	if [ $rc -eq 0 ]; then
		echo -e " インストールが完了しました。 [\033[32mOK\033[0m]" | tee -a $LOG
		echo " 設定を反映させるために、一度ログアウトしてください。" | tee -a $LOG
	else
		echo -e " インストール中にエラーが発生しました。[\033[31mエラー\033[0m]" | tee -a $LOG
		echo " エラーログは ${nlog} に保存されています。" | tee -a $LOG
	fi
	echo ""
	echo " Enter キーを押すと終了します。"
	read line
	exit
}

echo | tee -a $LOG
echo " 開始：$(date)" >> $LOG 2>&1
echo " 実行開始..." | tee -a $LOG

# ----------------------------------------------------- #
# 準備

setupatok=${ATOK_CD_MOUNT_DIR}/setupatok.sh
if [ ! -f $setupatok ]; then
	echo "   [エラー] ATOK X3 のディスクを挿入してください。" | tee -a $LOG
	fnc_exit 16
fi

if [ ! -x /usr/bin/expect ]; then
	echo | tee -a $LOG
	echo "   インストールに必要なパッケージのインストール" | tee -a $LOG
	yum -y install expect > /dev/null 2>&1
	rpm -q expect > /dev/null 2>&1
	if [ $? -ne 0 ]; then
		echo | tee -a $LOG
		echo " [エラー] expect コマンドが見つかりません。" | tee -a $LOG
		echo " expect パッケージは次のコマンドでインストールすることができます。" | tee -a $LOG
		echo "   # yum install expect" | tee -a $LOG
		echo | tee -a $LOG
		echo " インストールを中止しました。" | tee -a $LOG
		echo " Enter キーを押すと終了します。"
		read line
		exit
	fi
fi

# ----------------------------------------------------- #
# 依存パッケージのインストール

if [ "$(uname -m)" = "x86_64" ]; then
	echo | tee -a $LOG
	echo "   依存パッケージのインストール" | tee -a $LOG
	yum -y install pam-devel.i686 tcp_wrappers-libs.i686 libxml2-devel.i686 \
		libSM.i686 libXt.i686 PackageKit-gtk-module.i686 gtk2-engines.i686 gtk2-immodule-xim.i686 | tee -a $LOG
	rpm -q pam-devel.i686 tcp_wrappers-libs.i686 libxml2-devel.i686 \
		libSM.i686 libXt.i686 PackageKit-gtk-module.i686 gtk2-engines.i686 gtk2-immodule-xim.i686 >> $LOG 2>&1
	if [ $? -ne 0 ]; then
		echo "   [エラー] 依存パッケージのインストールに失敗" | tee -a $LOG
		echo "   依存パッケージは次のコマンドでインストールすることができます。" | tee -a $LOG
		echo "   # yum install pam-devel.i686 tcp_wrappers-libs.i686 libxml2-devel.i686 libSM.i686 libXt.i686 PackageKit-gtk-module.i686 gtk2-engines.i686 gtk2-immodule-xim.i686" | tee -a $LOG
		fnc_exit 16
	fi
fi

# ----------------------------------------------------- #
# アップデートモジュールのダウンロード
# Reference: http://support.justsystems.com/faq/1032/app/servlet/qasearchtop?MAIN=002003003001001

echo | tee -a $LOG
echo "   ATOK アップデートモジュールのダウンロード" | tee -a $LOG

# ATOK X3 for Linux アップデートモジュール
# Reference: http://support.justsystems.com/faq/1032/app/servlet/qadoc?QID=042459
atokx3up2_tgz="atokx3up2.tar.gz"
atokx3up2_url="http://www3.justsystem.co.jp/download/atok/up/lin/${atokx3up2_tgz}"
wget -nv ${atokx3up2_url} -O ${TMP}/${atokx3up2_tgz} >> $LOG 2>&1 || fnc_exit 16

# ATOK X3 for Linux Ubuntu 9.04(GTK+ 2.16) 対応モジュール
# Reference: http://support.justsystems.com/faq/1032/app/servlet/qadoc?QID=044668
atokx3gtk216_tgz="atokx3gtk216.tar.gz"
atokx3gtk216_url="http://www3.justsystem.co.jp/download/atok/up/lin/${atokx3gtk216_tgz}"
wget -nv ${atokx3gtk216_url} -O ${TMP}/${atokx3gtk216_tgz} >> $LOG 2>&1 || fnc_exit 16

# ATOK X3 for Linux用郵便番号辞書
# Reference: http://support.justsystems.com/faq/1032/app/servlet/qadoc?QID=042740
a20y1011lx_tgz="a20y1011lx.tgz"
a20y1011lx_url="http://www3.justsystem.co.jp/download/zipcode/up/lin/${a20y1011lx_tgz}"
wget -nv ${a20y1011lx_url} -O ${TMP}/${a20y1011lx_tgz} >> $LOG 2>&1 || fnc_exit 16

# ----------------------------------------------------- #
echo | tee -a $LOG
echo "   ATOK 本体のインストール" | tee -a $LOG

gtk_immodules=/usr/lib/gtk-2.0/2.10.0/gtk.immodules
touch $gtk_immodules

setupatok=${ATOK_CD_MOUNT_DIR}/setupatok.sh
tmp_expect=${TMP}/expect
cat > ${tmp_expect} 2>>$LOG <<EOF || fnc_exit 16
#!/usr/bin/expect --
set timeout 30
spawn bash ${setupatok}
expect "(yes/no)" {
    send "yes\n"
}
expect "Input path of gtk.immodules for 32bit application:" {
    send "${gtk_immodules}\n"
}
expect {
    "Do you want to delete above package" {
        send "yes\n"
    }
    "Unpacking iiimf-client-lib"
}
sleep 10
expect "Installation has been completed."
expect eof
EOF
chmod 755 ${tmp_expect}
${tmp_expect} >> $LOG 2>&1

# atokx パッケージ確認
rpm -qa 'atokx' 2>> $LOG | grep -E '^atokx' >> $LOG 2>&1 || fnc_exit 16

# ----------------------------------------------------- #
# アップデートモジュールを適用
echo | tee -a $LOG
echo "   ATOK アップデートモジュールの適用" | tee -a $LOG

tar zxv -C ${TMP} -f ${TMP}/${atokx3up2_tgz} >> $LOG 2>&1 || fnc_exit 16
bash ${TMP}/atokx3up2/setupatok_up2.sh >> $LOG 2>&1 || fnc_exit 16
tar zxv -C / -f ${TMP}/${atokx3gtk216_tgz} >> $LOG 2>&1 || fnc_exit 16
tar zxv -C / -f ${TMP}/${a20y1011lx_tgz} >> $LOG 2>&1 || fnc_exit 16

# ----------------------------------------------------- #
# 設定
echo | tee -a $LOG
echo "   設定" | tee -a $LOG
bash /opt/atokx3/sample/setting_redhat5.sh >> $LOG 2>&1 || fnc_exit 16

IIIMF_CONF=/etc/X11/xinit/xinput.d/iiimf.conf
grep "#.*gnome-im-settings-daemon" $IIIMF_CONF > /dev/null 2>&1
if [ $? -ne 0 ]; then
	rc_sub=0
	sed -i 's/gnome-im-settings-daemon/#gnome-im-settings-daemon/' $IIIMF_CONF || rc_sub=11
	echo "DISABLE_IMSETTINGS=true" >> $IIIMF_CONF || rc_sub=12
	if [ $rc_sub -ne 0 ]; then
		fnc_exit $rc_sub
	fi
fi

# yum の更新対象から外す
YUM_CONF=/etc/yum.conf 
if ! grep -qs -E '^exclude' $YUM_CONF; then
	echo "exclude=scim* iiimf*" >> $YUM_CONF
elif ! grep -qs -E '^exclude.*scim*' $YUM_CONF; then
	sed -i.$(date +%Y%m%d%H%M%S) 's/^\(exclude=.*\)$/\1 scim* iiimf*/' $YUM_CONF
	if [ $? -ne 0 ]; then
		fnc_exit 16
	fi
fi

fnc_exit 0



