#!/bin/bash

# ==========================================
# 0. OS環境の確認と依存関係のインストール
# ==========================================
echo "OS環境を確認しています..."
if [ -f /etc/os-release ]; then
    . /etc/os-release
    
    if [[ "$ID" == "ubuntu" ]]; then
        if [[ "$VERSION_ID" != "24.04" ]]; then
            echo "エラー: このスクリプトは Ubuntu 24.04 を対象としています。"
            echo "現在のバージョン: $VERSION_ID"
            exit 1
        else
            echo "Ubuntu $VERSION_ID を検出しました。"
        fi
    elif [[ "$ID" == "zorin" ]]; then
        if [[ "$VERSION_ID" != "18" ]]; then
            echo "エラー: このスクリプトは Zorin OS 18 を対象としています。"
            echo "現在のバージョン: $VERSION_ID"
            exit 1
        else
            echo "Zorin OS $VERSION_ID を検出しました。"
        fi
    else
        echo "エラー: このスクリプトは Ubuntu 24.04 または Zorin OS 18 環境を想定しています。"
        echo "現在のOS: $NAME"
        exit 1
    fi
else
    echo "エラー: OS情報を取得できませんでした。"
    exit 1
fi

echo "=========================================="
echo "必要なパッケージとフォントをインストールします。"
echo "※ sudo権限が必要です。パスワードを入力してください。"
echo "=========================================="
sudo apt update
# PyQt6, WebEngine, Markdownライブラリと、日本語PDF出力時の文字化けを防ぐNotoフォントをインストール
sudo apt install -y python3-pyqt6 python3-pyqt6.qtwebengine python3-markdown fonts-noto-cjk

# ==========================================
# 1. アプリケーションの設定
# ==========================================
APP_ID="mdviewp"                          # コマンド名やファイル名に使うID
APP_NAME="Markdown Viewer"                # メニューに表示される正式なアプリ名
COMMENT="MarkdownのプレビューとPDFエクスポートツール" # アプリの説明文
ICON_SOURCE="mdviewp-icon.png"            # 用意するアイコンファイル名
CATEGORIES="Utility;Office;Development;"  # メニューのカテゴリ分け
# ==========================================

# 2. 必要なディレクトリの存在チェックと作成
for DIR in "$HOME/.local/bin" "$HOME/.local/share/icons" "$HOME/.local/share/applications"; do
    if [ ! -d "$DIR" ]; then
        echo "Creating directory: $DIR"
        mkdir -p "$DIR"
    fi
done

# 3. スクリプト本体とアイコンをコピー
echo "Installing files..."
if [ ! -f "$APP_ID" ]; then
    echo "エラー: 実行ファイル '$APP_ID' がカレントディレクトリに見つかりません。"
    exit 1
fi

cp "$APP_ID" "$HOME/.local/bin/$APP_ID"
chmod +x "$HOME/.local/bin/$APP_ID"

# アイコンファイルが存在する場合のみコピー
if [ -f "$ICON_SOURCE" ]; then
    cp "$ICON_SOURCE" "$HOME/.local/share/icons/$APP_ID-icon.png"
else
    echo "警告: アイコンファイル '$ICON_SOURCE' が見つかりません。デフォルトのアイコンが使用されます。"
fi

# 4. .desktop ファイルの生成と配置
echo "Creating desktop entry..."
cat <<EOF > "$HOME/.local/share/applications/$APP_ID.desktop"
[Desktop Entry]
Version=1.0
Type=Application
Name=$APP_NAME
Comment=$COMMENT
Exec=$HOME/.local/bin/$APP_ID
Icon=$APP_ID-icon
Terminal=false
Categories=$CATEGORIES
EOF

# 5. システムのメニューデータベースを更新
update-desktop-database "$HOME/.local/share/applications"

echo "=========================================="
echo " インストールが完了しました！"
echo " アプリケーションメニューから「$APP_NAME」を探して起動できます。"
echo "=========================================="
echo ""
echo "【ライセンスに関するお知らせ】"
echo "本アプリケーションで使用している PyQt6 は、GPL v3 (GNU General Public License version 3)"
echo "の下でライセンスされています。"
echo "The PyQt6 library is licensed under the GNU General Public License (GPL) version 3."
echo "詳細については、Riverbank Computing の公式サイトまたは GNU のサイトをご確認ください。"
echo "=========================================="
echo ""

# キー入力待ち
read -p "Enterキーを押して終了してください..."
