spinjs
Version:
[](https://gitter.im/sysgears/spinjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [ || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
var fs = require("fs");
var glob_1 = require("glob");
var _ = require("lodash");
var path = require("path");
var ConfigReader_1 = require("./ConfigReader");
var BuilderDiscoverer = (function () {
function BuilderDiscoverer(spin, plugins, argv) {
this.configReader = new ConfigReader_1.default(spin, plugins);
this.cwd = spin.cwd;
this.argv = argv;
}
BuilderDiscoverer.prototype.discover = function (builderOverrides) {
var _this = this;
var packageRootPaths = this._detectRootPaths();
return packageRootPaths.reduce(function (res, pathName) {
return __assign({}, res, _this._discoverRecursively(pathName, builderOverrides));
}, {});
};
BuilderDiscoverer.prototype._discoverRecursively = function (dir, builderOverrides) {
if (path.basename(dir) === '.expo') {
return undefined;
}
var builders = this.configReader.readConfig({
filePath: this.argv.c ? path.join(dir, this.argv.c) : dir,
builderOverrides: builderOverrides
});
var files = fs.readdirSync(dir);
for (var _i = 0, files_1 = files; _i < files_1.length; _i++) {
var name = files_1[_i];
var dirPath = path.join(dir, name);
if (name !== 'node_modules' && fs.statSync(dirPath).isDirectory()) {
builders = __assign({}, builders, this._discoverRecursively(dirPath, builderOverrides));
}
}
return builders;
};
BuilderDiscoverer.prototype._detectRootPaths = function () {
var _this = this;
var rootConfig = JSON.parse(fs.readFileSync(this.cwd + "/package.json", 'utf8'));
return rootConfig.workspaces && rootConfig.workspaces.length
? _.flatten(rootConfig.workspaces.map(function (ws) { return glob_1.glob.sync(ws); })).map(function (ws) { return path.join(_this.cwd, ws); })
: [this.cwd];
};
return BuilderDiscoverer;
}());
exports.default = BuilderDiscoverer;
//# sourceMappingURL=BuilderDiscoverer.js.map