From 6b367767b39946b251ab343e5454b1cf6fb6d4e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Todor=20Kondi=C4=87?= <todor.kondic@uni.lu>
Date: Thu, 9 Sep 2021 11:58:51 +0200
Subject: [PATCH] api: updated: app

---
 R/api.R | 30 +++++++++++++++++++++++++++---
 1 file changed, 27 insertions(+), 3 deletions(-)

diff --git a/R/api.R b/R/api.R
index 8421b3c..954b22b 100644
--- a/R/api.R
+++ b/R/api.R
@@ -661,9 +661,33 @@ report <- function(m) {
 
 
 #' @export
-app <- function(shiny_args=NULL,render_args=NULL) {
-    unlink(list.files(pattern = "app_run.*html$"))
-    unlink(list.files(pattern = "app_run.*Rmd$"))
+#' @title app
+#' @param shiny_args `list`, optional list of arguments conveyed to
+#'     `rmarkdown::run` `shiny_args` argument.
+#' @param render_args `list`, optional list of arguments conveyed to
+#'     `rmarkdown::run` `render_args` argument.
+#' @param indir `character(1)`, a location on the server side
+#'     containing data files.
+#' @param userdir `character(1)`
+#' @return Nada.
+#' @author Todor Kondić
+app <- function(shiny_args=list(launch.browser=F),render_args=NULL,indir=getwd(),userdir=getwd()) {
+    dir_before <- getwd()
+    init <- list()
+    init$dir_before <- dir_before
+    init$indir <- normalizePath(indir)
+    init$userdir <- normalizePath(userdir)
+    if (!dir.exists(init$indir)) stop("Data directory (indir), currently `",
+                                        init$indir,
+                                        "` does not exist. Abort.")
+    if (!dir.exists(init$userdir)) stop("User root directory (userdir), currently `",
+                                          init$userdir,"` does not exist.. Abort.")
+    on.exit(expr=setwd(dir_before))
+    
+    dir_start <- tempfile("shinyscreen")
+    dir.create(dir_start, recursive = T)
+    setwd(dir_start)
+    saveRDS(object = init,file="init.rds")
     file.copy(system.file(file.path("rmd","app.Rmd"),package = "shinyscreen"),"app_run.Rmd")
     rmarkdown::run(file = "app_run.Rmd", shiny_args = shiny_args, render_args = render_args)
 }
-- 
GitLab