<?php

namespace Acms\Services\Installer;

use RuntimeException;
use Throwable;

/**
 * Installer 実行時エラー
 *
 * exitCode は CLI の終了コードに対応:
 *   1 = 引数エラー
 *   2 = bin / 対象 blog が見つからない / yaml 不正
 *   3 = DB エラー
 *   4 = ファイルコピーエラー
 *   5 = 権限不足
 *   6 = 冪等性違反 (既にインストール済み等)
 *   255 = 予期せぬ例外
 */
class InstallerException extends RuntimeException
{
    public function __construct(
        string $message,
        public readonly int $exitCode = 3,
        ?Throwable $previous = null,
    ) {
        parent::__construct($message, $exitCode, $previous);
    }
}
