spinjs
Version:
<p align="center"><a href="#"><img width="150" src="https://rawgit.com/sysgears/spinjs/master/logo.svg"></a></p>
51 lines • 1.97 kB
JavaScript
;
var __assign = (this && this.__assign) || 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 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 () {
return this._discoverRecursively(this.cwd);
};
BuilderDiscoverer.prototype._discoverRecursively = function (dir) {
var builders;
if (this.argv.c) {
builders = this.configReader.readConfig(path.join(dir, this.argv.c));
}
else {
var candidates = ['package.json', '.spinrc.json', '.spinrc', '.spinrc.js'];
for (var _i = 0, candidates_1 = candidates; _i < candidates_1.length; _i++) {
var fileName = candidates_1[_i];
builders = this.configReader.readConfig(path.join(dir, fileName));
if (builders) {
break;
}
}
}
var files = fs.readdirSync(dir);
for (var _a = 0, files_1 = files; _a < files_1.length; _a++) {
var name = files_1[_a];
var dirPath = path.join(dir, name);
if (name !== 'node_modules' && fs.statSync(dirPath).isDirectory()) {
builders = __assign({}, builders, this._discoverRecursively(dirPath));
}
}
return builders;
};
return BuilderDiscoverer;
}());
exports.default = BuilderDiscoverer;
//# sourceMappingURL=BuilderDiscoverer.js.map