program¶
- class invoke.program.Program(version: str | None = None, namespace: Collection | None = None, name: str | None = None, binary: str | None = None, loader_class: Type[Loader] | None = None, executor_class: Type[Executor] | None = None, config_class: Type[Config] | None = None, binary_names: List[str] | None = None)¶
管理顶级CLI调用,通常通过
setup.py入口点。设计用于将调用任务集合作为独立程序分发,但也在内部用于实现
invoke程序本身。参见
将invoke的cli模块重用为不同的二进制文件 有关此功能的教程/演练。
在 1.0 版本加入.
- __init__(version: str | None = None, namespace: Collection | None = None, name: str | None = None, binary: str | None = None, loader_class: Type[Loader] | None = None, executor_class: Type[Executor] | None = None, config_class: Type[Config] | None = None, binary_names: List[str] | None = None) None¶
创建一个新的、参数化的
Program举个例子。- 参数:
version (str) -- 程序的版本,例如
"0.1.0"。默认为"unknown"。namespace -- A
Collection用作此程序的子命令。如果None(默认设置),则程序的行为将类似于invoke,查找附近的任务命名空间Loader并暴露诸如以下论点--list和--collection用于检查或选择特定的命名空间。如果给了一个Collection对象,将使用它,就像它已被提交给--collection。还将更新解析器以移除对任务和与任务相关的选项的引用,并在--help输出。结果将是一个具有静态子命令集的程序。name (str) -- 程序名称,如中所示
--version输出。如果None(默认),是中第一个单词的大写版本argv已移交给run。例如,当从安装为foobar,它将默认为Foobar。binary (str) -- 帮助文本中使用的描述性小写二进制名称字符串。例如,Invoke自己的内部值为
inv[oke],表示它同时安装为inv和invoke。由于这是纯粹用于帮助显示的文本,它可以是您希望的任何格式,尽管它应该与您输入的内容相匹配setup.py%sconsole_scripts进入。如果None(默认),使用中的第一个单词argv逐字记录(与name以上,除非未大写)。binary_names -- 用于完成脚本的二进制名称字符串的列表。此列表可确保由
--print-completion-script指示Shell程序对此程序的所有已安装名称使用该补全。例如,Invoke的内部缺省值为["inv", "invoke"]。如果None(默认),中的第一个单词argv(在援引--print-completion-script)在单项列表中使用。loader_class -- 这个
Loader加载任务集合时使用的子类。默认为FilesystemLoader。executor_class -- 这个
Executor执行任务时使用的子类。默认为Executor;也可以在运行时由 configuration system 以及它的tasks.executor_class设置(任何时候该设置不是None)。
在 1.2 版本发生变更: 添加了
binary_names争论。
- __weakref__¶
对象的弱引用列表
- property args: Lexicon¶
从获取核心程序参数
self.core解析结果。在 1.0 版本加入.
- create_config() None¶
实例化一个
Config(或子类,视情况而定),用于任务执行。此配置完全可用,但缺少运行时派生的数据,如项目和运行时配置文件、CLI参数覆盖等。该数据稍后会添加到
update_config。看见Config生命周期详细信息的文档字符串。- 返回:
None;套装self.config取而代之的是。
在 1.0 版本加入.
- execute() None¶
将要执行的数据和任务规范传递给
Executor。备注
客户端代码只是想要一个不同的
Executor子类可以只设置executor_class在……里面__init__,或覆盖tasks.executor_class世界上的任何地方 config system (这可能会让您完全避免使用自定义程序)。在 1.0 版本加入.
- property initial_context: ParserContext¶
初始解析器上下文,也称为核心程序标志。
其中包含的特定参数会有所不同,具体取决于是否在
__init__。在 1.0 版本加入.
- normalize_argv(argv: List[str] | None) None¶
按摩
argv转换为有用的字符串列表。If None (默认设置),使用
sys.argv。If a non-string iterable ,用它来代替
sys.argv。If a string ,执行一项
str.split然后使用结果执行。(这在很大程度上是为了方便;如果有疑问,可以使用列表。)集
self.argv为了结果。在 1.0 版本加入.
- parse_core_args() None¶
过滤掉核心参数,将所有任务或它们的参数留到以后。
集
self.core发送到ParseResult从这一步开始。在 1.0 版本加入.
- parse_tasks() None¶
解析剩余的参数,它们通常是任务&每个任务的参数。
集
self.parser到所使用的解析器,self.tasks添加到已解析的每个任务上下文,以及self.core_via_tasks到保存在任务上下文中可见的任何核心标志的上下文。还修改了
self.core若要包含来自core_via_tasks(以便它正确地反映所提供的任何核心标志,无论它们出现在哪里)。在 1.0 版本加入.
- print_columns(tuples: Sequence[Tuple[str, str | None]]) None¶
打印选项卡列(名称、帮助)
tuples。用于列出任务+文档字符串、标志+帮助字符串等。
在 1.0 版本加入.
- run(argv: List[str] | None = None, exit: bool = True) None¶
根据以下条件执行主CLI逻辑
argv。- 参数:
argv -- 要执行操作所依据的参数。可能是
None、字符串列表或字符串。看见normalize_argv了解更多细节。exit (bool) -- 什么时候
False(默认:True),将忽略ParseError,Exit和Failure异常,否则会触发对sys.exit。。。注:这在很大程度上是对测试的让步。如果您要将此设置为False在生产环境中,您可能应该使用Executor而是直接交朋友!
在 1.0 版本加入.