1.onAttach <- function(...) {
2
3  if (requireNamespace("knitr", quietly = TRUE)) {
4    knit_engines <- get("knit_engines", envir = asNamespace("knitr"))
5    knit_engines$set(d3 = knit_d3)
6  }
7
8  rstudio <- rstudio_version()
9  if (!is.null(rstudio)) {
10
11    # check for desktop mode on windows and linux (other modes are fine)
12    if (!is_osx() && (rstudio$mode == "desktop")) {
13
14      if (rstudio$version < "1.2.637")
15        packageStartupMessage(
16          "r2d3 should be run under RStudio v1.2 or higher. Please update at:\n",
17          "https://www.rstudio.com/rstudio/download/preview/\n"
18        )
19    }
20  }
21}
22
23# get the current rstudio version and mode (desktop vs. server)
24rstudio_version <- function() {
25
26  # Running at the RStudio console
27  if (rstudioapi::isAvailable()) {
28
29    rstudioapi::versionInfo()
30
31    # Running in a child process
32  } else if (!is.na(Sys.getenv("RSTUDIO", unset = NA))) {
33
34    # detect desktop vs. server using server-only environment variable
35    mode <- ifelse(is.na(Sys.getenv("RSTUDIO_HTTP_REFERER", unset = NA)),
36                   "desktop", "server")
37
38    # detect version using Rmd new env var added in 1.2.638
39    version <- Sys.getenv("RSTUDIO_VERSION", unset = "1.1")
40
41    # return version info
42    list(
43      mode = mode,
44      version = version
45    )
46
47    # Not running in RStudio
48  } else {
49    NULL
50  }
51}
52
53is_osx <- function() {
54  Sys.info()["sysname"] == "Darwin"
55}
56
57
58