为click应用程序提供配置文件支持。
项目描述
通过添加单个无参数装饰器,轻松将配置文件支持添加到您的Click应用程序。
基本用法
click-config-file被设计为只需将适当的装饰器添加到您的命令即可使用,无需提供任何必需的参数。它提供了一套合理的默认值,应该适用于大多数情况。
假设这个应用程序
@click.command()
@click.option('--name', default='World', help='Who to greet.')
@click_config_file.configuration_option()
def hello(name):
click.echo('Hello {}!'.format(name))
运行 hello --help 将显示以下内容
Usage: hello [OPTIONS] Options: --name TEXT Who to greet. --config PATH Read configuration from PATH. --help Show this message and exit.
如果配置文件不存在,运行 hello 将执行您预期的操作
Hello World!
有这个配置文件
name="Universe"
调用 hello 也会执行您预期的操作
Hello Universe!
调用 hello --name Multiverse 将覆盖配置文件设置,正如预期的那样
Hello Multiverse!
配置文件选项的默认名称为 --config。
命令行和环境选项将覆盖配置文件选项。配置文件选项覆盖默认选项。因此,给定选项的解析顺序为:CLI > 环境 > 配置文件 > 默认。
选项
尽管 configuration_option 被设计为无需任何必需参数即可工作,但一些可选参数是受支持的
- 隐式
默认值: True
默认情况下,configuration_option将会寻找配置文件,即使未提供配置选项的值,无论是通过命令行参数还是环境变量。在这种情况下,值将根据以下描述从cmd_name和config_file_name隐式设置。
如果设置为False,则只有在提供配置文件参数时才会应用配置文件设置。
- cmd_name
默认:ctx.cmd_info
装饰命令的名称。在隐式创建配置文件参数时,通过调用click.get_app_dir(cmd_name)来解析包含配置文件的应用程序目录。
这默认为click确定的命令名称。
- config_file_name
默认:config
当implicit设置为True时,此参数提供应用程序目录内配置文件的名称。
除了上述参数外,还支持click.option()和click.File()的所有参数。
支持的文件格式
默认情况下,click-config-file支持根据Configobj的unrepr模式格式化的文件。
您可以通过设置provider关键字参数来添加对其他配置提供者的支持。此参数期望一个可调用的函数,该函数将配置文件路径和命令名称作为参数,并返回包含提供的配置选项的字典。
传递命令名称是为了允许使用共享配置文件,该配置文件由每个命令的节分割。
例如,这将从共享JSON文件中读取配置选项
def myprovider(file_path, cmd_name):
with open(file_path) as config_data:
return json.load(config_data)[cmd_name]
@click.command()
@click.option('--name', default='World')
@click_config_file.configuration_option(provider=myprovider)
def hello(name):
click.echo('Hello {}!'.format(name))
安装
pip install click-config-file
为什么?
虽然有几个现有的Click配置文件支持实现,但它们似乎缺少以下一个或多个功能
合理的默认值
正确处理解析顺序
支持多值选项、多个选项或两者的组合
相比之下,此模块可能缺乏其他实现的一些更复杂的特性。这是一个故意的选择,因为此模块旨在是一个简单且合理默认值的选项。