]> nmode's Git Repositories - Rnaught/blobdiff - R/app.R
SI removed
[Rnaught] / R / app.R
diff --git a/R/app.R b/R/app.R
index 1bf3e93bd53ac37183355463c0c4ef8f2b7a4e06..01f35b470ff5e13726a2186756f1c06bf2c0fbae 100644 (file)
--- a/R/app.R
+++ b/R/app.R
@@ -1,9 +1,36 @@
 #' Launch the Rnaught Web Application
 #'
+#' @importFrom utils install.packages
+#'
 #' @export
 app <- function() {
-    if (!requireNamespace("shiny", quietly=TRUE))
-        stop("The package 'shiny' must be installed to launch the Rnaught web application.")
+  missing_pkgs <- c()
+  # Check for any missing, required packages.
+  if (!requireNamespace("shiny", quietly = TRUE)) {
+    missing_pkgs <- c(missing_pkgs, "shiny")
+  }
+  if (!requireNamespace("bslib", quietly = TRUE)) {
+    missing_pkgs <- c(missing_pkgs, "bslib")
+  }
+  if (!requireNamespace("DT", quietly = TRUE)) {
+    missing_pkgs <- c(missing_pkgs, "DT")
+  }
+
+  # If any of the required packages are missing,
+  # prompt the user to install them.
+  if (length(missing_pkgs) > 0) {
+    cat("The following packages must be installed to run the",
+      "Rnaught web application:\n"
+    )
+    writeLines(missing_pkgs)
+    answer <- readline("Begin installation? [Y/n] ")
+
+    if (answer == "Y" || answer == "y") {
+      install.packages(missing_pkgs)
+    } else {
+      stop("Aborting due to missing, required packages.", call. = FALSE)
+    }
+  }
 
-    shiny::shinyApp(ui(), server)
+  shiny::runApp(appDir = system.file("app", package = "Rnaught"))
 }