在我们的网站上,我们有大量的自定义R代码,用于构建一组内部使用和分发给R用户的软件包。我们尝试在版本控制方案中维护整个库,以便版本号和日期相同。问题是我们已经达到了这样的程度,即包的数量足够大,手动修改DESCRIPTION文件和包.Rd文件是非常耗时的,自动化这些部分会很好。
我们可以编写一个遍历整个文件集的前脚本,并写入当前数据和版本号。这可以通过很多痛苦来完成,但它会修改我们当前的构建链,我们将不得不调整各个步骤。
有没有办法可以在不进行预构建文件修改步骤的情况下完成此操作?换句话说,DESCRIPTION文件和.Rd文件是否包含类似于环境变量的东西,当R CMD构建调用时,该变量将被当前信息替换?
答案 0 :(得分:2)
您无法将环境变量用作R,在运行R CMD build ...
或R CMD INSTALL ...
时,会将文件视为已修复。
但无法通过另一层间接说明无法解决的问题仍然存在。您的R源代码可能只是另一个层中的文件,您可以根据某种模式对其进行文本替换。如果您喜欢autoconf
,您可以拥有DESCRIPTION.in
并让配置脚本查询环境变量,或元配置文件或数据库或其他内容,并将其写出来。同样,您可以使用sed
或perl
或python
或R
或...脚本进行文字替换。
我曾经让svn在DESCRIPTION中填写Date:
的参数,并在包含的头文件中编码修订号。它完全符合您心中的内容。