ZC.buildout 配方,用于在buildout中生成和构建基于Sphinx的文档。
项目描述
代码仓库:https://github.com/reinout/collective.recipe.sphinxbuilder(自2016年6月起)。
有关问题和评论请致信Reinout van Rees、tarek_at_ziade.org、rok_at_garbas.si、sdouche_at_sdouche.com。
详细文档
什么是Sphinx?
Sphinx是Python社区中构建文档的主要工具。参见https://sphinx-doc.cn。
Python等许多其他项目现在都使用它。参见https://docs.pythonlang.cn。
Sphinx使用reStructuredText,可用于编写基于buildout的应用程序。该食谱为您设置一切,因此您可以在buildout中提供漂亮的文档,可以是静态HTML、PDF甚至是epub。
将文档管理得像代码一样,使维护和更改变得容易。
快速开始
要使用该食谱,在buildout配置文件中添加类似以下内容的部分
[buildout] parts = ... sphinxbuilder ... [sphinxbuilder] recipe = collective.recipe.sphinxbuilder source = ${buildout:directory}/docs-source build = ${buildout:directory}/docs
运行buildout,您将在bin文件夹中获得一些新脚本,名称为
sphinx-quickstart,用于快速启动Sphinx文档
sphinxbuilder,脚本将
要快速启动文档项目,就像您通常使用Sphinx一样运行
$ bin/sphinx-quickstart
回答几个问题,并将docs-source作为源文件夹。
要构建您的文档,只需运行sphinx脚本
$ bin/sphinxbuilder
就是这样!
您将在docs/html中获得一个闪亮的Sphinx文档。编写您的文档,进入docs-source。每次源代码更改时,sphinxbuilder都会再次运行脚本。
编写文档的好起点是:https://sphinx-doc.cn/contents.html。
Plone 4
与Plone 4一起使用甚至更容易
[buildout] parts = ... sphinxbuilder ... [sphinxbuilder] recipe = collective.recipe.sphinxbuilder interpreter = ${buildout:directory}/bin/zopepy
遵循快速入门教程,并不要忘记添加带有已安装egg的解释器,以便使用Sphinx访问源代码。
支持选项
该食谱支持以下选项
- build(默认:docs)
指定构建文档的根目录。
- source(默认:{build-directory}/source)
指定文档的源目录。
- outputs(默认:html)
多行值,定义要生成的输出类型。可以是doctest、html、latex、pdf或epub。
- script-name(默认:buildout部分名称)
生成的脚本名称
- interpreter
使用sphinx-builder时使用的Python解释器的路径。
- extra-paths
要插入到sys.path中的额外路径。
- products
要扩展旧式Zope Products命名空间的额外产品目录。
示例用法
该食谱可以在没有任何选项的情况下使用。我们将首先创建一个使用该食谱的buildout
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = sphinxbuilder ... ... [sphinxbuilder] ... recipe = collective.recipe.sphinxbuilder ... source = collective.recipe.sphinxbuilder:docs ... """)
让我们运行buildout
>>> print('start ' + system(buildout)) ... # doctest: +ELLIPSIS start Installing sphinxbuilder. collective.recipe.sphinxbuilder: writing MAKEFILE.. collective.recipe.sphinxbuilder: writing BATCHFILE.. collective.recipe.sphinxbuilder: writing custom sphinx-builder script.. Generated script '/sample-buildout/bin/sphinx-quickstart'. Generated script '/sample-buildout/bin/sphinx-build'. Generated script '/sample-buildout/bin/sphinx-apidoc'. Generated script '/sample-buildout/bin/sphinx-autogen'...
我们期待什么?
一个包含Sphinx结构的docs文件夹
>>> docs = join(sample_buildout, 'docs') >>> ls(docs) - Makefile - make.bat
在bin文件夹中有一个脚本用于构建文档
>>> bin = join(sample_buildout, 'bin') >>> ls(bin) - buildout - sphinx-apidoc - sphinx-autogen - sphinx-build - sphinx-quickstart - sphinxbuilder
脚本内容是一个简单的shell脚本
>>> script = join(sample_buildout, 'bin', 'sphinxbuilder') >>> print(open(script).read()) #!/bin/bash cd ...docs make html >>> print('start ' + system(script)) start /sample-buildout/bin/sphinx-build -b html -d /sample-buildout/docs/doctrees ...src/collective/recipe/sphinxbuilder/docs /sample-buildout/docs/html ...
如果我们想生成latex,我们需要显式定义它
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = sphinxbuilder ... ... [sphinxbuilder] ... recipe = collective.recipe.sphinxbuilder ... source = collective.recipe.sphinxbuilder:docs ... outputs = ... html ... latex ... """) >>> print('start ' + system(buildout)) ... # doctest: +ELLIPSIS start Uninstalling sphinxbuilder. Installing sphinxbuilder. collective.recipe.sphinxbuilder: writing MAKEFILE.. collective.recipe.sphinxbuilder: writing BATCHFILE.. collective.recipe.sphinxbuilder: writing custom sphinx-builder script...
现在让我们看看我们的脚本
>>> cat(script) #!/bin/bash cd ...docs make html make latex
最后让我们运行它
>>> print('start ' + system(script)) start /sample-buildout/bin/sphinx-build -b html -d /sample-buildout/docs/doctrees .../src/collective/recipe/sphinxbuilder/docs /sample-buildout/docs/html ... <BLANKLINE> Build finished. The HTML pages are in /sample-buildout/docs/html. ... Build finished; the LaTeX files are in /sample-buildout/docs/latex. Run `make' in that directory to run these through (pdf)latex... <BLANKLINE>
如果我们想生成pdf,我们需要显式定义它
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = sphinxbuilder ... ... [sphinxbuilder] ... recipe = collective.recipe.sphinxbuilder ... source = collective.recipe.sphinxbuilder:docs ... outputs = ... html ... latex ... pdf ... """) >>> print('start ' + system(buildout)) ... # doctest: +ELLIPSIS start Uninstalling sphinxbuilder. Installing sphinxbuilder. collective.recipe.sphinxbuilder: writing MAKEFILE.. collective.recipe.sphinxbuilder: writing BATCHFILE.. collective.recipe.sphinxbuilder: writing custom sphinx-builder script...
现在让我们看看我们的脚本
>>> cat(script) #!/bin/bash cd ...docs make html make latex cd /sample-buildout/docs/latex && make all-pdf
由于PDF构建器依赖于可能未安装的库,我们将跳过在测试中运行脚本
如果我们要生成epub,就像pdf一样,我们需要显式定义它
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = sphinxbuilder ... ... [sphinxbuilder] ... recipe = collective.recipe.sphinxbuilder ... source = collective.recipe.sphinxbuilder:docs ... outputs = ... html ... epub ... """) >>> print('start ' + system(buildout)) ... # doctest: +ELLIPSIS start Uninstalling sphinxbuilder. Installing sphinxbuilder. collective.recipe.sphinxbuilder: writing MAKEFILE.. collective.recipe.sphinxbuilder: writing BATCHFILE.. collective.recipe.sphinxbuilder: writing custom sphinx-builder script...
现在让我们看看我们的脚本
>>> cat(script) #!/bin/bash cd ...docs make html make epub
我们还可以在构建时运行文档中的任何doctests
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = sphinxbuilder ... ... [sphinxbuilder] ... recipe = collective.recipe.sphinxbuilder ... source = collective.recipe.sphinxbuilder:docs ... outputs = ... doctest ... html ... """) >>> print('start ' + system(buildout)) ... # doctest: +ELLIPSIS start Uninstalling sphinxbuilder. Installing sphinxbuilder. collective.recipe.sphinxbuilder: writing MAKEFILE.. collective.recipe.sphinxbuilder: writing BATCHFILE.. collective.recipe.sphinxbuilder: writing custom sphinx-builder script...
现在让我们看看我们的脚本
>>> cat(script) #!/bin/bash cd ...docs make doctest make html
我们再次跳过运行它们,这次是为了避免递归fork bomb。;)
如果我们想使用extra-paths,我们可以将它们定义为正常路径或Unix通配符(请参阅fnmatch模块)
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = sphinxbuilder ... ... [sphinxbuilder] ... recipe = collective.recipe.sphinxbuilder ... source = collective.recipe.sphinxbuilder:docs ... extra-paths = ... develop-eggs/ ... eggs/* ... """) >>> print('start ' + system(buildout)) ... # doctest: +ELLIPSIS start Uninstalling sphinxbuilder. Installing sphinxbuilder. collective.recipe.sphinxbuilder: writing MAKEFILE.. collective.recipe.sphinxbuilder: writing BATCHFILE.. collective.recipe.sphinxbuilder: writing custom sphinx-builder script.. collective.recipe.sphinxbuilder: inserting extra-paths...
贡献者
Tarek Ziade,原作者
Rok Garbas
Sidnei da Silva
汉斯-彼得·洛克
多门·科扎尔
特雷西·西弗
莱因乌特·范·里斯,维护者
塞巴斯蒂安·多什
变更
1.1 (2018-04-24)
支持除bash之外的shell。[icemac]
1.0 (2016-07-11)
增加了Windows支持。[tkhyn]
0.9 (2016-06-27)
增加了使用travis-ci.org的自动测试。[reinout]
尝试修复在Python 3上的安装。[reinout]
当前代码位置是 https://github.com/reinout/collective.recipe.sphinxbuilder [reinout]
文档现在在readthedocs上:http://collectiverecipesphinxbuilder.readthedocs.io/ [reinout]
0.8.2 (2013-11-28)
在Python 3上安装时防止警告。[reinout]
0.8.1 (2013-11-27)
添加Python 3分类器
0.8.0 (2013-11-27)
增加了Python 3支持。[reinout]
0.7.4 (2013-11-15)
更新到Buildout 2
清理代码,使PEP8工具满意
0.7.3 (2013-02-16)
修补sphinx-build脚本以使用sys.exit()终止
添加warnings-html makefile选项
安装sphinx-apidoc和sphinx-autogen脚本
将所有txt文件重命名为rst文件
0.7.2 (2012-10-22)
需要Sphinx >= 1.1
0.7.1 (2012-04-29)
添加epub输出。
- 修复测试
在测试期间使用所需的包版本
使用标准的doctest而不是zope.testing.doctest。
0.7.0 (2010-09-10)
需要Sphinx >= 1.0
0.6.3.3 (2010-07-15)
将doctest选项添加到recipe的output选项(tseaver)
放宽Sphinx所需的版本,允许使用0.6.4之后的版本(但仍小于0.7dev)。
0.6.3.2 (2010-02-08)
修复了解释器选项[iElectric]
0.6.3.1 (2009-09-25)
前一个版本的问题[garbas]
0.6.3 (2009-09-09)
更新到Sphinx 0.6.3 [garbas]
简化sphinxbuilder [garbas]
更新文档 [garbas]
解释器选项 [iElectric]
添加日志[iElectric]
0.5.0 (2008-12-06)
使其与最新的sphinx 0.5兼容 [Rok Garbas]
允许指定‘product_directories’以能够记录旧式Zope产品。[Sidnei]
0.2.1 (2008-11-18)
修复了清单文件并制作了修复版本 [Rok Garbas]
0.2.0 (2008-11-11)
每次在parts/<buildout-section-name>下生成源树 [Rok Garbas]
使用entry_point‘collective.recipe.sphinxbuilder’查找conf选项、源、静态和模板文件 [Rok Garbas]
在docs/source设置自定义源文件夹 [Rok Garbas]
将构建部分移动到docs/html、docs/latex [Rok Garbas]
0.1.1 (2008-09-11)
使用环境中的本地sphinx-build [Tarek]
0.1.0 (2008-09-10)
初始实现 [Tarek Ziade]
使用ZopeSkel创建recipe [Tarek Ziade]。
项目详情
collective.recipe.sphinxbuilder-1.1.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8e07cf07a783cb8787e39a0efb49c7b3957ef7ef956f7a5af100a8da130654f9 |
|
MD5 | 60bc32d182ed915cd02fa79a6651068a |
|
BLAKE2b-256 | 3d78cb35687ab20e6bed0c0088fd707a6b8287d672816a5dc2eefe7de79e4eaa |