Is there a function that expands the path to the actual subdirectory containing package binaries (or whatever the equivalent under Linux and Mac OS is called) given the URL-like path to a local repository's root directory in an OS-independent manner?
Due Dilligence
Related Links
Suppose you have a repository under L:/my_repo
:
path.repo <- "L:/my_repo"
MS Windows requires a certain subdirectory structure:
path.sub <- file.path("bin/windows/contrib", paste(version$major,
gsub("(?<=\\d)\\.\\d", "", version$minor, perl=TRUE), sep=".")
)
Actually create the repository:
dir.create(file.path(path.repo, path.sub), recursive=TRUE, showWarnings=FALSE)
Once a package binary exists in the repository, the repository's index needs to be created:
setwd(file.path(path.repo, path.sub))
tools::write_PACKAGES(".", type="win.binary")
After that, the repository is good to go and you could install its packages via
install.packages("mypackage", repos=file.path("file://", path.repo))
So far, so good. I'd like to create a function that automatically copies a package binary to my local repository once the package binary has been built. In order to do so, I guess I need to retrieve the path to the actual directory containing the binaries and the two index files (PACKAGES' and
PACKAGES.gz`). And that should happen in an OS-independent way in order to make it as generic as possible.
Of course I could search for the index files via
unique(dirname(grep("PACKAGE*", list.files(path.repo, recursive=TRUE,
full.names=TRUE), value=TRUE)))
But I wonder if there's a better way.