生成配置文件的实用程序
项目描述
这个项目的诞生是为了在资源太有限而无法运行 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
渲染文件的上下文是从数据目录中的文件构建的。通过读取文件扩展名,与该目录中的每个文件关联一个“阅读器”。
然后,一个与文件同名(无扩展名)的上下文变量将在模板中可用。
包括的读者
读取器用于读取数据文件并使其在模板上下文中可访问。
它们的名称(不带扩展名)在数据目录中必须是唯一的 ,以防止冲突。
- 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选项?)
编写缺失的测试用例