.bigbang_abort <- function(class, message, ...) { condition <- base::structure( base::c(base::list(message = message, call = NULL), base::list(...)), class = base::c(class, "bigbang_error", "error", "condition") ) base::stop(condition) } resolve_upgrade_policy <- function(force, upgrade, upgrade_missing) { if (!base::is.logical(force) || base::length(force) != 1L || base::is.na(force)) { .bigbang_abort( "bigbang_error_install_policy", .meta_tr("'force' must be TRUE or FALSE") ) } upgrade <- base::match.arg(upgrade, base::c("newer", "always", "never")) if (base::isTRUE(force)) { if (!base::isTRUE(upgrade_missing) && !base::identical(upgrade, "always")) { .bigbang_abort( "bigbang_error_install_policy", .meta_tr( "'force = TRUE' conflicts with an explicit upgrade policy other than 'always'" ) ) } upgrade <- "always" } upgrade }