@grept/node-plugin
Version:
Plugin for @grt/core. Help to manage nodejs versions of your repos
93 lines • 4.5 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const inversify_1 = require("inversify");
const common_1 = require("@grept/common");
const octokit_1 = require("@grept/octokit");
const constants_1 = require("./constants");
const node_version_options_validator_1 = require("./node.version.options.validator");
let NodeVersionPlugin = class NodeVersionPlugin extends common_1.BasePlugin {
applyDefaults(options = {}) {
return Object.assign({}, common_1.DEFAULT, constants_1.DEFAULT, options);
}
validate(options) {
this.optionsValidator.validate(options);
}
perform(options) {
return __awaiter(this, void 0, void 0, function* () {
console.log('Options: ', options);
const { org, user, nvm, engines, token } = options;
const repos = yield this.octokitService.getRepos({ org, user, token });
if (!repos) {
return null;
}
const result = yield Promise.all(repos.map((repo) => __awaiter(this, void 0, void 0, function* () {
try {
const [nvmVersion, enginesVersion] = yield Promise.all([
nvm ? this.getNvmrc(org || user, repo, token).catch(() => null) : null,
engines ? this.getEngines(org || user, repo, token).catch(() => null) : null
]);
const data = { repo };
if (nvm) {
data.nvmVersion = nvmVersion;
}
if (engines) {
data.enginesVersion = enginesVersion;
}
return data;
}
catch (e) {
return { repo, error: e.code };
}
})));
return result;
});
}
getNvmrc(owner, repo, token) {
return __awaiter(this, void 0, void 0, function* () {
const content = yield this.octokitService.getFileContent(owner, repo, '.nvmrc', token);
return content.trim();
});
}
getEngines(owner, repo, token) {
return __awaiter(this, void 0, void 0, function* () {
const packageJson = yield this.octokitService.getPackageJson(owner, repo, token);
const engines = packageJson.engines;
if (!engines || !engines.node) {
return null;
}
return engines.npm
? `${engines.node} (npm: ${engines.npm})`
: `${engines.node}`;
});
}
};
__decorate([
inversify_1.inject('octokit'),
__metadata("design:type", octokit_1.OctokitService)
], NodeVersionPlugin.prototype, "octokitService", void 0);
__decorate([
inversify_1.inject(node_version_options_validator_1.NodeVersionOptionsValidator),
__metadata("design:type", Object)
], NodeVersionPlugin.prototype, "optionsValidator", void 0);
NodeVersionPlugin = __decorate([
inversify_1.injectable()
], NodeVersionPlugin);
exports.NodeVersionPlugin = NodeVersionPlugin;
//# sourceMappingURL=node.version.plugin.js.map