#!/bin/sh

    # OpenOffice.org 1.0日本語版導入プログラム for Linux ver 0.5.0
    # (C) 2002-2003 OpenOffice.org日本ユーザー会. All Right Reserved.
    #
    # このプログラムを再頒布・改変する前に、かならずREADMEをご覧になってください。
    #また、使用方法もREADMEに含まれています。

###########################################################################
# ヘルプを表示する関数                                                    #
###########################################################################
ShowHelp ()
{
cat <<EOF

OpenOffice.org 1.0日本語版導入プログラム

使用方法: ./ja_config [-v|--version] [-h|--help] [-g|--gothic <gothic_font>] [-|--mincho <mincho_font>] [-u|--ui <ui_font>] [-net|-work] ooohome

    ooohome : OpenOffice.org 1.0をインストールしたディレクトリを指定します

    オプション 
	-v, --version
            バージョン情報を出力して終了します
	-h, --help
            このヘルプを出力して終了します
	-g <gothic_font>, --gothic <gothicfont>
            <gothic_font>に指定されたフォントをフォントの置換候補や標準テンプレートの標準フォントに適用します
	    (デフォルト : 東風ゴシック)
        -m <mincho_font>, --mincho <mincho_font>
            <mincho_font>に指定されたフォントをフォントの置換候補や標準テンプレートのフォントに適用します
            (デフォルト : 東風明朝)
        -u <ui_font>, --ui <ui_font>
            <ui_font>に指定されたフォントをフォントの置換候補に適用します
            (デフォルト : <gothic_font>)
	-net
	    ネットワークインストールしたディレクトリに設定をする為のオプションです
	-work 
	    ワークステーションインストールしたディレクトリに設定をする為のオプションです
EOF
}

###########################################################################
# バージョンを表示する関数                                                #
###########################################################################
ShowVersion ()
{
cat <<EOF

OpenOffice.org 1.0日本語版導入プログラム for Linux 0.5.2

(C) 2002-2003 OpenOffice.org日本ユーザー会
http://oooug.jp/

EOF
}

###########################################################################
# Windows用テンプレートのフォント名を変換し、コピー                       #
#  $1 -> 元になるWindows用のデータ                                        #
#  $2 -> 変換したファイルのコピー先                                       #
###########################################################################
ConvertTemplateFont ()
{
    # 作業用ディレクトリの作成
    temp_dir="${script_dir}/temp"

    if [ -d ${temp_dir} ] ; then
	rm -rf ${temp_dir}
    fi

    mkdir $temp_dir
    cd "${script_dir}/temp"

    # テンプレートの解凍を行ない、xmlファイルのエンコードを
    # UTF-8からEUC-JPに変換
    unzip -q -d ${temp_dir} $1
    iconv -c -f UTF-8 -t EUC-JP "${temp_dir}/content.xml" > "${temp_dir}/content.xml.euc" 2> /dev/null
    iconv -c -f UTF-8 -t EUC-JP "${temp_dir}/styles.xml" > "${temp_dir}/styles.xml.euc" 2> /dev/null
    iconv -c -f UTF-8 -t EUC-JP "${temp_dir}/meta.xml" > "${temp_dir}/meta.xml.euc" 2> /dev/null
    iconv -c -f UTF-8 -t EUC-JP "${temp_dir}/settings.xml" > "${temp_dir}/settings.xml.euc" 2> /dev/null

    # Windows用フォントを置換
    sed -e s/"ＭＳ Ｐゴシック"/"$gothic"/g -e s/"ＭＳ Ｐ明朝"/"$mincho"/g -e s/"ＭＳ ゴシック"/"$gothic"/g -e s/"ＭＳ 明朝"/"$mincho"/g -e s/"MS UI Gothic"/"$ui"/g content.xml.euc | iconv -f EUC-JP -t UTF-8 > content.xml
    sed -e s/"ＭＳ Ｐゴシック"/"$gothic"/g -e s/"ＭＳ Ｐ明朝"/"$mincho"/g -e s/"ＭＳ ゴシック"/"$gothic"/g -e s/"ＭＳ 明朝"/"$mincho"/g -e s/"MS UI Gothic"/"$ui"/g styles.xml.euc | iconv -f EUC-JP -t UTF-8 > styles.xml
    sed -e s/"ＭＳ Ｐゴシック"/"$gothic"/g -e s/"ＭＳ Ｐ明朝"/"$mincho"/g -e s/"ＭＳ ゴシック"/"$gothic"/g -e s/"ＭＳ 明朝"/"$mincho"/g -e s/"MS UI Gothic"/"$ui"/g meta.xml.euc | iconv -f EUC-JP -t UTF-8 > meta.xml
    sed -e s/"ＭＳ Ｐゴシック"/"$gothic"/g -e s/"ＭＳ Ｐ明朝"/"$mincho"/g -e s/"ＭＳ ゴシック"/"$gothic"/g -e s/"ＭＳ 明朝"/"$mincho"/g -e s/"MS UI Gothic"/"$ui"/g settings.xml.euc | iconv -f EUC-JP -t UTF-8 > settings.xml

    # 一時作成したEUCファイルを削除
    rm -f "${temp_dir}/content.xml.euc" "${temp_dir}/styles.xml.euc" "${temp_dir}/meta.xml.euc" "${temp_dir}/settings.xml.euc"

    # 目標のファイルが存在する場合にはバックアップをとる
    if [ -f $2 ] ; then
	mv -f $2 "$2~"
    fi

    # zipで目標にアーカイブ
    zip -rq $2 *

    # 作業ディレクトリの削除
    rm -rf ${temp_dir}

#    echo "$1 -> $2"
}

