mirror of
https://github.com/fooflington/selfdefined.git
synced 2025-06-10 21:01:41 +00:00
update
This commit is contained in:
72
node_modules/osenv/osenv.js
generated
vendored
Normal file
72
node_modules/osenv/osenv.js
generated
vendored
Normal file
@ -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'
|
||||
})
|
Reference in New Issue
Block a user