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 版本加入.