mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.3 KiB
49 lines
1.3 KiB
module.exports = loadPrefix
|
|
|
|
var findPrefix = require("./find-prefix.js")
|
|
var path = require("path")
|
|
|
|
function loadPrefix (cb) {
|
|
var cli = this.list[0]
|
|
|
|
Object.defineProperty(this, "prefix",
|
|
{ set : function (prefix) {
|
|
var g = this.get("global")
|
|
this[g ? "globalPrefix" : "localPrefix"] = prefix
|
|
}.bind(this)
|
|
, get : function () {
|
|
var g = this.get("global")
|
|
return g ? this.globalPrefix : this.localPrefix
|
|
}.bind(this)
|
|
, enumerable : true
|
|
})
|
|
|
|
Object.defineProperty(this, "globalPrefix",
|
|
{ set : function (prefix) {
|
|
this.set("prefix", prefix)
|
|
}.bind(this)
|
|
, get : function () {
|
|
return path.resolve(this.get("prefix"))
|
|
}.bind(this)
|
|
, enumerable : true
|
|
})
|
|
|
|
var p
|
|
Object.defineProperty(this, "localPrefix",
|
|
{ set : function (prefix) { p = prefix },
|
|
get : function () { return p }
|
|
, enumerable: true })
|
|
|
|
// try to guess at a good node_modules location.
|
|
// If we are *explicitly* given a prefix on the cli, then
|
|
// always use that. otherwise, infer local prefix from cwd.
|
|
if (Object.prototype.hasOwnProperty.call(cli, "prefix")) {
|
|
p = path.resolve(cli.prefix)
|
|
process.nextTick(cb)
|
|
} else {
|
|
findPrefix(process.cwd(), function (er, found) {
|
|
p = found
|
|
cb(er)
|
|
})
|
|
}
|
|
}
|
|
|