UNPKG

projen

Version:

CDK for software projects

63 lines 9.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MergeQueue = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const auto_queue_1 = require("./auto-queue"); const component_1 = require("../component"); const github_1 = require("./github"); /** * Merge pull requests using a merge queue */ class MergeQueue extends component_1.Component { options; static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.MergeQueue", version: "0.103.15" }; constructor(scope, options = {}) { super(scope); this.options = options; const workflowEngine = github_1.GitHub.of(this.project); if (!workflowEngine) { throw new Error(`Cannot add ${new.target.name} to project without GitHub enabled. Please enable GitHub for this project.`); } const autoMerge = options.autoQueue ?? true; if (autoMerge) { // Validate the autoQueue.targetBranches w.r.t. the mergeQueue.targetBranches // // - mergeQueue.targetBranches: those branches we CAN use merge queues for // - autoQueue.targetBranches: those branches we AUTOMATICALLY use merge queues for (subset of former) // // mergeBranches // | undefined | defined | // |---------------|--------------| // auto undefined | ok | copy | // Branches defined | ok | validate | // |---------------|--------------| if (options.autoQueueOptions?.targetBranches && options.targetBranches) { if (!isSubset(options.autoQueueOptions?.targetBranches, options.targetBranches)) { throw new Error(`autoQueueOptions.targetBranches (${JSON.stringify(options.autoQueueOptions?.targetBranches)} must be a subset of targetBranches (${JSON.stringify(options.targetBranches)})`); } } new auto_queue_1.AutoQueue(this, { ...options.autoQueueOptions, // Copy over maximal set of merge branches if necessary targetBranches: options.autoQueueOptions?.targetBranches ?? options.targetBranches, }); } } preSynthesize() { const targetBranches = this.options.targetBranches; const mergeGroup = targetBranches ? { branches: targetBranches, } : {}; const workflowEngine = github_1.GitHub.of(this.project); workflowEngine?.tryFindWorkflow("build")?.on({ mergeGroup, }); } } exports.MergeQueue = MergeQueue; function isSubset(xs, ys) { return xs.every((x) => ys.includes(x)); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UtcXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2l0aHViL21lcmdlLXF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSw2Q0FBeUM7QUFFekMsNENBQXlDO0FBQ3pDLHFDQUFrQztBQTJCbEM7O0dBRUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxxQkFBUztJQUdwQjs7SUFGbkIsWUFDRSxLQUFpQixFQUNBLFVBQTZCLEVBQUU7UUFFaEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRkksWUFBTyxHQUFQLE9BQU8sQ0FBd0I7UUFJaEQsTUFBTSxjQUFjLEdBQUcsZUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQ2IsY0FDRSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQ2IsNEVBQTRFLENBQzdFLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUM7UUFDNUMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLDZFQUE2RTtZQUM3RSxFQUFFO1lBQ0YsMEVBQTBFO1lBQzFFLHNHQUFzRztZQUN0RyxFQUFFO1lBQ0YsZ0RBQWdEO1lBQ2hELHlEQUF5RDtZQUN6RCx5REFBeUQ7WUFDekQseURBQXlEO1lBQ3pELHlEQUF5RDtZQUN6RCx5REFBeUQ7WUFDekQsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkUsSUFDRSxDQUFDLFFBQVEsQ0FDUCxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxFQUN4QyxPQUFPLENBQUMsY0FBYyxDQUN2QixFQUNELENBQUM7b0JBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixvQ0FBb0MsSUFBSSxDQUFDLFNBQVMsQ0FDaEQsT0FBTyxDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FDekMsd0NBQXdDLElBQUksQ0FBQyxTQUFTLENBQ3JELE9BQU8sQ0FBQyxjQUFjLENBQ3ZCLEdBQUcsQ0FDTCxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxzQkFBUyxDQUFDLElBQUksRUFBRTtnQkFDbEIsR0FBRyxPQUFPLENBQUMsZ0JBQWdCO2dCQUMzQix1REFBdUQ7Z0JBQ3ZELGNBQWMsRUFDWixPQUFPLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxJQUFJLE9BQU8sQ0FBQyxjQUFjO2FBQ3JFLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ25ELE1BQU0sVUFBVSxHQUFzQixjQUFjO1lBQ2xELENBQUMsQ0FBQztnQkFDRSxRQUFRLEVBQUUsY0FBYzthQUN6QjtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCxNQUFNLGNBQWMsR0FBRyxlQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxjQUFjLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMzQyxVQUFVO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFuRUgsZ0NBb0VDO0FBRUQsU0FBUyxRQUFRLENBQUMsRUFBWSxFQUFFLEVBQVk7SUFDMUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBdXRvUXVldWUgfSBmcm9tIFwiLi9hdXRvLXF1ZXVlXCI7XG5pbXBvcnQgdHlwZSB7IEF1dG9RdWV1ZU9wdGlvbnMgfSBmcm9tIFwiLi9hdXRvLXF1ZXVlXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBHaXRIdWIgfSBmcm9tIFwiLi9naXRodWJcIjtcbmltcG9ydCB0eXBlIHsgTWVyZ2VHcm91cE9wdGlvbnMgfSBmcm9tIFwiLi93b3JrZmxvd3MtbW9kZWxcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciAnTWVyZ2VRdWV1ZSdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXJnZVF1ZXVlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTaG91bGQgcHVsbCByZXF1ZXN0cyBiZSBxdWV1ZWQgYXV0b21hdGljYWxseSB0byBiZSBtZXJnZWQgb25jZSB0aGV5IHBhc3MgcmVxdWlyZWQgY2hlY2tzXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9RdWV1ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBhdXRvLXF1ZXVlIHB1bGwgcmVxdWVzdHNcbiAgICogQGRlZmF1bHQgLSBzZWUgQXV0b1F1ZXVlT3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYXV0b1F1ZXVlT3B0aW9ucz86IEF1dG9RdWV1ZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBicmFuY2hlcyB0aGF0IGNhbiBiZSBtZXJnZWQgaW50byB1c2luZyBNZXJnZVF1ZXVlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYWxsIGJyYW5jaGVzXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRCcmFuY2hlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE1lcmdlIHB1bGwgcmVxdWVzdHMgdXNpbmcgYSBtZXJnZSBxdWV1ZVxuICovXG5leHBvcnQgY2xhc3MgTWVyZ2VRdWV1ZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBJQ29uc3RydWN0LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogTWVyZ2VRdWV1ZU9wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUpO1xuXG4gICAgY29uc3Qgd29ya2Zsb3dFbmdpbmUgPSBHaXRIdWIub2YodGhpcy5wcm9qZWN0KTtcbiAgICBpZiAoIXdvcmtmbG93RW5naW5lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW5ub3QgYWRkICR7XG4gICAgICAgICAgbmV3LnRhcmdldC5uYW1lXG4gICAgICAgIH0gdG8gcHJvamVjdCB3aXRob3V0IEdpdEh1YiBlbmFibGVkLiBQbGVhc2UgZW5hYmxlIEdpdEh1YiBmb3IgdGhpcyBwcm9qZWN0LmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGF1dG9NZXJnZSA9IG9wdGlvbnMuYXV0b1F1ZXVlID8/IHRydWU7XG4gICAgaWYgKGF1dG9NZXJnZSkge1xuICAgICAgLy8gVmFsaWRhdGUgdGhlIGF1dG9RdWV1ZS50YXJnZXRCcmFuY2hlcyB3LnIudC4gdGhlIG1lcmdlUXVldWUudGFyZ2V0QnJhbmNoZXNcbiAgICAgIC8vXG4gICAgICAvLyAtIG1lcmdlUXVldWUudGFyZ2V0QnJhbmNoZXM6IHRob3NlIGJyYW5jaGVzIHdlIENBTiB1c2UgbWVyZ2UgcXVldWVzIGZvclxuICAgICAgLy8gLSBhdXRvUXVldWUudGFyZ2V0QnJhbmNoZXM6IHRob3NlIGJyYW5jaGVzIHdlIEFVVE9NQVRJQ0FMTFkgdXNlIG1lcmdlIHF1ZXVlcyBmb3IgKHN1YnNldCBvZiBmb3JtZXIpXG4gICAgICAvL1xuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZUJyYW5jaGVzXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgfCAgIHVuZGVmaW5lZCAgIHwgICBkZWZpbmVkICAgIHxcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB8LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfFxuICAgICAgLy8gIGF1dG8gICAgICAgdW5kZWZpbmVkIHwgICAgICBvayAgICAgICB8ICAgICBjb3B5ICAgICB8XG4gICAgICAvLyAgQnJhbmNoZXMgICAgIGRlZmluZWQgfCAgICAgIG9rICAgICAgIHwgICB2YWxpZGF0ZSAgIHxcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB8LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfFxuICAgICAgaWYgKG9wdGlvbnMuYXV0b1F1ZXVlT3B0aW9ucz8udGFyZ2V0QnJhbmNoZXMgJiYgb3B0aW9ucy50YXJnZXRCcmFuY2hlcykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWlzU3Vic2V0KFxuICAgICAgICAgICAgb3B0aW9ucy5hdXRvUXVldWVPcHRpb25zPy50YXJnZXRCcmFuY2hlcyxcbiAgICAgICAgICAgIG9wdGlvbnMudGFyZ2V0QnJhbmNoZXMsXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgYXV0b1F1ZXVlT3B0aW9ucy50YXJnZXRCcmFuY2hlcyAoJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgb3B0aW9ucy5hdXRvUXVldWVPcHRpb25zPy50YXJnZXRCcmFuY2hlcyxcbiAgICAgICAgICAgICl9IG11c3QgYmUgYSBzdWJzZXQgb2YgdGFyZ2V0QnJhbmNoZXMgKCR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgIG9wdGlvbnMudGFyZ2V0QnJhbmNoZXMsXG4gICAgICAgICAgICApfSlgLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbmV3IEF1dG9RdWV1ZSh0aGlzLCB7XG4gICAgICAgIC4uLm9wdGlvbnMuYXV0b1F1ZXVlT3B0aW9ucyxcbiAgICAgICAgLy8gQ29weSBvdmVyIG1heGltYWwgc2V0IG9mIG1lcmdlIGJyYW5jaGVzIGlmIG5lY2Vzc2FyeVxuICAgICAgICB0YXJnZXRCcmFuY2hlczpcbiAgICAgICAgICBvcHRpb25zLmF1dG9RdWV1ZU9wdGlvbnM/LnRhcmdldEJyYW5jaGVzID8/IG9wdGlvbnMudGFyZ2V0QnJhbmNoZXMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcmVTeW50aGVzaXplKCkge1xuICAgIGNvbnN0IHRhcmdldEJyYW5jaGVzID0gdGhpcy5vcHRpb25zLnRhcmdldEJyYW5jaGVzO1xuICAgIGNvbnN0IG1lcmdlR3JvdXA6IE1lcmdlR3JvdXBPcHRpb25zID0gdGFyZ2V0QnJhbmNoZXNcbiAgICAgID8ge1xuICAgICAgICAgIGJyYW5jaGVzOiB0YXJnZXRCcmFuY2hlcyxcbiAgICAgICAgfVxuICAgICAgOiB7fTtcblxuICAgIGNvbnN0IHdvcmtmbG93RW5naW5lID0gR2l0SHViLm9mKHRoaXMucHJvamVjdCk7XG4gICAgd29ya2Zsb3dFbmdpbmU/LnRyeUZpbmRXb3JrZmxvdyhcImJ1aWxkXCIpPy5vbih7XG4gICAgICBtZXJnZUdyb3VwLFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzU3Vic2V0KHhzOiBzdHJpbmdbXSwgeXM6IHN0cmluZ1tdKSB7XG4gIHJldHVybiB4cy5ldmVyeSgoeCkgPT4geXMuaW5jbHVkZXMoeCkpO1xufVxuIl19