devtools::document 的预提交挂钩
Pre-commit hook for devtools::document
我想为 devtools::document
设置一个预提交挂钩,并希望在 devtools::document
更改任何内容时使提交失败。我检查了 devtools::document
来源,它 returns invisible()
所以不可能有条件地 return 退出代码。
在 devtools::document
有效时,是否有任何巧妙的方法来阻止提交的发生?
使用函数 capture.output
我们可以捕获 devtools::documents
每当它更改文件时发送的消息:
Writing getScore.Rd
所以当我们 运行:
results <- capture.output(devtools::document())
更新文档时(在本例中,我删除了一个 .Rd 文件,结果如下所示:
> results
[1] "Writing getScore.Rd"
如果什么都不写,results
为空:
> results
character(0)
我认为从这里继续下去很容易:)
OP,@BobJansen 创建了以下脚本 运行 上面的方法和 returns status = 0
如果没有文件被编辑, status = 100
如果任何地方:
#!/usr/bin/Rscript
source("packrat/init.R")
lines <- capture.output(devtools::document(), type = 'output')
if (length(lines) > 0) {
print(lines)
q(save = 'no', status = 100)
} else {
q(save = 'no', status = 0)
}
roxygen2::roxygenize()
有一个 hook,由开箱即用的 {precommit} 包提供。
披露:我是维护者。
我想为 devtools::document
设置一个预提交挂钩,并希望在 devtools::document
更改任何内容时使提交失败。我检查了 devtools::document
来源,它 returns invisible()
所以不可能有条件地 return 退出代码。
在 devtools::document
有效时,是否有任何巧妙的方法来阻止提交的发生?
使用函数 capture.output
我们可以捕获 devtools::documents
每当它更改文件时发送的消息:
Writing getScore.Rd
所以当我们 运行:
results <- capture.output(devtools::document())
更新文档时(在本例中,我删除了一个 .Rd 文件,结果如下所示:
> results
[1] "Writing getScore.Rd"
如果什么都不写,results
为空:
> results
character(0)
我认为从这里继续下去很容易:)
OP,@BobJansen 创建了以下脚本 运行 上面的方法和 returns status = 0
如果没有文件被编辑, status = 100
如果任何地方:
#!/usr/bin/Rscript
source("packrat/init.R")
lines <- capture.output(devtools::document(), type = 'output')
if (length(lines) > 0) {
print(lines)
q(save = 'no', status = 100)
} else {
q(save = 'no', status = 0)
}
roxygen2::roxygenize()
有一个 hook,由开箱即用的 {precommit} 包提供。
披露:我是维护者。