@atomist/automation-client
Version:
Atomist API for software low-level client
44 lines • 2.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const onCommand_1 = require("../../onCommand");
const repoFilter_1 = require("../common/repoFilter");
const editAll_1 = require("./editAll");
const editModes_1 = require("./editModes");
function defaultDetails(name) {
return {
description: name,
editMode: new editModes_1.PullRequest(name, name),
};
}
/**
* Create a handle function that edits one or many repos, following AllReposByDefaultParameters
* @param pe function returning a project editor instance appropriate for the parameters
* @param {string} name
* @param {string} details object allowing customization beyond reasonable defaults
* @return {HandleCommand}
*/
function editorHandler(pe, factory, name, details = {}) {
const detailsToUse = Object.assign({}, defaultDetails(name), details);
return onCommand_1.commandHandlerFrom(handleEditOneOrMany(pe, detailsToUse), factory, name, detailsToUse.description, detailsToUse.intent, detailsToUse.tags);
}
exports.editorHandler = editorHandler;
/**
* If owner and repo are required, edit just one repo. Otherwise edit all repos
* in the present team
*/
function handleEditOneOrMany(pe, details) {
return (ctx, parameters) => {
const credentials = parameters.targets.credentials;
if (!!parameters.targets.repoRef) {
return editAll_1.editOne(ctx, credentials, pe(parameters), editModeFor(details.editMode, parameters), parameters.targets.repoRef, parameters, !!details.repoLoader ? details.repoLoader(parameters) : undefined);
}
return editAll_1.editAll(ctx, credentials, pe(parameters), editModeFor(details.editMode, parameters), parameters, details.repoFinder, repoFilter_1.andFilter(parameters.targets.test, details.repoFilter), !!details.repoLoader ? details.repoLoader(parameters) : undefined);
};
}
exports.handleEditOneOrMany = handleEditOneOrMany;
function editModeFor(emf, p) {
return editModes_1.isEditMode(emf) ?
emf :
emf(p);
}
//# sourceMappingURL=editorToCommand.js.map