-
Notifications
You must be signed in to change notification settings - Fork 0
/
runiverse-dependencies.R
41 lines (40 loc) · 1.25 KB
/
runiverse-dependencies.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#' Get dependencies of a package in one of R universes
#'
#' @description This function queries the selected universe for dependencies
#' of the selected package.
#'
#' @template package
#' @template universe
#'
#' @return A data frame with three columns, all in string format:
#' * `package` (package name),
#' * `version` (minimum version requirement or `NA` if none),
#' * `type` (dependency type, e.g. `"Imports"`).
#'
#' @examples
#' \donttest{
#' wood_runiverse_dependencies("targets")
#' wood_runiverse_dependencies("ggplot2", universe = "tidyverse")
#' }
#'
#' @family runiverse
#' @family dependencies
#' @export
wood_runiverse_dependencies <- function(package, universe = "ropensci") {
assert_param_package(package)
assert_param_runiverse(universe)
desc <- runiverse_description_cache(package, universe)
ret <- data.frame(
package = vapply(desc[["deps"]], `[[`, character(1), "package"),
version = vapply(desc[["deps"]], function(dep) {
version <- dep[["version"]]
if (is.null(version)) return(NA_character_)
version <- regmatches(version, regexec(
">=\\s+(.*)", version
))[[1]][2]
}, character(1)),
type = vapply(desc[["deps"]], `[[`, character(1), "role"),
stringsAsFactors = FALSE
)
as_wood_deps(ret)
}