###########################################################################
# ここからメインルーチン                                                  #
###########################################################################

# スクリプトファイルがあるディレクトリに移動
cd `dirname $0`

# スクリプトファイルがあるディレクトリを絶対パスで取得
script_dir=`pwd`


#オプションのデフォルトの設定
gothic=東風ゴシック
mincho=東風明朝
ui=$gothic
single=true
net=false
work=false

#引数の処理
while [ $# -gt 0 ] ; do
    case "$1" in
	-h | --help)
	    ShowHelp
	    exit 1;;
	-v | --version)
	    ShowVersion
	    exit 1;;
	-g | --gothic)
	    gothic=$2
	    shift 2;;
	-m | --mincho)
	    mincho=$2
	    shift 2;;
        -u | --ui)
            ui=$2
            shift 2;;
	-net)
	    single=false
	    net=true
	    work=false
	    shift 1;;
	-work)
	    single=false
	    net=false
	    work=true
	    shift 1;;
	*)
	    lastarg=$1
	    shift;;
    esac
done

#OpenOffice.org 1.0のホームディレクトリ
ooohome=$lastarg
#ユーザーが指定したOpenOffice.orgのホームディレクトリの終端が"/"である場合には削除する
ooohome=`echo ${ooohome} | sed -e s/\\\/$//`

#指定したパスの確認
echo "OpenOffice.orgのインストール先は「${ooohome}」でよろしいですか?(y/n)"
read YesNo
while [ "${YesNo}" = "n" ];do
    echo "OpenOffice.orgをインストールしたパスを入力してください:"
    read ooohome
    echo "OpenOffice.orgのインストール先は「${ooohome}」でよろしいですか?(y/n)"
    read YesNo
done

#指定されたOpenOffice.org 1.0のホームディレクトリが存在しない場合は終了する
if [ ! -d ${ooohome}/user ] ; then
    echo "エラー : 指定されたディレクトリ ${ooohome} は存在しません"
    exit 1
fi

# ユーザーが指定したOpenOffice.orgのホームディレクトリの終端が"/"であった場合には削除する
ooohome=`echo ${ooohome} | sed -e s/\\\/$//`
# "/"に対するエスケープシーケンスを付加
Eooohome=`echo ${ooohome} | sed -e s/\\\//\\\\\\\\\\\//g`

#OpenOffice.orgの各種テンプレートが置かれるディレクトリ
template_dir=${ooohome}/user/template

# シングルユーザーインストールかワークステーションインストールの場合
if [ ${single} = true -o ${work} = true ] ; then

# dataディレクトリのうちシングルユーザーインストールならばsg
# ワークステーションインストールならばwsディレクトリを使用
if [ ${single} = true ] ; then
    sg_ws=sg
else
    sg_ws=ws
fi

