mirror of
https://github.com/titanscouting/tra-analysis.git
synced 2024-11-13 22:56:18 +00:00
52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
|
module.exports = loadPrefix
|
||
|
|
||
|
var findPrefix = require('find-npm-prefix')
|
||
|
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()).then((found) => {
|
||
|
p = found
|
||
|
cb()
|
||
|
}, cb)
|
||
|
}
|
||
|
}
|