#!/bin/sh
# Finalize
# ---------------------------------------------- #

##### Main routine ###############################

# Function読み込み
. ${INST_HOME}/function.sh

# 初期処理
initialize

# 判別値の初期化
FLAG=0

# パラメータの取得（install or uninstall）
CHECK_TYPE=$1


# ----- function ----- #
delete_installers_install_info_ini(){
  # installer配下の「install_information.ini」を削除する
  # ※ここで削除しておかないと、configure実行時にバージョン情報が古いままになってしまう
  # ※この削除処理は本来はインストーラの最後に実行するものかもしれない。
  $rm -rf ${INSTALLERS_INSTALL_INFO_INI_FILE} > /dev/null 2>&1
  echo_sp "."
}

delete_updaters_install_info_ini(){
  # updater配下の「install_information.ini」を削除する
  $rm -rf ${INSTALL_INFO_INI_FILE} > /dev/null 2>&1
  echo_sp "."
}

# Ver-3.3 専用
# 古い backup.sh を消す(Ver-3.3 からは新たなバックアップ使用)
delete_file_swap(){
  $rm -rf ${BACKUP_TMP_DIR} > /dev/null 2>&1
}

# アップデート前は /var/spool/cron/smxd が存在していたか確認
# 存在していなければ削除する
old_cron_check(){
  CRON_SMXD=/var/spool/cron/smxd
  $tar $T_OPT $BACKUP_PKG_FILE | grep "$CRON_SMXD"
  if [ $? -ne 0 ] ; then
    if [ -f "$CRON_SMXD" ] ; then
      rm -f $CRON_SMXD > /dev/null 2>&1
    fi
  fi
}

# バックアップモジュール名前変更
# 再度アップデートを行う際に前回実行時と状況が異なる可能性を考え退避(1世代のみ)
backup_module_swap(){
  $mv $BACKUP_PKG_FILE $BACKUP_PKG_FILE_BAK > /dev/null 2>&1
}

# SMX patch and update history
# SMXVer-3.3 からアップデートおよびパッチの過程を管理できる履歴を作る
# 管理は /home/smxd/installer 配下に保存し、一旦作成したら削除しない
# 構成は[,] 区切りで以下を一行に記載する
# 1: パッチorアップデータ名
# 2: インストールフラグ [1=インストール済み, 0=アンインストール済み]
# 3: インストール日付
# 4: アンインストール日付
# ※ 2回目以降のインストールの際は別の行に記載する
inst_history_write(){
  DATE=`date`
  if [ ! -f ${SMX_HIST} ] ; then
    $cp ${INST_HOME}/history.txt ${SMX_HIST}
  fi
  $echo "ver-3_3_0up, 1, $DATE, null" >> ${SMX_HIST}
}

uninst_history_write(){
IFS='
'
  DATE=`date`
  # 他の null 箇所も変更しないように該当箇所を絞る為、一行毎の処理
  for LINE in `cat ${SMX_HIST}`
  do
    $echo "${LINE}" | $grep "ver-3_3_0up" > /dev/null
    if [ $? -eq 0 ] ; then
      $echo "${LINE}" | $sed -e s/"ver-3_3_0up, 1"/"ver-3_3_0up, 0"/g -e s/"null"/"${DATE}"/g >> SMX_HIST_TMP
    else
      $echo "${LINE}" >> SMX_HIST_TMP
    fi
  done

  $mv SMX_HIST_TMP ${SMX_HIST} > /dev/null 2>&1
}

# -------------------- #


# 開始出力
CLEAR
msg_info  "終了処理を実行します。" \
          "しばらくお待ちください。"
#echo ""
echo_sp "終了処理実行中."
write_log "終了処理を開始"

# 終了処理実行

if [ "${CHECK_TYPE}" = "install" ] ; then
  # Update時の終了処理
  # ※Configure実行時のためにinstaller配下のiniも削除する
  delete_installers_install_info_ini
  delete_updaters_install_info_ini
  delete_file_swap
  inst_history_write
elif [ "${CHECK_TYPE}" = "uninstall" ] ; then
  # Un-Update時の終了処理
  # アップデート戻しの時も、念のためiniを削除しておく（新しいのが残っているかもしれない）
  delete_installers_install_info_ini
  delete_updaters_install_info_ini
  old_cron_check
  backup_module_swap
  uninst_history_write
else
  FLAG=1
fi

ORG_IFS=$IFS
IFS=' '
if [ $FLAG -eq 0 ] ; then
  # 終了処理成功
  $echo "完了"
  $echo ""
  msg_dialog  "終了処理を完了しました。" \
              "処理を継続します。"
  write_log "終了処理を完了"
  WAIT_ENTER
  
  exit 0
else
  # 終了処理失敗
  $echo "エラー発生！"
  $echo
  msg_err "終了処理に失敗しました。処理を中断します。" \
          " " \
          "<!> 予期せぬエラーです。サポートに連絡してください。"
  arize_err "dmy" "終了処理に失敗しました。"
  exit 1
fi
IFS=$ORG_IFS
