]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/osenv/osenv.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / node_modules / osenv / osenv.js
diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/osenv/osenv.js b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/osenv/osenv.js
new file mode 100644 (file)
index 0000000..702a95b
--- /dev/null
@@ -0,0 +1,72 @@
+var isWindows = process.platform === 'win32'
+var path = require('path')
+var exec = require('child_process').exec
+var osTmpdir = require('os-tmpdir')
+var osHomedir = require('os-homedir')
+
+// looking up envs is a bit costly.
+// Also, sometimes we want to have a fallback
+// Pass in a callback to wait for the fallback on failures
+// After the first lookup, always returns the same thing.
+function memo (key, lookup, fallback) {
+  var fell = false
+  var falling = false
+  exports[key] = function (cb) {
+    var val = lookup()
+    if (!val && !fell && !falling && fallback) {
+      fell = true
+      falling = true
+      exec(fallback, function (er, output, stderr) {
+        falling = false
+        if (er) return // oh well, we tried
+        val = output.trim()
+      })
+    }
+    exports[key] = function (cb) {
+      if (cb) process.nextTick(cb.bind(null, null, val))
+      return val
+    }
+    if (cb && !falling) process.nextTick(cb.bind(null, null, val))
+    return val
+  }
+}
+
+memo('user', function () {
+  return ( isWindows
+         ? process.env.USERDOMAIN + '\\' + process.env.USERNAME
+         : process.env.USER
+         )
+}, 'whoami')
+
+memo('prompt', function () {
+  return isWindows ? process.env.PROMPT : process.env.PS1
+})
+
+memo('hostname', function () {
+  return isWindows ? process.env.COMPUTERNAME : process.env.HOSTNAME
+}, 'hostname')
+
+memo('tmpdir', function () {
+  return osTmpdir()
+})
+
+memo('home', function () {
+  return osHomedir()
+})
+
+memo('path', function () {
+  return (process.env.PATH ||
+          process.env.Path ||
+          process.env.path).split(isWindows ? ';' : ':')
+})
+
+memo('editor', function () {
+  return process.env.EDITOR ||
+         process.env.VISUAL ||
+         (isWindows ? 'notepad.exe' : 'vi')
+})
+
+memo('shell', function () {
+  return isWindows ? process.env.ComSpec || 'cmd'
+         : process.env.SHELL || 'bash'
+})