#command #execute-command #environment #cnf #container #provider #host

cnf-lib

不依赖发行版的 '命令未找到'-处理程序

5 个版本

0.5.1 2024年2月11日
0.5.0 2023年12月27日
0.4.2 2023年8月24日
0.4.1 2023年8月21日
0.4.0 2023年8月20日

#2461 in 命令行工具


cnf 使用

GPL-3.0 或更高版本

140KB
3K SLoC

cnf-lib - 为 cnf 提供的库代码

这里的代码有三个主要目的。

处理环境

"环境"是指提供一个或多个"提供者"(见下文)的任何东西。目前,支持的环境包括常规 Linux 主机、toolbox 容器和 distrobox 容器,尽管未来可能会有所变化。

通常,为了执行单个命令,需要暂时从环境中脱离出来。通常有控制机制来完成这个任务。这个 crate 的目标是在执行 htop 等命令时,在 toolbox 容器内透明地管理命令转换,同时在主机上工作。所有这些都在 Environment 类型中实现。

如果您想了解更多关于这种命令转换的信息,请查看 src/environment 中的文档和代码。

处理提供者

"提供者"是指提供可执行软件的任何东西。例如,系统 $PATH(可执行文件通常位于此处,并且可以直接执行),但它还包括常规的包管理器,如 dnf,通常需要在执行之前安装命令。

提供者可以搜索命令,并返回一个匹配搜索词的零个或多个可能的候选列表。所有这些都在 Provider 类型中实现。

处理命令调用

在环境之间转换常规命令行时,有一些陷阱,例如权限提升和正确读取 stdout/stderr。CommandLine 类型提供了必要的抽象,允许无缝执行命令,而无需担心目标环境中的权限提升等。

依赖关系

~10–25MB
~328K SLoC