refactor: 枚举移入Models目录,命名空间更新为Rainbow.Entity.Models
大石头 authored at 2026-07-02 12:54:58
1.85 KiB
RainbowBridge
namespace Rainbow.Services;

/// <summary>Shell 命令执行器接口。各平台实现命令执行</summary>
public interface IShellExecutor
{
    /// <summary>命令执行超时(毫秒)</summary>
    Int32 TimeoutMs { get; set; }

    /// <summary>是否启用审计</summary>
    Boolean EnableAudit { get; set; }

    /// <summary>同步执行命令</summary>
    /// <param name="command">命令</param>
    /// <param name="arguments">参数</param>
    /// <param name="needSudo">是否需要 sudo</param>
    /// <returns>执行结果</returns>
    ShellResult Execute(String command, String arguments, Boolean needSudo = false);

    /// <summary>同步执行命令(数组参数)</summary>
    /// <param name="command">命令</param>
    /// <param name="arguments">参数数组</param>
    /// <param name="needSudo">是否需要 sudo</param>
    /// <returns>执行结果</returns>
    ShellResult Execute(String command, String[] arguments, Boolean needSudo = false);

    /// <summary>异步执行命令</summary>
    /// <param name="command">命令</param>
    /// <param name="arguments">参数</param>
    /// <param name="needSudo">是否需要 sudo</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns>执行结果</returns>
    Task<ShellResult> ExecuteAsync(String command, String arguments, Boolean needSudo = false, CancellationToken cancellationToken = default);

    /// <summary>异步执行命令(数组参数)</summary>
    /// <param name="command">命令</param>
    /// <param name="arguments">参数数组</param>
    /// <param name="needSudo">是否需要 sudo</param>
    /// <param name="cancellationToken">取消令牌</param>
    /// <returns>执行结果</returns>
    Task<ShellResult> ExecuteAsync(String command, String[] arguments, Boolean needSudo = false, CancellationToken cancellationToken = default);
}