]> nmode's Git Repositories - Rnaught/blobdiff - R/app.R
Add Shiny app dependencies add specify entry point
[Rnaught] / R / app.R
diff --git a/R/app.R b/R/app.R
index feb052f3d69d9e66a079716305abc7b860b48d6a..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"))
 }