1
0
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:
Dr. Matthijs Berends 2022-10-14 15:45:20 +02:00 committed by GitHub
parent 76bcd3528c
commit 85ed7ea5f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -345,24 +345,18 @@ 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) {
if (also_load == TRUE) { if (also_load == TRUE) {