Create dependencies file

library(attachment)

Write instructions to install all dependencies from a “DESCRIPTION” file

create_dependencies_file() creates “inst/dependencies.R” file with the instructions to install all dependencies listed in your “DESCRIPTION”. This accounts for the “Remotes” field and write instructions accordingly.

Use create_dependencies_file(to = NULL) to only retrieve the output as a list of character and not save a “inst/dependencies.R” file in your project. This can be used in a Readme.Rmd file for instance, to get the full list of each dependency to install and how, from any “DESCRIPTION” file.

# Create a fake package
tmpdir <- tempfile(pattern = "depsfile")
dir.create(tmpdir)
file.copy(system.file("dummypackage",package = "attachment"), tmpdir,
          recursive = TRUE)
#> [1] TRUE
dummypackage <- file.path(tmpdir, "dummypackage")

# Create the dependencies commands but no file
create_dependencies_file(
  path = file.path(dummypackage,"DESCRIPTION"),
  to = NULL,
  open_file = FALSE)
#> $remotes_content
#> [1] "# No Remotes ----"
#> 
#> $attachment_content
#> # Attachments ----
#> to_install <- c("magrittr")
#>   for (i in to_install) {
#>     message(paste("looking for ", i))
#>     if (!requireNamespace(i, quietly = TRUE)) {
#>       message(paste("     installing", i))
#>       install.packages(i)
#>     }
#>   }

# Create the dependencies files in the package
create_dependencies_file(
  path = file.path(dummypackage,"DESCRIPTION"),
  to = file.path(dummypackage, "inst/dependencies.R"),
  open_file = FALSE)
list.files(file.path(dummypackage, "inst"))
#> [1] "dependencies.R"
# browseURL(dummypackage)

# Clean temp files after this example
unlink(tmpdir, recursive = TRUE)