|
1 | 1 | .GRASS_CACHE <- new.env(FALSE, parent = globalenv()) |
2 | 2 |
|
3 | 3 | .onLoad <- function(lib, pkg) { |
4 | | - assign(".GRASS_old.GRASS_PAGER", Sys.getenv("GRASS_PAGER"), envir = .GRASS_CACHE) |
5 | | - Sys.setenv("GRASS_PAGER" = "cat") |
6 | | - assign(".GRASS_old.GRASS_MESSAGE_FORMAT", Sys.getenv("GRASS_MESSAGE_FORMAT"), |
| 4 | + # backup original environment variables |
| 5 | + assign( |
| 6 | + ".GRASS_old.GRASS_PAGER", |
| 7 | + Sys.getenv("GRASS_PAGER"), |
7 | 8 | envir = .GRASS_CACHE |
8 | 9 | ) |
9 | | - assign("INIT_USED", FALSE, envir = .GRASS_CACHE) |
10 | | - assign("remove_GISRC", FALSE, envir = .GRASS_CACHE) |
11 | 10 |
|
12 | | - Sys.setenv("GRASS_MESSAGE_FORMAT" = "text") |
| 11 | + assign( |
| 12 | + ".GRASS_old.GRASS_MESSAGE_FORMAT", |
| 13 | + Sys.getenv("GRASS_MESSAGE_FORMAT"), |
| 14 | + envir = .GRASS_CACHE |
| 15 | + ) |
13 | 16 |
|
14 | | - gisrc <- Sys.getenv("GISRC") |
15 | | - loc <- Sys.getenv("LOCATION_NAME") |
| 17 | + Sys.setenv("GRASS_PAGER" = "cat") |
| 18 | + Sys.setenv("GRASS_MESSAGE_FORMAT" = "text") |
16 | 19 |
|
| 20 | + # set up the GRASS_CACHE environment |
| 21 | + assign("INIT_USED", FALSE, envir = .GRASS_CACHE) |
| 22 | + assign("remove_GISRC", FALSE, envir = .GRASS_CACHE) |
17 | 23 | assign("cmdCACHE", list(), envir = .GRASS_CACHE) |
18 | 24 | assign("override_encoding", "", envir = .GRASS_CACHE) |
19 | | - SYS <- "" |
| 25 | + |
| 26 | + # add platform type to .GRASS_CACHE |
20 | 27 | if (.Platform$OS.type == "windows") { |
21 | | - SYS <- "WinNat" |
| 28 | + platform <- "WinNat" |
22 | 29 | } else if (.Platform$OS.type == "unix") { |
23 | | - SYS <- "unix" |
| 30 | + platform <- "unix" |
24 | 31 | } else { |
25 | | - SYS <- "unknown" |
| 32 | + platform <- "unknown" |
26 | 33 | } |
27 | | - assign("SYS", SYS, envir = .GRASS_CACHE) |
28 | | - res <- "" |
29 | | - if (SYS == "WinNat") res <- ".exe" |
| 34 | + assign("SYS", platform, envir = .GRASS_CACHE) |
| 35 | + |
| 36 | + # store the platform-specific executable extension |
| 37 | + res <- ifelse(platform == "WinNat", "exe", "") |
30 | 38 | assign("addEXE", res, envir = .GRASS_CACHE) |
31 | 39 | assign("WN_bat", "", envir = .GRASS_CACHE) |
32 | 40 |
|
| 41 | + # set up other GRASS_CACHE environment variables |
33 | 42 | assign("ignore.stderr", FALSE, envir = .GRASS_CACHE) |
34 | 43 | assign("stop_on_no_flags_paras", TRUE, envir = .GRASS_CACHE) |
35 | 44 | assign("echoCmd", FALSE, envir = .GRASS_CACHE) |
|
42 | 51 | } |
43 | 52 |
|
44 | 53 | .onAttach <- function(lib, pkg) { |
| 54 | + # display the GRASS version and location when the package is attached |
45 | 55 | gisrc <- Sys.getenv("GISRC") |
46 | 56 | loc <- Sys.getenv("LOCATION_NAME") |
| 57 | + |
47 | 58 | if (nchar(gisrc) == 0) { |
48 | 59 | gv <- "(GRASS not running)" |
49 | 60 | } else { |
50 | 61 | gv <- .grassVersion() |
51 | 62 | comp <- .compatibleGRASSVersion(gv) |
| 63 | + |
52 | 64 | if (!is.na(comp) && !comp) { |
53 | 65 | stop(attr(comp, "message")) |
54 | 66 | } |
| 67 | + |
55 | 68 | assign("GV", gv, envir = .GRASS_CACHE) |
56 | 69 | if (nchar(loc) == 0) { |
57 | 70 | loc <- read.dcf(gisrc)[1, "LOCATION_NAME"] |
58 | 71 | } |
59 | 72 | } |
60 | 73 |
|
61 | | - Smess <- paste("GRASS GIS interface loaded ", |
| 74 | + startup_message <- paste0( |
| 75 | + "GRASS GIS interface loaded ", |
62 | 76 | "with GRASS version: ", gv, "\n", |
63 | | - ifelse(nchar(loc) == 0, "", paste("and location: ", loc, "\n", sep = "")), |
64 | | - sep = "" |
| 77 | + ifelse(nchar(loc) == 0, "", paste0("and location: ", loc, "\n")) |
65 | 78 | ) |
66 | | - packageStartupMessage(Smess, appendLF = FALSE) |
| 79 | + packageStartupMessage(startup_message, appendLF = FALSE) |
67 | 80 | } |
68 | 81 |
|
69 | 82 | .onUnload <- function(lib, pkg) { |
| 83 | + # unset the GISRC environment variable and remove gisrc file |
70 | 84 | if (get("INIT_USED", envir = .GRASS_CACHE)) { |
71 | 85 | if (get("remove_GISRC", envir = .GRASS_CACHE)) { |
72 | 86 | gisrc <- Sys.getenv("GISRC") |
|
76 | 90 | unlink_.gislock() |
77 | 91 | unset.GIS_LOCK() |
78 | 92 | } |
79 | | - Sys.setenv("GRASS_PAGER" = get(".GRASS_old.GRASS_PAGER", envir = .GRASS_CACHE)) |
80 | | - Sys.setenv("GRASS_MESSAGE_FORMAT" = get(".GRASS_old.GRASS_MESSAGE_FORMAT", |
81 | | - envir = .GRASS_CACHE |
82 | | - )) |
| 93 | + |
| 94 | + # restore original environment variables |
| 95 | + Sys.setenv( |
| 96 | + "GRASS_PAGER" = get(".GRASS_old.GRASS_PAGER", envir = .GRASS_CACHE) |
| 97 | + ) |
| 98 | + |
| 99 | + Sys.setenv( |
| 100 | + "GRASS_MESSAGE_FORMAT" = |
| 101 | + get(".GRASS_old.GRASS_MESSAGE_FORMAT", envir = .GRASS_CACHE) |
| 102 | + ) |
| 103 | + |
83 | 104 | rm(.GRASS_CACHE) |
84 | 105 | } |
0 commit comments