#!/bin/bash

# --- 固定値 ---

APP_NAME="dxeco-desktop-agent" # アプリ名
APP_BUNDLE_ID="com.oro.dxeco-desktop-agent" # 設定対象アプリのバンドルID
PLIST_FILENAME="${APP_BUNDLE_ID}.plist"
LOG_DIR="/Library/Logs/$APP_NAME" # ログ出力先ディレクトリ
LOG_TAG="dxeco-desktop-agent-uninstall" # ログ識別用
# ----------------

# --- 関数: ログ出力 ---
mkdir -p "$LOG_DIR" # ログディレクトリの作成
LOG_FILE="${LOG_DIR}/${LOG_TAG}-$(date +%Y%m%d_%H%M%S).log"
log_message() {
    level="$2"
    if [ -z "$level" ]; then
        level="info"
    fi
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $1"
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $1" >> "$LOG_FILE"
}
# ----------------

# --- メイン処理 ---
log_message "アンインストール スクリプト開始"

# 1. ログインユーザーの取得
# 現在ログインしているユーザーを取得
currentUser=$(stat -f%Su /dev/console)

# ログインユーザーがnobodyやrootでないことを確認
if [ -z "$currentUser" ] || [ "$currentUser" == "root" ] || [ "$currentUser" == "nobody" ]; then
    log_message "有効なログインユーザーが見つかりません。($currentUser)" "error"
    exit 1
fi

userHome=$(dscl . -read /Users/$currentUser NFSHomeDirectory | awk '{print $2}')
if [ -z "$userHome" ]; then
    log_message "Error: ユーザー $currentUser のホームディレクトリを取得できませんでした。" "error"
    exit 1
fi
log_message "ユーザーホームディレクトリ: $userHome"


# 6. インストーラーの実行
# ユーザーのApplicationsディレクトリパス
appDir="${userHome}/Applications/${APP_NAME}.app"
log_message "アプリケーションディレクトリ: $appDir"
if [ ! -d "$appDir" ]; then
    log_message "Error: アプリケーションディレクトリが見つかりません: $appDir" "error"
    exit 1
fi

uninstallScriptPath="${appDir}/Scripts/Uninstall.command"
if [ ! -f "$uninstallScriptPath" ]; then
    log_message "Error: アンインストールスクリプトが見つかりません: $uninstallScriptPath" "error"
    exit 1
fi

log_message "ユーザー '$currentUser' としてアンインストールを開始します..."

# ユーザー権限でアンインストールスクリプトを実行
log_message "アンインストールスクリプトを実行中: $uninstallScriptPath"
sudo -u "$currentUser" "$uninstallScriptPath"

# インストールの成功・失敗を確認
installResult=$?
if [ $installResult -eq 0 ]; then
    log_message "アンインストールが正常に完了しました。"
    exit 0
else
    log_message "Error: アンインストールに失敗しました。終了コード: $installResult" "error"
    exit 1
fi