mirror of
https://github.com/msberends/AMR.git
synced 2024-12-26 05:26:13 +01:00
more robust install check
This commit is contained in:
parent
76bcd3528c
commit
85ed7ea5f0
@ -345,23 +345,17 @@ is_valid_regex <- function(x) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
stop_ifnot_installed <- function(package) {
|
stop_ifnot_installed <- function(package) {
|
||||||
# no "utils::installed.packages()" since it requires non-staged install since R 3.6.0
|
installed <- vapply(FUN.VALUE = logical(1), package, requireNamespace, quietly = TRUE)
|
||||||
# https://developer.r-project.org/Blog/public/2019/02/14/staged-install/index.html
|
if (any(!installed) && any(package == "rstudioapi")) {
|
||||||
vapply(FUN.VALUE = character(1), package, function(pkg) {
|
|
||||||
tryCatch(get(".packageName", envir = asNamespace(pkg)),
|
|
||||||
error = function(e) {
|
|
||||||
if (pkg == "rstudioapi") {
|
|
||||||
stop("This function only works in RStudio when using R >= 3.2.", call. = FALSE)
|
stop("This function only works in RStudio when using R >= 3.2.", call. = FALSE)
|
||||||
} else if (pkg != "base") {
|
} else if (any(!installed)) {
|
||||||
stop("This requires the '", pkg, "' package.",
|
stop("This requires the ", vector_and(package[!installed]), " package.",
|
||||||
"\nTry to install it with: install.packages(\"", pkg, "\")",
|
"\nTry to install with install.packages().",
|
||||||
call. = FALSE
|
call. = FALSE
|
||||||
)
|
)
|
||||||
}
|
} else {
|
||||||
}
|
|
||||||
)
|
|
||||||
})
|
|
||||||
return(invisible())
|
return(invisible())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pkg_is_available <- function(pkg, also_load = TRUE, min_version = NULL) {
|
pkg_is_available <- function(pkg, also_load = TRUE, min_version = NULL) {
|
||||||
|
Loading…
Reference in New Issue
Block a user