---@meta no_os_execute

--------------------------------------------------------------------------------
-- no_os_execute 文件与进程辅助模块
--------------------------------------------------------------------------------

---@alias no_os_execute_error_list string[]

---@class no_os_execute*
---@field _VERSION string 模块版本
---@type no_os_execute*
local M = {}

M._VERSION = "0.4.3"

--- 递归修改文件或目录的权限。
---
--- `dmode` 使用十进制书写的 chmod 模式值，例如 `644`、`755`、`4755`。
---@param path string 文件或目录路径
---@param dmode integer 权限模式，范围 0 ~ 7777
function M.lchmod_r(path, dmode) end

--- 递归修改文件或目录的所有者。
---@param path string 文件或目录路径
---@param uid integer 用户 ID
---@param gid integer 用户组 ID
function M.lchown_r(path, uid, gid) end

--- 递归修改文件或目录的所有者和权限。
---
--- `dmode` 使用十进制书写的 chmod 模式值，例如 `644`、`755`、`4755`。
---@param path string 文件或目录路径
---@param uid integer 用户 ID
---@param gid integer 用户组 ID
---@param dmode integer 权限模式，范围 0 ~ 7777
function M.lchownmod_r(path, uid, gid, dmode) end

--- 递归清空一个或多个目录中的内容，保留目录本身。
---@param ... string 目录路径
---@return no_os_execute_error_list errlist 删除失败的错误信息列表；成功时为空表
function M.clear_dirs(...) end

--- 递归删除一个或多个文件或目录。
---@param ... string 文件或目录路径
---@return no_os_execute_error_list errlist 删除失败的错误信息列表；成功时为空表
function M.rm_rf(...) end

--- 递归复制文件或目录。
---
--- 不支持 shell 通配符，也不会按 shell 规则转义文件名。
---@param src string 源文件或目录路径
---@param dest string 目标文件或目录路径
---@return no_os_execute_error_list errlist 复制失败的错误信息列表；成功时为空表
function M.cp_r(src, dest) end

--- 递归创建一个或多个目录。
---@param ... string 目录路径
function M.mkdir_p(...) end

--- 按进程名向所有匹配进程发送信号。
---@param sig integer 信号值
---@param ... string 进程名
function M.killall(sig, ...) end

--- 清理缓存并重启 SpringBoard/backboardd。
function M.respring() end

--- 通过 `/bin/sh -c` 执行命令。
---@param command string 命令文本
---@return boolean? ok 是否成功退出
---@return string? reason 结束原因或错误信息
---@return integer? status 状态码或 errno
function M.system(command) end

--- 启动程序并等待结束。
---
--- 这是 `spawn.run` 的别名。参数不会经过 shell 展开。
---@param program string 程序路径或命令名
---@param ... string 参数
---@return boolean? ok 是否成功退出
---@return string? reason 结束原因或错误信息
---@return integer? status 状态码或 errno
function M.run_cmd(program, ...) end

return M
