FWIW, the `desc` package can extract dependencies from a local DESCRIPTION, and it is lightweight. It only depends on small, R-only packages (R6 and crayon).
❯ desc::desc_get_deps(".") type package version 1 Imports DBI * 2 Imports markdown * 3 Imports rhandsontable * 4 Imports RSQLite * 5 Imports shiny * 6 Imports shinyAce * 7 Imports shinyjs * 8 Imports shinytoastr * 9 Imports whisker * Another alternative is the 'remotes' package, this has no dependencies at all: ❯ remotes::local_package_deps(".") [1] "DBI" "markdown" "rhandsontable" "RSQLite" [5] "shiny" "shinyAce" "shinyjs" "shinytoastr" [9] "whisker" It is at https://github.com/MangoTheCat/remotes, but note that it does have some other bugs: https://github.com/MangoTheCat/remotes/issues Disclaimer: I wrote most of 'desc' and parts of 'remotes', and maintain both. Gábor On Thu, Jun 16, 2016 at 8:37 AM, Joris Meys <jorism...@gmail.com> wrote: > Dear Jan, > > It is unavoidable to have OS and R dependencies for devtools. The building > process for packages is both OS and R dependent, so devtools has to be too > according to my understanding. > > Cheers > Joris > On 14 Jun 2016 18:56, "Jan Górecki" <j.gore...@wit.edu.pl> wrote: > > Hi Thierry, > > I'm perfectly aware of it. Any idea when devtools would be shipped as > a base R package, or at least recommended package? To actually answer > the problem described in my email. > I have range of useful functions available tools/utils packages which > are shipped together with R. They doesn't require any OS dependencies > or R dependencies, unlike devtools which requires both. Installing > unnecessary OS dependencies and R dependencies just for such a simple > wrapper doesn't seem to be an elegant way to address it, therefore my > proposal to include that simple function in tools, or utils package. > > Regards, > Jan Gorecki > > On 14 June 2016 at 16:17, Thierry Onkelinx <thierry.onkel...@inbo.be> wrote: >> Dear Jan, >> >> Similar functionality is available in devtools::dev_package_deps() >> >> Best regards, >> >> ir. Thierry Onkelinx >> Instituut voor natuur- en bosonderzoek / Research Institute for Nature and >> Forest >> team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance >> Kliniekstraat 25 >> 1070 Anderlecht >> Belgium >> >> To call in the statistician after the experiment is done may be no more > than >> asking him to perform a post-mortem examination: he may be able to say > what >> the experiment died of. ~ Sir Ronald Aylmer Fisher >> The plural of anecdote is not data. ~ Roger Brinner >> The combination of some data and an aching desire for an answer does not >> ensure that a reasonable answer can be extracted from a given body of > data. >> ~ John Tukey >> >> 2016-06-14 16:54 GMT+02:00 Jan Górecki <j.gore...@wit.edu.pl>: >>> >>> Hi all, >>> >>> Packages tools and utils have a lot of useful stuff for R developers. >>> I find one task still not as straightforward as it could. Simply to >>> extract dependencies of a package from DESCRIPTION file (before it is >>> even installed to library). This would be valuable in automation of CI >>> setup in a more meta-data driven way. >>> The simple function below, I know it is short and simple, but having >>> it to be defined in each CI workflow is a pain, it could be already >>> available in tools or utils namespace. >>> >>> package.dependencies.dcf <- function(file = "DESCRIPTION", which = >>> c("Depends","Imports","LinkingTo")) { >>> stopifnot(file.exists(file), is.character(which)) >>> which_all <- c("Depends", "Imports", "LinkingTo", "Suggests", >>> "Enhances") >>> if (identical(which, "all")) >>> which <- which_all >>> else if (identical(which, "most")) >>> which <- c("Depends", "Imports", "LinkingTo", "Suggests") >>> stopifnot(which %in% which_all) >>> dcf <- read.dcf(file, which) >>> # parse fields >>> raw.deps <- unlist(strsplit(dcf[!is.na(dcf)], ",", fixed = TRUE)) >>> # strip stated dependency version >>> deps <- trimws(sapply(strsplit(trimws(raw.deps), "(", fixed = >>> TRUE), `[[`, 1L)) >>> # exclude base R pkgs >>> base.pkgs <- c("R", rownames(installed.packages(priority = "base"))) >>> setdiff(deps, base.pkgs) >>> } >>> >>> This allows to easily install all package dependencies just based on >>> DESCRIPTION file, so simplify that in custom CI workflows to: >>> >>> if (length(pkgs<-package.dependencies.dcf(which="all"))) >>> install.packages(pkgs) >>> >>> And would not require to install custom packages or shell scripts. >>> >>> Regards, >>> Jan Gorecki >>> >>> ______________________________________________ >>> R-devel@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel