Mach¶
Mach(德语,意为“做”)是命令行的一个通用命令分发器。
要使用 mach,您需要安装 mach 核心(一个 Python 包),创建一个可执行的驱动程序脚本(命名为任何您想要的名称),并编写 mach 命令。当驱动程序执行时,mach 会自动分发到请求的命令处理程序。
功能
从高层次来看,mach 类似于使用带有子解析器的 argparse(用于命令处理)。当您深入研究时,mach 提供了许多其他功能
- 分布式命令定义
使用 optparse/argparse,您必须在一个中央解析器实例上定义您的命令。使用 mach,您可以使用装饰器注释您的命令方法,mach 会自动查找并分发到它们。
- 命令类别
在帮助中显示时,Mach 命令可以分组到类别中。这目前在 argparse 中是不可能的。
- 日志管理
Mach 提供了一个用于日志记录(经典文本和结构化)的功能,任何命令处理程序都可以使用它。
- 设置文件
Mach 提供了一个从类似 ini 的文件格式读取设置的功能。
组件
Mach 在概念上由以下组件组成
- 核心
mach 核心是驱动 mach 的核心代码。这是一个 Python 包,包含使 mach 工作的所有业务逻辑。mach 核心对所有 mach 部署都是通用的。
- 命令
这些是 mach 分发到的内容。命令只是注册为命令名称的 Python 方法。命令集对于 mach 所部署的环境是唯一的。
- 驱动程序
驱动程序是 mach 的入口点。它只是一个可执行脚本,加载 mach 核心,告诉它可以在哪里找到命令,然后要求 mach 核心处理当前请求。驱动程序对于已部署的环境是唯一的。但是,它通常基于此源代码树中的示例。
项目状态
mach 最初是作为命令分发框架编写的,以帮助 Firefox 开发。虽然代码大多是通用的,但仍然有一些部分将其与 Mozilla/Firefox 紧密联系在一起。目标是最终删除这些部分并将其替换为通用功能,以便 mach 适用于任何人使用。在此之前,mach 可能不适合您。