# フォントの置換リストをコピー
if [ -f "${ooohome}/user/config/registry/instance/org/openoffice/Office/Common.xml" ] ; then
    mv -f "${ooohome}/user/config/registry/instance/org/openoffice/Office/Common.xml" "${ooohome}/user/config/registry/instance/org/openoffice/Office/Common.xml~"
fi
iconv -f UTF-8 -t EUC-JP "${script_dir}/data/${sg_ws}/common.xml" | sed -e s/"ＭＳ Ｐゴシック"/"${gothic}"/g -e s/"ＭＳ ゴシック"/"${gothic}"/g -e s/"ＭＳ Ｐ明朝"/"${mincho}"/g -e s/"ＭＳ 明朝"/"${mincho}"/g -e s/"MS UI Gothic"/"${ui}"/g | iconv -f EUC-JP -t UTF-8 > "${ooohome}/user/config/registry/instance/org/openoffice/Office/Common.xml"

# Calcのオプション設定をコピー
if [ -f "${ooohome}/user/config/registry/instance/org/openoffice/Office/Calc.xml" ] ; then
    mv -f "${ooohome}/user/config/registry/instance/org/openoffice/Office/Calc.xml" "${ooohome}/user/config/registry/instance/org/openoffice/Office/Calc.xml~"
fi
cp "${script_dir}/data/${sg_ws}/calc.xml" "${ooohome}/user/config/registry/instance/org/openoffice/Office/Calc.xml"

# 標準テンプレートのコピー
ConvertTemplateFont "${script_dir}/data/template/normalwriter.stw" "${template_dir}/normalwriter.stw"
ConvertTemplateFont "${script_dir}/data/template/normalcalc.stc" "${template_dir}/normalcalc.stc"
ConvertTemplateFont "${script_dir}/data/template/normalimpress.sti" "${template_dir}/normalimpress.sti"
ConvertTemplateFont "${script_dir}/data/template/normaldraw.std" "${template_dir}/normaldraw.std"
ConvertTemplateFont "${script_dir}/data/template/normalmath.sxm" "${template_dir}/normalmath.sxm"

# 標準テンプレートの設定ファイルを置き換え
if [ -f "${ooohome}/user/config/registry/instance/org/openoffice/Setup.xml" ] ; then
    mv -f "${ooohome}/user/config/registry/instance/org/openoffice/Setup.xml" "${ooohome}/user/config/registry/instance/org/openoffice/Setup.xml~"
    iconv -f UTF-8 -t EUC-JP "${script_dir}/data/${sg_ws}/setup.xml" | sed -e s/"%%OOOINSTALLDIR%%"/"${Eooohome}"/g | iconv -f EUC-JP -t UTF-8 > "${ooohome}/user/config/registry/instance/org/openoffice/Setup.xml"
fi

# その他のテンプレートのコピー
mkdir -p "${template_dir}/calc"
for calc_template in `ls ${script_dir}/data/template/calc`
do
    ConvertTemplateFont "${script_dir}/data/template/calc/${calc_template}" "${template_dir}/calc/${calc_template}"
done

mkdir -p "${template_dir}/draw"
for draw_template in `ls ${script_dir}/data/template/draw`
do
    ConvertTemplateFont "${script_dir}/data/template/draw/${draw_template}" "${template_dir}/draw/${draw_template}"
done

mkdir -p "${template_dir}/impress"
for impress_template in `ls ${script_dir}/data/template/impress`
do
    ConvertTemplateFont "${script_dir}/data/template/impress/${impress_template}" "${template_dir}/impress/${impress_template}"
done

if [ ${single} = true ] ; then
	mkdir -p ${ooohome}/share/samples/japanese
    # 追加クリップアートをコピー
    cp ${script_dir}/data/sample/draw/* ${ooohome}/share/samples/japanese/
fi

# ラベルデータをコピー
cp ${script_dir}/data/etc/labels.xml ${ooohome}/user/config/registry/instance/org/openoffice/Office/labels.xml

fi # シングルユーザーインストールかワークステーションインストールの場合

# ネットワークインストールの場合
if [ ${net} = true ] ; then
	mkdir -p ${ooohome}/share/samples/japanese
	# 追加クリップアートをコピー
	cp ${script_dir}/data/sample/draw/* ${ooohome}/share/samples/japanese/

fi # ネットワークインストールの場合

echo "完了"

