inst/tools/winver.R

winver_ver <- function(v = NULL) {
  if (is.null(v)) v <- system("cmd /c ver", intern = TRUE)
  v2 <- grep("\\[.*\\s.*\\]", v, value = TRUE)[1]
  v3 <- sub("^.*\\[[^ ]+\\s+", "", v2)
  v4 <- sub("\\]$", "", v3)
  if (is.na(v4)) stop("Failed to parse windows version")
  v4
}

winver_wmic <- function(v = NULL) {
  cmd <- "wmic os get Version /value"
  if (is.null(v)) v <- system(cmd, intern = TRUE)
  v2 <- grep("=", v, value = TRUE)
  v3 <- strsplit(v2, "=", fixed = TRUE)[[1]][2]
  v4 <- sub("\\s*$", "", sub("^\\s*", "", v3))
  if (is.na(v4)) stop("Failed to parse windows version")
  v4
}

winver <- function() {
  ## First we try with `wmic`
  v <- if (Sys.which("wmic") != "") {
    tryCatch(winver_wmic(), error = function(e) NULL)
  }
  ## Otherwise `ver`
  if (is.null(v)) winver_ver() else v
}

if (is.null(sys.calls())) cat(winver())
r-lib/ps documentation built on April 2, 2024, 4:09 p.m.