From 8255c2a5d8d46c503f492582592d5fcafbd5b0e3 Mon Sep 17 00:00:00 2001 From: Ralf Herold Date: Thu, 7 Nov 2024 08:47:46 +0100 Subject: [PATCH] stronger inline version checking --- DESCRIPTION | 12 ++++++------ R/src_sqlite.R | 10 +++++----- R/zzz.R | 17 ++++++++++++++--- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 858a7f6..a65b28b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -35,16 +35,16 @@ Imports: V8, R.utils Suggests: - sofa (>= 0.3.0), - elastic (>= 1.0.0), - mongolite (>= 1.6), - RSQLite (>= 2.3.7.9014), - duckdb (>= 1.1.0), + sofa, + elastic, + mongolite, + RSQLite, + duckdb, RPostgres, testthat, withr, callr, - webfakes (>= 1.2.0), + webfakes, knitr, rmarkdown, tibble diff --git a/R/src_sqlite.R b/R/src_sqlite.R index 42bdbab..c1efbfa 100644 --- a/R/src_sqlite.R +++ b/R/src_sqlite.R @@ -25,12 +25,11 @@ #' print(con) #' } #' -src_sqlite <- function(dbname = ":memory:", - ...) { +src_sqlite <- function(dbname = ":memory:", ...) { # check minimum version - featUuid <- pkgNeeded("RSQLite", "2.3.7.9000") - + pkgNeeded("RSQLite", "2.3.6") + # open connection con <- DBI::dbConnect( drv = RSQLite::SQLite(), @@ -40,7 +39,8 @@ src_sqlite <- function(dbname = ":memory:", # enable regular expressions RSQLite::initRegExp(db = con) - # enable uuid and lines + # enable uuid for csv lines import + featUuid <- pkgNeeded("RSQLite", "2.3.7.9014", FALSE) if (featUuid) RSQLite::initExtension(db = con, extension = "uuid") # set timeout for concurrency to 10s diff --git a/R/zzz.R b/R/zzz.R index 85de8d6..0804f71 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -61,7 +61,7 @@ assert <- function(x, y) { #' @keywords internal #' @noRd #' -pkgNeeded <- function(pkg, minV) { +pkgNeeded <- function(pkg, minV, minVneeded = TRUE) { if (!requireNamespace(pkg, quietly = TRUE)) { stop( @@ -71,8 +71,19 @@ pkgNeeded <- function(pkg, minV) { ) } - return(utils::packageVersion(pkg) >= - package_version(minV)) + minVavailable <- utils::packageVersion(pkg) >= + package_version(minV) + + if (!minVavailable && minVneeded) { + stop( + "Package '", pkg, + "' must be updated to at least version ", + minV, " to use this function.", + call. = FALSE + ) + } + + return(minVavailable) }