jenkins-cli-node
Version:
Jenkins command line tool
84 lines • 3.74 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
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) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const opn = require("opn");
const jenkins_cli_1 = require("./jenkins-cli");
const utils_1 = require("./utils");
const inquirer_1 = require("./inquirer");
const config_1 = require("./config");
exports.run = (options) => __awaiter(void 0, void 0, void 0, function* () {
const jk = new jenkins_cli_1.JenkinsCli(options);
const cacheKeys = jk.cacheJobs.map(k => k.name);
if (jk.cacheJobs.length > 0) {
cacheKeys.splice(0, 0, config_1.REBUILD);
}
try {
if (options.rebuild && jk.cacheJobs.length > 0) {
// Cli specified
const cacheJob = jk.cacheJobs[0];
return buildJob(jk, cacheJob.name, cacheJob.parameters);
}
// get the job list
const jobs = yield jk.getJobs();
let selectJob;
if (options.job && jobs.find(k => k === options.job)) {
selectJob = options.job;
}
else {
// Reade the user selected job
selectJob = yield inquirer_1.singleSelection(concatFilters(cacheKeys, jobs), `Select your jenkins job (${jobs.length})`);
}
if (selectJob === config_1.REBUILD) {
// inquirer specified
const cacheJob = jk.cacheJobs[0];
return buildJob(jk, cacheJob.name, cacheJob.parameters);
}
const historyJob = jk.cacheJobs.find(k => k.name === selectJob) || { parameters: {} };
// get all parameters for the job
const parametersInfo = yield jk.getParameters(selectJob);
let parameters = {};
// Reade the user selected parameters
const parameterMsg = "Select your parameters: ";
for (const k of parametersInfo) {
switch (k.type) {
case jenkins_cli_1.ParameterType.git:
case jenkins_cli_1.ParameterType.radio:
parameters[k.key] = yield inquirer_1.singleSelection(concatFilters([historyJob.parameters[k.key]], k.value), k.description || parameterMsg);
break;
case jenkins_cli_1.ParameterType.checkbox:
parameters[k.key] = yield inquirer_1.multipleSelection(concatFilters(historyJob.parameters[k.key] || [], k.value), k.description || parameterMsg);
break;
}
}
buildJob(jk, selectJob, parameters);
}
catch (err) {
utils_1.printError(err);
}
});
function buildJob(jk, job, parameters) {
return __awaiter(this, void 0, void 0, function* () {
try {
utils_1.printInfo(`Building job: ${job} `);
const buildInfo = yield jk.build(job, parameters);
utils_1.alert(`Jenkins job: ${job}`, "Click for details.", () => {
opn(buildInfo.url);
});
}
catch (err) {
utils_1.printError(err);
}
});
}
function concatFilters(arr1, arr2) {
return Array.from(new Set(arr1.concat(arr2))).filter(k => k);
}
//# sourceMappingURL=index.js.map