生成配置文件的实用工具
项目描述
该项目诞生于在资源不足以运行LDAP服务器的计算机上生成dhcp/dns配置文件的需求。
它的基本功能是
从目录中加载一系列文件,并在字典中使其可访问。
通过一些模板引擎渲染一系列文件,传递上下文。
安装
生产版本
$ pip install config-gen
开发版本
$ pip install -e git+git@github.com:rshk/config-gen.git#egg=config-gen
或者直接从源目录运行python setup.py install。
尝试使用
开始使用config-gen最快的方式是快速入门脚本,该脚本负责在当前目录中创建所有必要的目录以及一个Makefile
$ confgen-quickstart $ make $ cat build/example.html <h1>Hello, world!</h1>
它是如何工作的?
非常简单:在templates目录中的所有文件都会构建到build目录中的文件中,原始扩展名会被移除。例如
templates/hello.jinja -> build/hello templates/hello.html.jinja -> build/hello.html templates/example.html.jinja -> build/example.html
渲染文件的上下文是从data目录中的文件构建的。对于该目录中的每个文件,通过读取文件扩展名关联一个“读取器”。
然后,一个与文件(不带扩展名)同名上下文变量将在模板中可用。
包含的读取器
读取器用于读取数据文件并将它们在模板上下文中使其可访问。
它们的名称(不带扩展名)必须在data目录中是唯一的,以防止冲突。
- txt (config_gen.readers.read_txt.txt_reader)
加载纯文本文件,直接返回其原始内容。
- py (config_gen.readers.read_py.PyFileAccessor)
加载并返回一个Python模块。
模块内容将随后完全从模板中访问。
- json (config_gen.readers.read_json.json_reader)
读取JSON文件并直接返回。然后可以从模板中像往常一样访问它。
- csv (config_gen.readers.read_csv.csv_reader)
将逗号分隔值文件读入元组列表。
CSV文件必须是逗号分隔的(不支持分号)。包含逗号的字段必须用双引号括起来。
- ini (config_gen.readers.read_ini.IniFileReader)
配置文件/.ini的读取器。
文件将可访问
{{ filename.section.option }}
或者,对于包含点的部分/选项
{{ filename["my.sect.ion"]["my.opt.ion"] }}
模板引擎
要将模板渲染为配置文件,已使用出色的Jinja2模板引擎。
我曾经考虑过允许插件模板引擎,但Jinja的强大功能使我重新考虑了这一决定 :)
(顺便说一下,如果您绝对需要支持另一个模板引擎,请告诉我原因..)
测试
运行完整的测试套件
$ python -m unittest discover -s tests
只运行特定子模块中的测试
$ python -m unittest tests.test_something
待办事项列表
添加对XML/YAML文件的支持
添加对数据库连接的支持(sqlite、mysql、postgres、mongo等..)
添加对“自定义案例”的支持,通过某种配置文件 * 例如,用于分号分隔的CSV文件
添加对导入外部读取器的支持(添加一个--load选项?)
编写缺失的测试用例
项目详情
Config-gen-1.0-alpha6.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e409e8c42dbb2a58123735c176826612a9a79f532298c4fc45f472ec997cad8c |
|
MD5 | 74e88890e3e96022655fd3ad5551acba |
|
BLAKE2b-256 | 849aec8327b904fad4a37a485d301e8226abe1ba81f410c6513f3c3935a7b405 |