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