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 可能不适合您。