buildout配置文件标准化器
项目描述
buildout_helpers
您是否处理了许多buildout?您是否在努力使它们保持最佳实践的最新状态?buildout注解的输出对您来说是否不足够?您是否在保持buildout可重复性方面遇到困难?此软件包提供辅助工具,帮助您解决这些以及更多问题!
功能
normalize_buildout
该工具按字母顺序排序各个部分以及每个部分中的键,还对一些特殊的多行值,如eggs,进行排序。为开发者提供源部分按属性对齐,因此具有相似分支的多个源签出更容易识别,因为每个源签出的分支值都打印在同一列中。一些特殊的部分总是位于末尾或开头。
freeze
此工具下载所有buildout配置并将其存储在本地。buildout文件被修改以链接到下载的资源。每个下载的资源都有一个包含信息的标题,允许freeze更新资源!
version_info
此工具类似于buildout的annotate命令。但此工具只提供有关版本的信息。对于每个软件包,它显示buildout将使用的版本以及其他buildout文件所固定的版本。如果您扩展了buildout文件,以屏蔽来自buildout文件的较新版本,则版本将用红色打印。因此,如果您有一些版本固定并更新到Plone的新版补丁版本,您可以通过查找红色打印输出,这可以为您提供有关您自己的配置文件中过时的版本固定的提示。
normalize_buildout的详细功能
默认情况下,normalize_buildout会替换现有的配置文件。如果构建文件无法解析,则不会修改任何文件。它有一个命令行选项,可以在不更改文件的情况下仅通过退出码报告文件是否未规范化。这可以轻松集成到检查工具或CI工具中。
该脚本理解某些部分和键的特殊含义
buildout部分总是第一部分
版本和来源部分总是最后一部分
recipe键总是第一部分
eggs和zcml值将被排序。
来源条目的键将被排序,值将被缩进,以便分支设置都在同一列。
mr.developer选项被分组,并与其他构建选项分开
所有排序都是不区分大小写的。部分和键上面的注释与键或部分一起随机排列。您可以说明为什么需要固定特定版本的包,并且在规范化后,注释仍然在正确的版本指定符上方。
freeze的详细功能
Freeze将所有外部文件下载到external_buildouts目录。引用这些文件的构建文件将更新它们的extends值,以指向本地资源。
每个下载的资源都有一个特殊头。它警告您修改文件,并包含从哪里下载资源以及ETAG值。在重复调用时,我们将检查资源是否实际上已更改。因此,如果服务器响应304,则不会再次下载资源。这对于像quaive项目这样的重CI用户很重要。他们有时会从github那里受到限制。
version_info的详细功能
已经在通用功能部分中说明了所有内容。
安装
您可以使用pip或zc.buildout安装该软件包。
PIP
$ pip install buildout_helpers
Buildout
[buildout] ... [extras] recipe = zc.recipe.egg eggs = buildout_helpers
然后运行“bin/buildout”
对于与CI一起使用,我们建议使用requirements.txt文件与pip一起安装buildout_helpers、setuptools的指定版本和zc.buildout。
用法
normalize_buildout
您可以使用此命令执行三个常见操作。
检查配置文件是否已规范化(对于CI)
$ normalize_buildout --check *.cfg etc/*.cfg versions/*.cfg
这将返回空值,或者警告构建文件未规范化。对于CI,它将有一个假的返回码。
就地规范化配置文件
$ normalize_buildout buildout.cfg
这将规范化构建文件。
从stdin读取配置文件并将其打印到stdout,在vim中很有用
:%!normalize_buildout -
在失败时,此命令将打印出未修改的配置文件。
freeze
最初使用freeze下载外部资源。
$ freeze buildout.cfg
此命令使与buildout一起工作的新方法更容易处理。现在,您可以轻松地将公司范围内的默认构建文件放在中央服务器上。如果没有像freeze命令这样的辅助工具,您必须在两个坏选择之间做出选择
直接引用配置文件。
如果您以这种方式更新构建文件,以至于每个引用的项目都需要更新,您将立即破坏它们。如果没有定期触发构建的CI系统,您可能甚至不会在破坏生产中的新构建文件运行之前注意到这一点。
将配置文件复制到项目中
您知道会发生什么,您永远不会更新文件,突然您就有了N个最佳实践。
使用freeze和适当的CI系统,您可以获得两种选项的优点,而没有缺点。使用freeze来拥有本地副本。在您的CI系统中,有两个测试。一个是正常的,另一个是在运行buildout之前运行freeze的测试。这样,您可以测试当前配置是否有效,以及当前配置是否可以使用最新的更新构建文件工作!
version_info
该命令在项目更新期间很有帮助。如果您想将您的Plone站点更新到最新的Plone补丁版本,请从Plone引用最新的URL,例如 http://dist.plone.org/release/4.3.7/versions.cfg,然后运行version_info命令并查找用红色打印的版本信息。在这种情况下,您可能需要更新或删除自己的版本标记。
贡献
贡献者
Patrick Gerken, patrick.gerken@zumtobelgroup.com
变更日志
1.0.1 (2016-05-02)
修复源存储库fs的bug [do3cc]
1.0.0 (2016-03-01)
此软件包在生产环境中运行良好。不再有测试版本。 [do3cc]
将normalizer的命令行参数从-c更改为-C。–check保持不变,应优先用于CI配置中。 [do3cc]
1.0.0b5 (2015-12-16)
对normalize_buildout的稍好错误处理。 [do3cc]
修复版本信息中的错误,未正确处理远程URL。 [do3cc]
修复版本信息中的错误,扩展顺序相反。 [do3cc]
Normalize现在不区分大小写进行排序。 [do3cc]
1.0.0b4 (2015-12-14)
上一个版本崩溃了,我不信任pypi上的1.0.0b3。 [do3cc]
1.0.0b3 (2015-12-14)
现在normalize_buildouts在一次运行中接受多个配置文件。 [do3cc]
1.0.0b2 (2015-12-14)
主要重构freeze命令。仍然难以阅读,需要更多关爱。 [do3cc]
1.0.0b1 (2015-12-14)
添加freeze命令,下载所有外部buildout文件,带有允许相同freeze命令更新的标题。 [do3cc]
添加显示哪个buildout文件标记了哪个版本的version_info命令。受@jensens脚本启发 [do3cc]
将包重命名为buildout_helpers。命名空间包与pip和buildout存在冲突 [do3cc]
0.3.0 (2015-09-22)
现在在buildout部分中,Mr.developer变量是分开的,并且在buildout部分的末尾 [do3cc]
现在源部分在末尾 [do3cc]
多行选项不需要4个空格的缩进,一个就足够了。现在此脚本可以正确识别它们 [do3cc]
0.2.0 (2015-09-11)
支持管道。 [do3cc]
删除不需要的依赖项。 [do3cc]
修复导致bad buildout.cfgs的3个bug。 [do3cc]
0.1 (2015-09-10)
初始发布。 [do3cc]
项目详情
buildout_helpers-1.0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 27b73ca4ca6dda4914b05b543b158b36a6e0cac3f8d36c5b4a819d1434ac31b2 |
|
MD5 | e7842620cf76c2281e7f62cafb83075e |
|
BLAKE2b-256 | d4616c491566ff94714cea0b496aeebc8a58192cde4acfceb3cfed0133bac703 |