跳转到主要内容

通用模块化配置文件管理器

项目描述

https://travis-ci.org/xolox/python-update-dotdee.svg?branch=master https://coveralls.io/repos/xolox/python-update-dotdee/badge.svg?branch=master

update-dotdee程序使管理类似Debian和dotdee风格的模块化配置文件变得简单。程序接受配置文件的路径名,并根据与文件同名的目录(以.d结尾)中的文件内容更新该文件。目前已在cPython 2.7, 3.5+和PyPy(2.7)上进行了测试。

安装

update-dotdee软件包可在PyPI上找到,这意味着安装应该像下面这样简单

$ pip install update-dotdee

安装 Python 软件包的方式有很多种(例如:针对用户的 site-packages 目录虚拟环境 或全局安装),在这里我不想深入讨论这个问题,所以如果你感到害怕,请在返回这些说明之前先了解一下你的选项吧;-)。

使用方法

使用 update-dotdee 包有两种方式:作为命令行程序 update-dotdee 和作为 Python API。关于 Python API 的详细信息,请参阅在 Read the Docs 上可用的 API 文档。下面将描述命令行界面。

用法: update-dotdee FILENAME

根据与 FILENAME 同名的目录中的文件内容生成(配置)文件,但文件名以 ‘.d’ 结尾。

如果 FILENAME 存在但对应的目录尚未存在,则创建目录并将 FILENAME 移动到目录中,以便保留其现有内容。

支持选项

选项

描述

-f--force

即使 FILENAME 包含本地修改,也更新 FILENAME,而不是错误退出。

-u--use-sudo

启用使用 “sudo” 来更新当前用户(或通过 SSH 登录远程系统时)无法读取和/或写入的配置文件。

-r--remote-host=SSH_ALIAS

在远程系统上操作,而不是在本地系统上。通过 SSH_ALIAS 参数指定远程主机的 SSH 别名。

-v--verbose

增加日志详细程度(可重复使用)。

-q--quiet

减少日志详细程度(可重复使用)。

-h--help

显示此消息并退出。

示例

/etc/hosts 文件是使用 update-dotdee 管理的配置文件的简单示例。在 /etc/hosts.d 目录中的单个文件包含在每次运行时添加到配置文件中的片段。例如

peter@macbook> sudo update-dotdee /etc/hosts
2013-07-06 19:32:03 macbook INFO Reading file: /etc/hosts.d/1-local
2013-07-06 19:32:03 macbook INFO Reading file: /etc/hosts.d/2-work
2013-07-06 19:32:03 macbook INFO Reading file: /etc/hosts.d/3-ipv6
2013-07-06 20:59:24 macbook INFO Checking for local changes to /etc/hosts
2013-07-06 19:32:03 macbook INFO Writing file: /etc/hosts

工作原理

关于 update-dotdee 的工作原理的一些说明

  • 如果给定文件存在但对应的目录尚未存在,则创建目录并将文件移动到目录中(重命名为 local),以便保留其现有内容。

  • 如果生成的文件自上次运行以来已被修改,update-dotdee 将拒绝覆盖其内容(除非您使用 -f--force 选项)。

  • .d 目录中的文件按文件名自然排序顺序连接(由 naturalsort 包实现)。

  • 自 4.0 版本起,.d 目录中的可执行文件将被执行,它们的标准输出将被纳入生成的内容。

用例

以下是一些 update-dotdee 的示例用例

SSH 客户端配置

update-dotdee程序于2013年创建,用于提供模块化SSH客户端配置。它被用来从~/.ssh/config.d目录中的文件内容生成~/.ssh/config文件。这个功能是必需的,因为我开发了一个基于服务器元数据库的SSH客户端配置生成器,我正在寻找一种方法来更新用户的~/.ssh/config,而不会破坏现有的(精心手工艺品)内容。

系统级配置文件

Linux系统配置文件,如/etc/crypttab/etc/fstab/etc/hosts缺乏模块化,使用如awksed这样的命令行工具进行操作可能会脆弱或不便。但是,如果您能让您的配置源(例如Ansible剧本、Debian软件包和手动配置)同意使用update-dotdee,那么您就有了一个优雅、强大且可预测的替代方案。

只读替代方案

有时,使用update-dotdee或类似的机制是唯一让多个配置源协作的方法,但它是一种有点重量级的解决方案。对于我发布的Python软件包,我希望有一个更轻量级的替代方案,它只需搜索并加载*.ini配置文件。这就是为什么在5.0版本中增加了ConfigLoader的原因。

联系方式

update-dotdee的最新版本可在PyPIGitHub上找到。文档托管在Read the Docs上,包括变更日志。有关错误报告,请创建GitHub上的问题。如果您有任何问题、建议等,请随时发送电子邮件至peter@peterodding.com

许可证

本软件采用MIT许可证

© 2020 Peter Odding。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源代码分发包

update-dotdee-6.0.tar.gz (19.6 kB 查看散列)

上传时间 源代码

构建分发包

update_dotdee-6.0-py2.py3-none-any.whl (14.7 kB 查看散列)

上传时间 Python 2 Python 3