projen
Version:
CDK for software projects
64 lines • 9.58 kB
JavaScript
;
var _a;
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 {
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;
_a = JSII_RTTI_SYMBOL_1;
MergeQueue[_a] = { fqn: "projen.github.MergeQueue", version: "0.99.51" };
function isSubset(xs, ys) {
return xs.every((x) => ys.includes(x));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UtcXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2l0aHViL21lcmdlLXF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsNkNBQXlDO0FBRXpDLDRDQUF5QztBQUN6QyxxQ0FBa0M7QUEyQmxDOztHQUVHO0FBQ0gsTUFBYSxVQUFXLFNBQVEscUJBQVM7SUFDdkMsWUFDRSxLQUFpQixFQUNBLFVBQTZCLEVBQUU7UUFFaEQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRkksWUFBTyxHQUFQLE9BQU8sQ0FBd0I7UUFJaEQsTUFBTSxjQUFjLEdBQUcsZUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQ2IsY0FDRSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQ2IsNEVBQTRFLENBQzdFLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUM7UUFDNUMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLDZFQUE2RTtZQUM3RSxFQUFFO1lBQ0YsMEVBQTBFO1lBQzFFLHNHQUFzRztZQUN0RyxFQUFFO1lBQ0YsZ0RBQWdEO1lBQ2hELHlEQUF5RDtZQUN6RCx5REFBeUQ7WUFDekQseURBQXlEO1lBQ3pELHlEQUF5RDtZQUN6RCx5REFBeUQ7WUFDekQsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkUsSUFDRSxDQUFDLFFBQVEsQ0FDUCxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxFQUN4QyxPQUFPLENBQUMsY0FBYyxDQUN2QixFQUNELENBQUM7b0JBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixvQ0FBb0MsSUFBSSxDQUFDLFNBQVMsQ0FDaEQsT0FBTyxDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FDekMsd0NBQXdDLElBQUksQ0FBQyxTQUFTLENBQ3JELE9BQU8sQ0FBQyxjQUFjLENBQ3ZCLEdBQUcsQ0FDTCxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxzQkFBUyxDQUFDLElBQUksRUFBRTtnQkFDbEIsR0FBRyxPQUFPLENBQUMsZ0JBQWdCO2dCQUMzQix1REFBdUQ7Z0JBQ3ZELGNBQWMsRUFDWixPQUFPLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxJQUFJLE9BQU8sQ0FBQyxjQUFjO2FBQ3JFLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ25ELE1BQU0sVUFBVSxHQUFzQixjQUFjO1lBQ2xELENBQUMsQ0FBQztnQkFDRSxRQUFRLEVBQUUsY0FBYzthQUN6QjtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCxNQUFNLGNBQWMsR0FBRyxlQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxjQUFjLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMzQyxVQUFVO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFuRUgsZ0NBb0VDOzs7QUFFRCxTQUFTLFFBQVEsQ0FBQyxFQUFZLEVBQUUsRUFBWTtJQUMxQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEF1dG9RdWV1ZSB9IGZyb20gXCIuL2F1dG8tcXVldWVcIjtcbmltcG9ydCB0eXBlIHsgQXV0b1F1ZXVlT3B0aW9ucyB9IGZyb20gXCIuL2F1dG8tcXVldWVcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IEdpdEh1YiB9IGZyb20gXCIuL2dpdGh1YlwiO1xuaW1wb3J0IHR5cGUgeyBNZXJnZUdyb3VwT3B0aW9ucyB9IGZyb20gXCIuL3dvcmtmbG93cy1tb2RlbFwiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yICdNZXJnZVF1ZXVlJ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lcmdlUXVldWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNob3VsZCBwdWxsIHJlcXVlc3RzIGJlIHF1ZXVlZCBhdXRvbWF0aWNhbGx5IHRvIGJlIG1lcmdlZCBvbmNlIHRoZXkgcGFzcyByZXF1aXJlZCBjaGVja3NcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b1F1ZXVlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGF1dG8tcXVldWUgcHVsbCByZXF1ZXN0c1xuICAgKiBAZGVmYXVsdCAtIHNlZSBBdXRvUXVldWVPcHRpb25zXG4gICAqL1xuICByZWFkb25seSBhdXRvUXVldWVPcHRpb25zPzogQXV0b1F1ZXVlT3B0aW9ucztcblxuICAvKipcbiAgICogVGhlIGJyYW5jaGVzIHRoYXQgY2FuIGJlIG1lcmdlZCBpbnRvIHVzaW5nIE1lcmdlUXVldWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbGwgYnJhbmNoZXNcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldEJyYW5jaGVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWVyZ2UgcHVsbCByZXF1ZXN0cyB1c2luZyBhIG1lcmdlIHF1ZXVlXG4gKi9cbmV4cG9ydCBjbGFzcyBNZXJnZVF1ZXVlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IElDb25zdHJ1Y3QsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBNZXJnZVF1ZXVlT3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBzdXBlcihzY29wZSk7XG5cbiAgICBjb25zdCB3b3JrZmxvd0VuZ2luZSA9IEdpdEh1Yi5vZih0aGlzLnByb2plY3QpO1xuICAgIGlmICghd29ya2Zsb3dFbmdpbmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbm5vdCBhZGQgJHtcbiAgICAgICAgICBuZXcudGFyZ2V0Lm5hbWVcbiAgICAgICAgfSB0byBwcm9qZWN0IHdpdGhvdXQgR2l0SHViIGVuYWJsZWQuIFBsZWFzZSBlbmFibGUgR2l0SHViIGZvciB0aGlzIHByb2plY3QuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYXV0b01lcmdlID0gb3B0aW9ucy5hdXRvUXVldWUgPz8gdHJ1ZTtcbiAgICBpZiAoYXV0b01lcmdlKSB7XG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgYXV0b1F1ZXVlLnRhcmdldEJyYW5jaGVzIHcuci50LiB0aGUgbWVyZ2VRdWV1ZS50YXJnZXRCcmFuY2hlc1xuICAgICAgLy9cbiAgICAgIC8vIC0gbWVyZ2VRdWV1ZS50YXJnZXRCcmFuY2hlczogdGhvc2UgYnJhbmNoZXMgd2UgQ0FOIHVzZSBtZXJnZSBxdWV1ZXMgZm9yXG4gICAgICAvLyAtIGF1dG9RdWV1ZS50YXJnZXRCcmFuY2hlczogdGhvc2UgYnJhbmNoZXMgd2UgQVVUT01BVElDQUxMWSB1c2UgbWVyZ2UgcXVldWVzIGZvciAoc3Vic2V0IG9mIGZvcm1lcilcbiAgICAgIC8vXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlQnJhbmNoZXNcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB8ICAgdW5kZWZpbmVkICAgfCAgIGRlZmluZWQgICAgfFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18XG4gICAgICAvLyAgYXV0byAgICAgICB1bmRlZmluZWQgfCAgICAgIG9rICAgICAgIHwgICAgIGNvcHkgICAgIHxcbiAgICAgIC8vICBCcmFuY2hlcyAgICAgZGVmaW5lZCB8ICAgICAgb2sgICAgICAgfCAgIHZhbGlkYXRlICAgfFxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18XG4gICAgICBpZiAob3B0aW9ucy5hdXRvUXVldWVPcHRpb25zPy50YXJnZXRCcmFuY2hlcyAmJiBvcHRpb25zLnRhcmdldEJyYW5jaGVzKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaXNTdWJzZXQoXG4gICAgICAgICAgICBvcHRpb25zLmF1dG9RdWV1ZU9wdGlvbnM/LnRhcmdldEJyYW5jaGVzLFxuICAgICAgICAgICAgb3B0aW9ucy50YXJnZXRCcmFuY2hlcyxcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBhdXRvUXVldWVPcHRpb25zLnRhcmdldEJyYW5jaGVzICgke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICBvcHRpb25zLmF1dG9RdWV1ZU9wdGlvbnM/LnRhcmdldEJyYW5jaGVzLFxuICAgICAgICAgICAgKX0gbXVzdCBiZSBhIHN1YnNldCBvZiB0YXJnZXRCcmFuY2hlcyAoJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgb3B0aW9ucy50YXJnZXRCcmFuY2hlcyxcbiAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBuZXcgQXV0b1F1ZXVlKHRoaXMsIHtcbiAgICAgICAgLi4ub3B0aW9ucy5hdXRvUXVldWVPcHRpb25zLFxuICAgICAgICAvLyBDb3B5IG92ZXIgbWF4aW1hbCBzZXQgb2YgbWVyZ2UgYnJhbmNoZXMgaWYgbmVjZXNzYXJ5XG4gICAgICAgIHRhcmdldEJyYW5jaGVzOlxuICAgICAgICAgIG9wdGlvbnMuYXV0b1F1ZXVlT3B0aW9ucz8udGFyZ2V0QnJhbmNoZXMgPz8gb3B0aW9ucy50YXJnZXRCcmFuY2hlcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByZVN5bnRoZXNpemUoKSB7XG4gICAgY29uc3QgdGFyZ2V0QnJhbmNoZXMgPSB0aGlzLm9wdGlvbnMudGFyZ2V0QnJhbmNoZXM7XG4gICAgY29uc3QgbWVyZ2VHcm91cDogTWVyZ2VHcm91cE9wdGlvbnMgPSB0YXJnZXRCcmFuY2hlc1xuICAgICAgPyB7XG4gICAgICAgICAgYnJhbmNoZXM6IHRhcmdldEJyYW5jaGVzLFxuICAgICAgICB9XG4gICAgICA6IHt9O1xuXG4gICAgY29uc3Qgd29ya2Zsb3dFbmdpbmUgPSBHaXRIdWIub2YodGhpcy5wcm9qZWN0KTtcbiAgICB3b3JrZmxvd0VuZ2luZT8udHJ5RmluZFdvcmtmbG93KFwiYnVpbGRcIik/Lm9uKHtcbiAgICAgIG1lcmdlR3JvdXAsXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNTdWJzZXQoeHM6IHN0cmluZ1tdLCB5czogc3RyaW5nW10pIHtcbiAgcmV0dXJuIHhzLmV2ZXJ5KCh4KSA9PiB5cy5pbmNsdWRlcyh4KSk7XG59XG4iXX0=