98 lines
2.8 KiB
R
98 lines
2.8 KiB
R
|
# app launching code
|
||
|
config <- jsonlite::fromJSON("utils/config.cfg")
|
||
|
reg_paths <- jsonlite::fromJSON("utils/regpaths.json")
|
||
|
|
||
|
# This function is used to apply the web browser configuration and registry
|
||
|
# information on app start up. If a user does not have the user browser,
|
||
|
# their defult browser will be used.
|
||
|
start_app <- function(
|
||
|
app_name = config$appname,
|
||
|
user_browser = config$user_browser,
|
||
|
chrome = reg_paths$chrome,
|
||
|
ff = reg_paths$ff,
|
||
|
ie = reg_paths$ie,
|
||
|
electron = config$nativefier) {
|
||
|
|
||
|
if (user_browser == "electron") {
|
||
|
electron <- gsub("/", "\\\\", electron)
|
||
|
|
||
|
} else if (user_browser == "chrome") {
|
||
|
if (chrome != "none") {
|
||
|
chrome <- gsub("\\\\", "/", file.path(chrome, "chrome.exe", fsep = "\\"))
|
||
|
options(browser = chrome)
|
||
|
launch_browser = TRUE
|
||
|
}
|
||
|
|
||
|
} else if (user_browser == "firefox") {
|
||
|
if (ff != "none") {
|
||
|
ff <- gsub("\\\\", "/", file.path(ff, "firefox.exe", fsep = "\\"))
|
||
|
options(browser = ff)
|
||
|
launch_browser = TRUE
|
||
|
}
|
||
|
|
||
|
} else if (user_browser == "ie") {
|
||
|
if (ie != "none") {
|
||
|
ie <- gsub("\\\\", "/", ie)
|
||
|
options(browser = ie)
|
||
|
launch_browser = TRUE
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# If a repo has been provided, use the app in your package
|
||
|
if (config$app_repo[[1]] != "none") {
|
||
|
app_path <- file.path(system.file(package = config$appname), "app")
|
||
|
|
||
|
# flexdashboard
|
||
|
if (config$flex_file != "none") {
|
||
|
if (Sys.getenv("RSTUDIO_PANDOC") == "") {
|
||
|
Sys.setenv(RSTUDIO_PANDOC = gsub("\\\\", "/", reg_paths$pandoc))
|
||
|
}
|
||
|
rmarkdown::run(
|
||
|
file = file.path(app_path, config$flex_file),
|
||
|
shiny_args = list(
|
||
|
host = '0.0.0.0',
|
||
|
launch.browser = launch_browser,
|
||
|
port = 1984
|
||
|
)
|
||
|
)
|
||
|
|
||
|
# Shiny
|
||
|
} else {
|
||
|
shiny::runApp(app_path, launch.browser = launch_browser, port = 1984)
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
# flexdashboard
|
||
|
if (config$flex_file != "none") {
|
||
|
if (Sys.getenv("RSTUDIO_PANDOC") == "") {
|
||
|
Sys.setenv(RSTUDIO_PANDOC = gsub("\\\\", "/", reg_paths$pandoc))
|
||
|
}
|
||
|
|
||
|
rmarkdown::run(
|
||
|
file = paste0("./", config$flex_file),
|
||
|
shiny_args = list(
|
||
|
host = '0.0.0.0',
|
||
|
launch.browser = launch_browser,
|
||
|
port = 1984
|
||
|
)
|
||
|
)
|
||
|
|
||
|
# Shiny
|
||
|
} else {
|
||
|
if (user_browser == "electron") {
|
||
|
# start app
|
||
|
# applibpath variable is set in package_manager.R
|
||
|
# OPT: use `dput` to copy whole .libPaths() and .GlobalEnv contents
|
||
|
system(sprintf('R -e ".libPaths(c(\'%s\', .libPaths())); shiny::runApp(\'./\', port=1984)"', applibpath), wait = FALSE)
|
||
|
# start electron
|
||
|
system(sprintf('cmd /C "%s"', electron), wait = FALSE)
|
||
|
|
||
|
} else {
|
||
|
shiny::runApp("./", launch.browser = launch_browser, port = 1984)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
start_app()
|