namespace Flyshot.ControllerClientCompat;

/// <summary>
/// 表示 HTTP-only ControllerClient 兼容层的基础配置。
/// </summary>
public sealed class ControllerClientCompatOptions
{
    /// <summary>
    /// 获取或设置对外暴露的服务端版本号。
    /// </summary>
    public string ServerVersion { get; set; } = "flyshot-replacement-controller-client-compat/0.1.0";

    /// <summary>
    /// 获取或设置运行配置根目录；为空时默认使用程序基目录下的 Config。
    /// </summary>
    public string? ConfigRoot { get; set; }

    /// <summary>
    /// 获取或设置旧父工作区根目录；仅用于测试或旧样本显式兼容。
    /// </summary>
    public string? WorkspaceRoot { get; set; }

    /// <summary>
    /// 解析运行配置根目录，确保运行时默认不再依赖源码仓库位置。
    /// </summary>
    /// <returns>运行配置根目录的绝对路径。</returns>
    public string ResolveConfigRoot()
    {
        var root = string.IsNullOrWhiteSpace(ConfigRoot)
            ? Path.Combine(AppContext.BaseDirectory, "Config")
            : ConfigRoot;

        return Path.GetFullPath(root);
    }

    /// <summary>
    /// 解析显式配置的旧父工作区根目录；未配置时返回 null。
    /// </summary>
    /// <returns>旧父工作区根目录的绝对路径，或 null。</returns>
    public string? ResolveLegacyWorkspaceRoot()
    {
        return string.IsNullOrWhiteSpace(WorkspaceRoot)
            ? null
            : Path.GetFullPath(WorkspaceRoot);
    }
}
