/
getCurrentGitHubVersion.R
40 lines (40 loc) · 1.09 KB
/
getCurrentGitHubVersion.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
#' Get current release version of package from GitHub
#'
#' @export
#' @note Updated 2022-10-20.
#'
#' @param repo `character`.
#' GitHub repository ("user/package").
#' Vectorized, supporting multiple requests in a single call.
#'
#' @return `package_version`.
#' Package `repo` is defined in `names`.
#'
#' @examples
#' repo <- paste("r-lib", c("rlang", "testthat"), sep = "/")
#' print(repo)
#' x <- getCurrentGitHubVersion(repo)
#' print(x)
getCurrentGitHubVersion <- function(repo) {
stopifnot(.requireNamespaces("pipette"))
x <- vapply(
X = repo,
FUN = function(repo) {
## nolint start
url <- paste(
"https://api.github.com", "repos", repo, "releases", "latest",
sep = "/"
)
## nolint end
x <- pipette::import(url, format = "json", quiet = TRUE)
x <- x[["tag_name"]]
x <- gsub(pattern = "^v", replacement = "", x = x)
x
},
FUN.VALUE = character(1L),
USE.NAMES = FALSE
)
x <- package_version(x)
names(x) <- repo
x
}