Open kenahoo opened 5 years ago
I guess while I'm at it, I have the same question about remotes::install_version
- some way for it to use crancache
too?
I did a quick implementation of an install_deps
that could be added to crancache
(or sit outside it, or whatever):
install_deps <- function(pkgdir = ".",
dependencies = NA,
...) {
descr <- read.dcf(file.path(pkgdir, 'DESCRIPTION'), fields = remotes::standardise_dep(dependencies))
descr <- descr[, !is.na(descr), drop=FALSE]
deps <- do.call(rbind, apply(descr, 2, remotes:::parse_deps))
apply(deps, 1, function(dep) {
pkg <- dep['name']
message("Checking package ", pkg)
# TODO take into account the 'compare' and 'version' columns
if (is.na(suppressWarnings(packageDescription(pkg, fields = "Version")))) {
install_packages(pkg, dependencies = dependencies, ...)
} else {
message(" ...already installed")
}
})
invisible()
}
There's a call to a private function in remotes
, so obviously that would need some tweaking, but I wanted to share the idea.
Is there some way to get
crancache
andremotes::install_deps
to play nice together? Maybe some way of trickinginstall_deps
to usecrancache::install_packages
instead ofutils::install.packages
?Or is the best way to slurp in the information from the
DESCRIPTION
file and iterate through the dependencies manually?