Sha256: 0631f0c34e8740f71ae7827690b09d61e8ba098cc2a148b15469004360f76b4c

Contents?: true

Size: 1.83 KB

Versions: 24

Compression:

Stored size: 1.83 KB

Contents

var isWindows = process.platform === 'win32'
var path = require('path')
var exec = require('child_process').exec
var os = require('os')

// 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 os.tmpDir()
})

memo('home', function () {
  return ( isWindows ? process.env.USERPROFILE
         : process.env.HOME
         )
})

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'
})

Version data entries

24 entries across 17 versions & 2 rubygems

Version Path
hooch-0.4.2 jasmine/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
hooch-0.4.1 jasmine/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
hooch-0.4.0 jasmine/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
hooch-0.3.0 jasmine/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
hooch-0.2.1 jasmine/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
hooch-0.2.0 jasmine/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
hooch-0.1.0 jasmine/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
hooch-0.0.8 jasmine/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
hooch-0.0.7 jasmine/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
hooch-0.0.6 jasmine/node_modules/karma-phantomjs-launcher/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
entangled-0.0.16 spec/dummy/public/node_modules/bower/node_modules/osenv/osenv.js
entangled-0.0.16 spec/dummy/public/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
entangled-0.0.15 spec/dummy/public/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
entangled-0.0.15 spec/dummy/public/node_modules/bower/node_modules/osenv/osenv.js
entangled-0.0.14 spec/dummy/public/node_modules/bower/node_modules/osenv/osenv.js
entangled-0.0.14 spec/dummy/public/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
entangled-0.0.13 spec/dummy/public/node_modules/bower/node_modules/osenv/osenv.js
entangled-0.0.13 spec/dummy/public/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
entangled-0.0.12 spec/dummy/public/node_modules/phantomjs/node_modules/npmconf/node_modules/osenv/osenv.js
entangled-0.0.12 spec/dummy/public/node_modules/bower/node_modules/osenv/osenv.js