From 774212817f5fa9bc74450911908ae3eb615e15cc Mon Sep 17 00:00:00 2001 From: enblacar Date: Sun, 13 Aug 2023 10:19:36 +0200 Subject: [PATCH] Fix startup messages. --- NEWS.md | 3 + R/utils.R | 627 +++++++++++++++++++++++------------------- R/zzz.R | 3 +- man/package_report.Rd | 9 +- 4 files changed, 350 insertions(+), 292 deletions(-) diff --git a/NEWS.md b/NEWS.md index ba4c912..b368801 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,8 @@ # SCpubr v2.X.X (next release) +## General +- Refactored startup messages to comply with CRAN policies. + ## `SCpubr::do_EnrichmentHeatmap` - Fixed a bug that checked the pacakge dependencies for the wrong function. diff --git a/R/utils.R b/R/utils.R index ee2a33d..102b333 100644 --- a/R/utils.R +++ b/R/utils.R @@ -749,6 +749,9 @@ check_dependencies <- function(function_name = NULL, return_dependencies = FALSE #' This function generates a summary report of the installation status of SCpubr, which packages are still missing and which functions can or can not currently be used. #' #' @param startup \strong{\code{\link[base]{logical}}} | Whether the message should be displayed at startup, therefore, also containing welcoming messages and tips. If \strong{\code{FALSE}}, only the report itself will be printed. +#' @param extended \strong{\code{\link[base]{logical}}} | Whether the message should also include installed packages, current and available version, and which \strong{\code{SCpubr}} functions can be used with the currently installed packages. +#' @param extended \strong{\code{\link[base]{bioconductor_repo}}} | Link to the repository that should be used to check \strong{\code{Bioconductor}} packages. +#' @param extended \strong{\code{\link[base]{cran_repo}}} | Link to the repository that should be used to check \strong{\code{CRAN}} packages. #' @return None #' @export #' @@ -759,7 +762,10 @@ check_dependencies <- function(function_name = NULL, return_dependencies = FALSE #' SCpubr::package_report() #' } -package_report <- function(startup = FALSE){ +package_report <- function(startup = FALSE, + extended = FALSE, + bioconductor_repo = "https://bioconductor.org/packages/release/bioc", + cran_repo = "http://cran.us.r-project.org"){ # nocov start if (base::isFALSE(requireNamespace("cli", quietly = TRUE)) | base::isFALSE(requireNamespace("rlang", quietly = TRUE))){ if (base::isFALSE(startup)){ @@ -816,277 +822,285 @@ package_report <- function(startup = FALSE){ plotting <- paste0(cli::style_bold(cli::col_red(cli::symbol$heart)), " ", crayon_body("Happy plotting!")) - updates_check <- cli::rule(left = "Package version", width = nchar("Package version") + 6) - - r_packages <- utils::available.packages(repos = c("https://bioconductor.org/packages/3.15/bioc", "http://cran.us.r-project.org"))[, "Version"] - cran_version <- utils::available.packages(repos = "http://cran.us.r-project.org")["SCpubr", "Version"] - system_version <- as.character(utils::packageVersion("SCpubr")) - - l1 <- nchar(system_version) - l2 <- nchar(cran_version) - max_length <- max(c(l1, l2)) - - if (rev(strsplit(as.character(system_version), split = "\\.")[[1]])[1] >= 9000){ - parts <- strsplit(as.character(system_version), split = "\\.")[[1]] - parts[[length(parts)]] <- cli::col_yellow(parts[[length(parts)]]) - system_version <- paste(parts, collapse = ".") - } - - header <- cli::rule(left = paste0(crayon_body("SCpubr "), - crayon_key(system_version)), line_col = "cadetblue") - - system_version_message <- paste0(cli::col_magenta("Installed: "), cli::ansi_align(crayon_key(system_version), max_length, align = "right")) - cran_version_message <- paste0(cli::col_magenta("CRAN: "), cli::ansi_align(crayon_key(cran_version), max_length, align = "right")) - - - # nocov start - if (system_version < cran_version){ - veredict_message <- paste0(cli::col_yellow(cli::symbol$warning, - crayon_body(" There is a "), - crayon_key("new version"), - crayon_body(" available on"), - crayon_key("CRAN"), - crayon_body("!"))) + if (isTRUE(extended)){ + header <- cli::rule(left = paste0(crayon_body("SCpubr "), + crayon_key(system_version)), line_col = "cadetblue") } else { - # nocov end - veredict_message <- paste0(cli::col_green(cli::symbol$tick, - crayon_body(" Package is "), - crayon_key("up to date"), - crayon_body(" with latest "), - crayon_key("CRAN"), - crayon_body(" version!"))) + header <- cli::rule(left = paste0(crayon_body("SCpubr")), line_col = "cadetblue") } - format_package_name <- function(package, - avail_packages, - max_length_packages, - max_length_version_available, - max_length_version_installed){ - color_version <- function(version, - max_version, - type){ - if (length(strsplit(as.character(version), split = "\\.")[[1]]) > 3){ - parts <- strsplit(as.character(version), split = "\\.")[[1]] - version_parts <- paste(parts[seq_len(length(parts) - 1)], collapse = ".") - dev_parts <- paste(parts[length(parts)], collapse = ".") - length.use <- nchar(version_parts) + nchar(dev_parts) + 1 - if (type == "installed"){ - version_parts <- paste0(paste(rep(" ", (max_version - length.use)), collapse = ""), version_parts) - version_parts <- crayon_key(version_parts) - dev_parts <- cli::col_yellow(dev_parts) + if (isTRUE(extended)){ + + + updates_check <- cli::rule(left = "Package version", width = nchar("Package version") + 6) + + r_packages <- utils::available.packages(repos = c(bioconductor_repo, cran_repo))[, "Version"] + cran_version <- utils::available.packages(repos = cran_repo)["SCpubr", "Version"] + system_version <- as.character(utils::packageVersion("SCpubr")) + + l1 <- nchar(system_version) + l2 <- nchar(cran_version) + max_length <- max(c(l1, l2)) + + if (rev(strsplit(as.character(system_version), split = "\\.")[[1]])[1] >= 9000){ + parts <- strsplit(as.character(system_version), split = "\\.")[[1]] + parts[[length(parts)]] <- cli::col_yellow(parts[[length(parts)]]) + system_version <- paste(parts, collapse = ".") + } + + + system_version_message <- paste0(cli::col_magenta("Installed: "), cli::ansi_align(crayon_key(system_version), max_length, align = "right")) + cran_version_message <- paste0(cli::col_magenta("CRAN: "), cli::ansi_align(crayon_key(cran_version), max_length, align = "right")) + + + # nocov start + if (system_version < cran_version){ + veredict_message <- paste0(cli::col_yellow(cli::symbol$warning, + crayon_body(" There is a "), + crayon_key("new version"), + crayon_body(" available on"), + crayon_key("CRAN"), + crayon_body("!"))) + } else { + # nocov end + veredict_message <- paste0(cli::col_green(cli::symbol$tick, + crayon_body(" Package is "), + crayon_key("up to date"), + crayon_body(" with latest "), + crayon_key("CRAN"), + crayon_body(" version!"))) + } + + format_package_name <- function(package, + avail_packages, + max_length_packages, + max_length_version_available, + max_length_version_installed){ + color_version <- function(version, + max_version, + type){ + if (length(strsplit(as.character(version), split = "\\.")[[1]]) > 3){ + parts <- strsplit(as.character(version), split = "\\.")[[1]] + version_parts <- paste(parts[seq_len(length(parts) - 1)], collapse = ".") + dev_parts <- paste(parts[length(parts)], collapse = ".") + length.use <- nchar(version_parts) + nchar(dev_parts) + 1 + if (type == "installed"){ + version_parts <- paste0(paste(rep(" ", (max_version - length.use)), collapse = ""), version_parts) + version_parts <- crayon_key(version_parts) + dev_parts <- cli::col_yellow(dev_parts) + } else { + version_parts <- crayon_key(version_parts) + dev_parts <- paste0(dev_parts, paste(rep(" ", (max_version - length.use)), collapse = "")) + dev_parts <- cli::col_yellow(dev_parts) + } + parts <- c(version_parts, dev_parts) + version <- paste(parts, collapse = ".") + } else { - version_parts <- crayon_key(version_parts) - dev_parts <- paste0(dev_parts, paste(rep(" ", (max_version - length.use)), collapse = "")) - dev_parts <- cli::col_yellow(dev_parts) + parts <- strsplit(as.character(version), split = "\\.")[[1]] + version_parts <- paste(parts[seq_len(length(parts))], collapse = ".") + length.use <- nchar(version_parts) + times <- max_version - length.use + if (type == "installed"){ + version_parts <- paste0(paste(rep(" ", times), collapse = ""), version_parts) + version <- crayon_key(version_parts) + } else { + version_parts <- paste0(version_parts, paste(rep(" ", times), collapse = "")) + version <- crayon_key(version_parts) + } } - parts <- c(version_parts, dev_parts) - version <- paste(parts, collapse = ".") + return(version) + } + length.use <- max_length_packages - nchar(package) + package.use <- paste0(package, paste(rep(" ", length.use), collapse = "")) + if (isTRUE(requireNamespace(package, quietly = TRUE))){ + installed <- color_version(version = utils::packageVersion(package), + max_version = max_length_version_installed, + type = "installed") - } else { - parts <- strsplit(as.character(version), split = "\\.")[[1]] - version_parts <- paste(parts[seq_len(length(parts))], collapse = ".") - length.use <- nchar(version_parts) - times <- max_version - length.use - if (type == "installed"){ - version_parts <- paste0(paste(rep(" ", times), collapse = ""), version_parts) - version <- crayon_key(version_parts) + latest <- color_version(version = avail_packages[package], + max_version = max_length_version_available, + type = "available") + + if ((package == "ggplot2") & (utils::packageVersion(package) < "3.4.0")){ + intro <- paste0(cli::col_yellow(cli::style_bold("!")), + " ", + cli::col_magenta(package.use)) + } else if ((package == "dplyr") & (utils::packageVersion(package) < "1.1.0")){ + intro <- paste0(cli::col_yellow(cli::style_bold("!")), + " ", + cli::col_magenta(package.use)) } else { - version_parts <- paste0(version_parts, paste(rep(" ", times), collapse = "")) - version <- crayon_key(version_parts) + intro <- paste0(cli::col_green(cli::symbol$tick), + crayon_body(" "), + crayon_body(package.use)) } - } - return(version) - } - length.use <- max_length_packages - nchar(package) - package.use <- paste0(package, paste(rep(" ", length.use), collapse = "")) - if (isTRUE(requireNamespace(package, quietly = TRUE))){ - installed <- color_version(version = utils::packageVersion(package), - max_version = max_length_version_installed, - type = "installed") - - latest <- color_version(version = avail_packages[package], - max_version = max_length_version_available, - type = "available") - - if ((package == "ggplot2") & (utils::packageVersion(package) < "3.4.0")){ - intro <- paste0(cli::col_yellow(cli::style_bold("!")), - " ", - cli::col_magenta(package.use)) - } else if ((package == "dplyr") & (utils::packageVersion(package) < "1.1.0")){ - intro <- paste0(cli::col_yellow(cli::style_bold("!")), - " ", - cli::col_magenta(package.use)) + + name <- paste0(intro, + crayon_body(" "), + installed, + crayon_body(" | "), + latest) + return(name) } else { - intro <- paste0(cli::col_green(cli::symbol$tick), - crayon_body(" "), - crayon_body(package.use)) + return(paste0(cli::col_red(cli::symbol$cross), + crayon_body(" "), + cli::col_red(package.use), + paste(rep(" ", max_length_version_installed), collapse = ""), + " ", + paste(rep(" ", max_length_version_available), collapse = ""))) } - - name <- paste0(intro, - crayon_body(" "), - installed, - crayon_body(" | "), - latest) - return(name) + } + + packages <- sort(unique(unlist(check_dependencies(return_dependencies = TRUE)))) + packages_version <- vapply(packages, function(x){ifelse(isTRUE(requireNamespace(x, quietly = TRUE)), + as.character(utils::packageVersion(x)), + "NA")}, FUN.VALUE = character(1)) + avail_packages <- r_packages[packages] + avail_packages[is.na(avail_packages)] <- "GitHub" + names(avail_packages)[is.na(names(avail_packages))] <- "liana" + max_length_available <- max(vapply(avail_packages, nchar, FUN.VALUE = numeric(1))) + max_length_installed <- max(vapply(packages_version, nchar, FUN.VALUE = numeric(1))) + max_length_packages <- max(vapply(packages, nchar, FUN.VALUE = numeric(1))) + packages_mod <- vapply(packages, function(x){format_package_name(x, + avail_packages = avail_packages, + max_length_packages = max_length_packages, + max_length_version_available = max_length_available, + max_length_version_installed = max_length_installed)}, FUN.VALUE = character(1)) + functions <- sort(unique(names(check_dependencies(return_dependencies = TRUE)))) + + if (rev(strsplit(as.character( as.character(utils::packageVersion("SCpubr"))), split = "\\.")[[1]])[1] >= 9000){ + names.use <- unname(vapply(functions, function(x){if (x %in% c("do_LigandReceptorPlot", + "save_Plot", + "do_MetadataPlot", + "do_SCExpressionHeatmap", + "do_SCEnrichmentHeatmap", + "do_AffinityAnalysisPlot", + "do_DiffusionMapPlot")){x <- paste0(x, cli::col_yellow(" | DEV"))} else {x}}, FUN.VALUE = character(1))) + functions <- vapply(functions, check_suggests, passive = TRUE, FUN.VALUE = logical(1)) + names(functions) <- names.use + # nocov start } else { - return(paste0(cli::col_red(cli::symbol$cross), - crayon_body(" "), - cli::col_red(package.use), - paste(rep(" ", max_length_version_installed), collapse = ""), - " ", - paste(rep(" ", max_length_version_available), collapse = ""))) + functions <- functions[!(functions %in% c("do_LigandReceptorPlot", + "save_Plot", + "do_MetadataPlot", + "do_SCExpressionHeatmap", + "do_SCEnrichmentHeatmap", + "do_AffinityAnalysisPlot", + "do_DiffusionMapPlot"))] + functions <- vapply(functions, check_suggests, passive = TRUE, FUN.VALUE = logical(1)) } - } - - packages <- sort(unique(unlist(check_dependencies(return_dependencies = TRUE)))) - packages_version <- vapply(packages, function(x){ifelse(isTRUE(requireNamespace(x, quietly = TRUE)), - as.character(utils::packageVersion(x)), - "NA")}, FUN.VALUE = character(1)) - avail_packages <- r_packages[packages] - avail_packages[is.na(avail_packages)] <- "GitHub" - names(avail_packages)[is.na(names(avail_packages))] <- "liana" - max_length_available <- max(vapply(avail_packages, nchar, FUN.VALUE = numeric(1))) - max_length_installed <- max(vapply(packages_version, nchar, FUN.VALUE = numeric(1))) - max_length_packages <- max(vapply(packages, nchar, FUN.VALUE = numeric(1))) - packages_mod <- vapply(packages, function(x){format_package_name(x, - avail_packages = avail_packages, - max_length_packages = max_length_packages, - max_length_version_available = max_length_available, - max_length_version_installed = max_length_installed)}, FUN.VALUE = character(1)) - functions <- sort(unique(names(check_dependencies(return_dependencies = TRUE)))) - - if (rev(strsplit(as.character( as.character(utils::packageVersion("SCpubr"))), split = "\\.")[[1]])[1] >= 9000){ - names.use <- unname(vapply(functions, function(x){if (x %in% c("do_LigandReceptorPlot", - "save_Plot", - "do_MetadataPlot", - "do_SCExpressionHeatmap", - "do_SCEnrichmentHeatmap", - "do_AffinityAnalysisPlot", - "do_DiffusionMapPlot")){x <- paste0(x, cli::col_yellow(" | DEV"))} else {x}}, FUN.VALUE = character(1))) - functions <- vapply(functions, check_suggests, passive = TRUE, FUN.VALUE = logical(1)) - names(functions) <- names.use - # nocov start - } else { - functions <- functions[!(functions %in% c("do_LigandReceptorPlot", - "save_Plot", - "do_MetadataPlot", - "do_SCExpressionHeatmap", - "do_SCEnrichmentHeatmap", - "do_AffinityAnalysisPlot", - "do_DiffusionMapPlot"))] - functions <- vapply(functions, check_suggests, passive = TRUE, FUN.VALUE = logical(1)) - } - # nocov end - - - functions <- functions[names(functions) != "Essentials"] - - max_length_functions <- max(vapply(names(functions), nchar, FUN.VALUE = numeric(1))) - format_functions <- function(name, value, max_length){ - func_use <- ifelse(isTRUE(value), cli::col_green(cli::symbol$tick), cli::col_red(cli::symbol$cross)) - name_use <- ifelse(isTRUE(value), - cli::ansi_align(crayon_body(name), max_length, align = "left"), - cli::ansi_align(cli::col_red(name), max_length, align = "left")) - paste0(func_use, " ", name_use) - } - - functions.use <- NULL - for(item in names(functions)){ - functions.use <- append(functions.use, format_functions(name = item, value = functions[[item]], max_length = max_length_functions)) - } - - counter <- 0 - print.list <- list() - print.list.functions <- list() - print.vector <- NULL - print.vector.functions <- NULL - for(item in packages_mod){ - counter <- counter + 1 + # nocov end + + + functions <- functions[names(functions) != "Essentials"] - if (counter %% 3 != 0){ - print.vector <- append(print.vector, item) - if (counter == length(packages)){ + max_length_functions <- max(vapply(names(functions), nchar, FUN.VALUE = numeric(1))) + format_functions <- function(name, value, max_length){ + func_use <- ifelse(isTRUE(value), cli::col_green(cli::symbol$tick), cli::col_red(cli::symbol$cross)) + name_use <- ifelse(isTRUE(value), + cli::ansi_align(crayon_body(name), max_length, align = "left"), + cli::ansi_align(cli::col_red(name), max_length, align = "left")) + paste0(func_use, " ", name_use) + } + + functions.use <- NULL + for(item in names(functions)){ + functions.use <- append(functions.use, format_functions(name = item, value = functions[[item]], max_length = max_length_functions)) + } + + counter <- 0 + print.list <- list() + print.list.functions <- list() + print.vector <- NULL + print.vector.functions <- NULL + for(item in packages_mod){ + counter <- counter + 1 + + if (counter %% 3 != 0){ + print.vector <- append(print.vector, item) + if (counter == length(packages)){ + print.list[[item]] <- paste(print.vector, collapse = " ") + print.vector <- NULL + } + } else { + print.vector <- append(print.vector, item) print.list[[item]] <- paste(print.vector, collapse = " ") print.vector <- NULL } - } else { - print.vector <- append(print.vector, item) - print.list[[item]] <- paste(print.vector, collapse = " ") - print.vector <- NULL } - } - - counter <- 0 - for(item in functions.use){ - counter <- counter + 1 - if (counter %% 3 != 0){ - print.vector.functions <- append(print.vector.functions, item) - if (counter == length(functions.use)){ + counter <- 0 + for(item in functions.use){ + counter <- counter + 1 + + if (counter %% 3 != 0){ + print.vector.functions <- append(print.vector.functions, item) + if (counter == length(functions.use)){ + print.list.functions[[item]] <- paste(print.vector.functions, collapse = " ") + } + } else { + print.vector.functions <- append(print.vector.functions, item) print.list.functions[[item]] <- paste(print.vector.functions, collapse = " ") + print.vector.functions <- NULL } - } else { - print.vector.functions <- append(print.vector.functions, item) - print.list.functions[[item]] <- paste(print.vector.functions, collapse = " ") - print.vector.functions <- NULL + + } + packages_check <- cli::rule(left = "Required packages", width = nchar("Required packages") + 6) + + packages_tip1 <- paste0(cli::style_bold(cli::col_cyan(cli::symbol$info)), + crayon_body(" Installed packages are denoted by a "), + crayon_key("tick"), + crayon_body(" ("), + cli::style_bold(cli::col_green(cli::symbol$tick)), + crayon_body(") and missing packages by a "), + crayon_key("cross"), + crayon_body(" ("), + cli::style_bold(cli::col_red(cli::symbol$cross)), + crayon_body(").")) + + packages_tip2 <- paste0(cli::style_bold(cli::col_cyan(cli::symbol$info)), + crayon_body(" Installed packages that still require an update to correctly run "), + crayon_key("SCpubr"), + crayon_body(" have an "), + crayon_key("exclamation mark"), + crayon_body(" ("), + cli::style_bold(cli::col_yellow("!")), + crayon_body(").")) + + packages_tip3 <- paste0(cli::style_bold(cli::col_cyan(cli::symbol$info)), + crayon_body(" Packages version are displayed as: "), + crayon_key("Installed"), + crayon_body(" | "), + crayon_key("Available"), + crayon_body(".")) + + functions_check <- cli::rule(left = "Available functions", width = nchar("Available functions") + 6) + + functions_tip1 <- paste0(cli::style_bold(cli::col_cyan(cli::symbol$info)), + crayon_body(" Functions tied to "), + crayon_key("development"), + crayon_body(" builds of "), + crayon_key("SCpubr"), + crayon_body(" are marked by the ("), + cli::style_bold(cli::col_yellow("| DEV")), + crayon_body(") tag.")) + + functions_tip2 <- paste0(cli::style_bold(cli::col_cyan(cli::symbol$info)), + crayon_body(" You can install development builds of "), + crayon_key("SCpubr"), + crayon_body(" by following the instructions in the "), + crayon_key(cli::style_hyperlink(text = "Releases", + url = "https://github.com/enblacar/SCpubr/releases")), + crayon_body(" page.")) + + functions_tip3 <- paste0(cli::style_bold(cli::col_cyan(cli::symbol$info)), + crayon_body(" Check the package requirements function-wise with: "), + cli::style_italic(crayon_key('SCpubr::check_dependencies()'))) } - - packages_check <- cli::rule(left = "Required packages", width = nchar("Required packages") + 6) - - packages_tip1 <- paste0(cli::style_bold(cli::col_cyan(cli::symbol$info)), - crayon_body(" Installed packages are denoted by a "), - crayon_key("tick"), - crayon_body(" ("), - cli::style_bold(cli::col_green(cli::symbol$tick)), - crayon_body(") and missing packages by a "), - crayon_key("cross"), - crayon_body(" ("), - cli::style_bold(cli::col_red(cli::symbol$cross)), - crayon_body(").")) - - packages_tip2 <- paste0(cli::style_bold(cli::col_cyan(cli::symbol$info)), - crayon_body(" Installed packages that still require an update to correctly run "), - crayon_key("SCpubr"), - crayon_body(" have an "), - crayon_key("exclamation mark"), - crayon_body(" ("), - cli::style_bold(cli::col_yellow("!")), - crayon_body(").")) - - packages_tip3 <- paste0(cli::style_bold(cli::col_cyan(cli::symbol$info)), - crayon_body(" Packages version are displayed as: "), - crayon_key("Installed"), - crayon_body(" | "), - crayon_key("Available"), - crayon_body(".")) - - - functions_check <- cli::rule(left = "Available functions", width = nchar("Available functions") + 6) - - functions_tip1 <- paste0(cli::style_bold(cli::col_cyan(cli::symbol$info)), - crayon_body(" Functions tied to "), - crayon_key("development"), - crayon_body(" builds of "), - crayon_key("SCpubr"), - crayon_body(" are marked by the ("), - cli::style_bold(cli::col_yellow("| DEV")), - crayon_body(") tag.")) - - functions_tip2 <- paste0(cli::style_bold(cli::col_cyan(cli::symbol$info)), - crayon_body(" You can install development builds of "), - crayon_key("SCpubr"), - crayon_body(" by following the instructions in the "), - crayon_key(cli::style_hyperlink(text = "Releases", - url = "https://github.com/enblacar/SCpubr/releases")), - crayon_body(" page.")) - - functions_tip3 <- paste0(cli::style_bold(cli::col_cyan(cli::symbol$info)), - crayon_body(" Check the package requirements function-wise with: "), - cli::style_italic(crayon_key('SCpubr::check_dependencies()'))) - tip_rule <- cli::rule(left = "Tips!", width = nchar("Tips!") + 6) tip_message <- paste0(cli::style_bold(cli::col_cyan(cli::symbol$info)), @@ -1109,50 +1123,83 @@ package_report <- function(startup = FALSE){ # Mount all individual messages into a big one that will be then be printed as a packageStartupMessage. if (isTRUE(startup)){ - msg_wrap <- paste0("\n", "\n", - header, "\n", "\n", - tutorials, "\n", "\n", - cite, "\n", "\n", - stars, "\n", "\n", - updates, "\n", "\n", - plotting, "\n", "\n", "\n", "\n", - updates_check, "\n", "\n", - cran_version_message, "\n", - system_version_message, "\n", "\n", - veredict_message, "\n", "\n", "\n", "\n", - packages_check, "\n", "\n", - paste(print.list, collapse = "\n"), "\n", "\n", - packages_tip1, "\n", - packages_tip2, "\n", - packages_tip3, "\n", "\n", "\n", "\n", - functions_check, "\n", "\n", - paste(print.list.functions, collapse = "\n"), "\n", "\n", - functions_tip1, "\n", - functions_tip2, "\n", - functions_tip3, "\n", "\n", "\n", "\n", - tip_rule, "\n", "\n", - tip_message, "\n", "\n", - disable_message, "\n", "\n", - end_rule) + if (isTRUE(extended)){ + msg_wrap <- paste0("\n", "\n", + header, "\n", "\n", + tutorials, "\n", "\n", + cite, "\n", "\n", + stars, "\n", "\n", + updates, "\n", "\n", + plotting, "\n", "\n", "\n", "\n", + updates_check, "\n", "\n", + cran_version_message, "\n", + system_version_message, "\n", "\n", + veredict_message, "\n", "\n", "\n", "\n", + packages_check, "\n", "\n", + paste(print.list, collapse = "\n"), "\n", "\n", + packages_tip1, "\n", + packages_tip2, "\n", + packages_tip3, "\n", "\n", "\n", "\n", + functions_check, "\n", "\n", + paste(print.list.functions, collapse = "\n"), "\n", "\n", + functions_tip1, "\n", + functions_tip2, "\n", + functions_tip3, "\n", "\n", "\n", "\n", + tip_rule, "\n", "\n", + tip_message, "\n", "\n", + disable_message, "\n", "\n", + end_rule) + } else { + msg_wrap <- paste0("\n", "\n", + header, "\n", "\n", + tutorials, "\n", "\n", + cite, "\n", "\n", + stars, "\n", "\n", + updates, "\n", "\n", + plotting, "\n", "\n", "\n", "\n", + tip_rule, "\n", "\n", + tip_message, "\n", "\n", + disable_message, "\n", "\n", + end_rule) + } + rlang::inform(msg_wrap, class = "packageStartupMessage") } else if (base::isFALSE(startup)){ - msg_wrap <- paste0("\n", "\n", - header, "\n", "\n", "\n", - updates_check, "\n", "\n", - cran_version_message, "\n", - system_version_message, "\n", "\n", - veredict_message, "\n", "\n", "\n", "\n", - packages_check, "\n", "\n", - paste(print.list, collapse = "\n"), "\n", "\n", "\n", - packages_tip1, "\n", - packages_tip2, "\n", - packages_tip3, "\n", "\n", "\n", "\n", - functions_check, "\n", "\n", - paste(print.list.functions, collapse = "\n"), "\n", "\n", - functions_tip1, "\n", - functions_tip2, "\n", - functions_tip3, "\n", "\n", "\n", - end_rule) + if (isTRUE(extended)){ + msg_wrap <- paste0("\n", "\n", + header, "\n", "\n", + updates_check, "\n", "\n", + cran_version_message, "\n", + system_version_message, "\n", "\n", + veredict_message, "\n", "\n", "\n", "\n", + packages_check, "\n", "\n", + paste(print.list, collapse = "\n"), "\n", "\n", + packages_tip1, "\n", + packages_tip2, "\n", + packages_tip3, "\n", "\n", "\n", "\n", + functions_check, "\n", "\n", + paste(print.list.functions, collapse = "\n"), "\n", "\n", + functions_tip1, "\n", + functions_tip2, "\n", + functions_tip3, "\n", "\n", "\n", "\n", + tip_rule, "\n", "\n", + tip_message, "\n", "\n", + disable_message, "\n", "\n", + end_rule) + } else { + msg_wrap <- paste0("\n", "\n", + header, "\n", "\n", + tutorials, "\n", "\n", + cite, "\n", "\n", + stars, "\n", "\n", + updates, "\n", "\n", + plotting, "\n", "\n", "\n", "\n", + tip_rule, "\n", "\n", + tip_message, "\n", "\n", + disable_message, "\n", "\n", + end_rule) + } + rlang::inform(msg_wrap) } } diff --git a/R/zzz.R b/R/zzz.R index 6c4eec7..7478468 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -7,5 +7,6 @@ # nocov end # Print startup message. - package_report(startup = TRUE) + package_report(startup = TRUE, + extended = FALSE) } \ No newline at end of file diff --git a/man/package_report.Rd b/man/package_report.Rd index 2c08c32..72b9c31 100644 --- a/man/package_report.Rd +++ b/man/package_report.Rd @@ -4,10 +4,17 @@ \alias{package_report} \title{Generate a status report of SCpubr and its dependencies.} \usage{ -package_report(startup = FALSE) +package_report( + startup = FALSE, + extended = FALSE, + bioconductor_repo = "https://bioconductor.org/packages/release/bioc/", + cran_repo = "http://cran.us.r-project.org" +) } \arguments{ \item{startup}{\strong{\code{\link[base]{logical}}} | Whether the message should be displayed at startup, therefore, also containing welcoming messages and tips. If \strong{\code{FALSE}}, only the report itself will be printed.} + +\item{extended}{\strong{\code{\link[base]{cran_repo}}} | Link to the repository that should be used to check \strong{\code{CRAN}} packages.} } \value{ None