diff --git a/NAMESPACE b/NAMESPACE index 58d150f7..0e096ecc 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -30,6 +30,7 @@ export(is_projectile_project) export(is_quarto_project) export(is_r_package) export(is_remake_project) +export(is_renv_project) export(is_root_criterion) export(is_rstudio_project) export(is_svn_root) diff --git a/R/root.R b/R/root.R index fbb55c07..7d925db2 100644 --- a/R/root.R +++ b/R/root.R @@ -321,6 +321,9 @@ is_drake_project <- has_dir(".drake") #' @export is_pkgdown_project <- has_file("_pkgdown.yml") | has_file("_pkgdown.yaml") | has_file("pkgdown/_pkgdown.yml") | has_file("inst/_pkgdown.yml") +#' @export +is_renv_project <- has_file("renv.lock", contents = '"Packages":\\s*\\{') + #' @export is_projectile_project <- has_file(".projectile") @@ -355,6 +358,7 @@ criteria <- structure( is_r_package = is_r_package, is_remake_project = is_remake_project, is_pkgdown_project = is_pkgdown_project, + is_renv_project = is_renv_project, is_projectile_project = is_projectile_project, is_quarto_project = is_quarto_project, is_git_root = is_git_root, @@ -412,6 +416,14 @@ str.root_criteria <- function(object, ...) { #' @export "is_pkgdown_project" +#' @details +#' `is_renv_project` looks for an `renv.lock` file. +#' +#' @format NULL +#' @rdname criteria +#' @export +"is_renv_project" + #' @details #' `is_projectile_project` looks for a `.projectile` file. #' diff --git a/man/criteria.Rd b/man/criteria.Rd index 5a89d224..4424ddc5 100644 --- a/man/criteria.Rd +++ b/man/criteria.Rd @@ -8,6 +8,7 @@ \alias{is_remake_project} \alias{is_drake_project} \alias{is_pkgdown_project} +\alias{is_renv_project} \alias{is_projectile_project} \alias{is_quarto_project} \alias{is_git_root} @@ -29,6 +30,8 @@ is_drake_project is_pkgdown_project +is_renv_project + is_projectile_project is_quarto_project @@ -57,6 +60,8 @@ This is a collection of commonly used root criteria. \code{is_pkgdown_project} looks for a \verb{_pkgdown.yml}, \verb{_pkgdown.yaml}, \verb{pkgdown/_pkgdown.yml} and/or \verb{inst/_pkgdown.yml} file. +\code{is_renv_project} looks for an \code{renv.lock} file. + \code{is_projectile_project} looks for a \code{.projectile} file. \code{is_quarto_project} looks for a \verb{_quarto.yml} file. diff --git a/tests/testthat/_snaps/root.md b/tests/testthat/_snaps/root.md index c82a107b..14063cd3 100644 --- a/tests/testthat/_snaps/root.md +++ b/tests/testthat/_snaps/root.md @@ -57,6 +57,9 @@ - contains a file "pkgdown/_pkgdown.yml" - contains a file "inst/_pkgdown.yml" + $is_renv_project + Root criterion: contains a file "renv.lock" with contents matching ""Packages":\s*\{" + $is_projectile_project Root criterion: contains a file ".projectile" @@ -91,11 +94,12 @@ Code str(criteria) Output - List of 11 + List of 12 $ is_rstudio_project : chr "Root criterion: contains a file matching \"[.]Rproj$\" with contents matching \"^Version: \" in the first line" $ is_r_package : chr "Root criterion: contains a file \"DESCRIPTION\" with contents matching \"^Package: \"" $ is_remake_project : chr "Root criterion: contains a file \"remake.yml\"" $ is_pkgdown_project : chr [1:5] "Root criterion: one of" "- contains a file \"_pkgdown.yml\"" "- contains a file \"_pkgdown.yaml\"" "- contains a file \"pkgdown/_pkgdown.yml\"" ... + $ is_renv_project : chr "Root criterion: contains a file \"renv.lock\" with contents matching \"\"Packages\":\\s*\\{\"" $ is_projectile_project: chr "Root criterion: contains a file \".projectile\"" $ is_quarto_project : chr "Root criterion: contains a file \"_quarto.yml\"" $ is_git_root : chr [1:3] "Root criterion: one of" "- contains a directory \".git\"" "- contains a file \".git\" with contents matching \"^gitdir: \""