]> 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 945f9e4634d61a2052d3d0ccde41071959b18d54..01f35b470ff5e13726a2186756f1c06bf2c0fbae 100644 (file)
--- a/R/app.R
+++ b/R/app.R
@@ -4,16 +4,33 @@
 #'
 #' @export
 app <- function() {
+  missing_pkgs <- c()
+  # Check for any missing, required packages.
   if (!requireNamespace("shiny", quietly = TRUE)) {
-    answer <- readline(paste0("The package 'shiny' must be installed to ",
-      "launch the Rnaught web application.\nWould you like to install it? ",
-      "[Y/n] "))
+    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("shiny")
-    else
-      stop("Aborting.", call. = FALSE)
+    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"))
 }