1 find_root <- function() {
2 if (!requireNamespace("rprojroot", quietly = TRUE)) {
3 install.packages("rprojroot", lib = lib, repos = repos)
6 cfg <- rprojroot::has_file_pattern("^_config.y*ml$")
7 root <- rprojroot::find_root(cfg)
12 identify_dependencies <- function(lib = NULL, repos = getOption("repos")) {
18 if (!requireNamespace("renv", quietly = TRUE)) {
19 install.packages("renv", lib = lib, repos = repos)
24 required_pkgs <- unique(c(
25 ## Packages for episodes
26 renv::dependencies(file.path(root, "_episodes_rmd"), progress = FALSE, error = "ignore")$Package,
28 renv::dependencies(file.path(root, "bin"), progress = FALSE, error = "ignore")$Package
34 install_dependencies <- function(required_pkgs,
35 lib = NULL, repos = getOption("repos"),
36 update = FALSE, ...) {
42 missing_pkgs <- setdiff(required_pkgs, rownames(installed.packages()))
44 if (length(missing_pkgs)) {
45 message("Installing missing required packages: ",
46 paste(missing_pkgs, collapse=", "))
47 install.packages(missing_pkgs, lib = lib, repos = repos)
52 lib.loc = lib, repos = repos,
53 ask = FALSE, checkBuilt = TRUE, ...
57 if (require("knitr") && packageVersion("knitr") < '1.9.19') {
58 stop("knitr must be version 1.9.20 or higher")
63 create_description <- function(required_pkgs) {
65 d <- description$new("!new")
66 lapply(required_pkgs, function(x) d$set_dep(x))
67 d$write("DESCRIPTION")