UNPKG

projen

Version:

CDK for software projects

84 lines • 12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PullRequestSource = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); /** * Describes where a pull request comes from. * * Used to select which pull requests a workflow acts on, e.g. which pull requests are auto-approved. */ class PullRequestSource { condition; static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.PullRequestSource", version: "0.104.8" }; /** * Pull requests from a head branch in this repository. * * Anyone who can push to the head branch controls the content of the pull request. * Protect the matching branches with a ruleset that only allows the intended automation * to create, update and delete them. */ static fromBranch(options) { if (options.branch && options.branchPrefix) { throw new Error("Only one of 'branch' or 'branchPrefix' may be specified, not both."); } if (!options.branch && !options.branchPrefix) { throw new Error("PullRequestSource.fromBranch() requires either 'branch' or 'branchPrefix' to be set to a non-empty branch name."); } requireNotEmpty("targetBranches", options.targetBranches, "any target branch"); requireNotEmpty("authors", options.authors, "any author"); const headRef = "github.event.pull_request.head.ref"; const conditions = [ "github.event.pull_request.head.repo.full_name == github.repository", options.branch ? `${headRef} == ${literal(options.branch)}` : `startsWith(${headRef}, ${literal(options.branchPrefix)})`, ]; if (options.targetBranches) { conditions.push(anyOf("github.event.pull_request.base.ref", options.targetBranches)); } if (options.authors) { conditions.push(anyOf("github.event.pull_request.user.login", options.authors)); } return new PullRequestSource(`(${conditions.join(" && ")})`); } /** * Pull requests authored by any of the given users. * * Anyone with access to the credentials of these users can author a matching pull request. */ static fromUsers(options) { if (options.logins.length === 0) { throw new Error("PullRequestSource.fromUsers() requires at least one GitHub username in 'logins'."); } return new PullRequestSource(anyOf("github.event.pull_request.user.login", options.logins)); } constructor(condition) { this.condition = condition; } /** * A GitHub Actions expression that is true for pull requests from this source. * * Only valid in workflows triggered by `pull_request` or `pull_request_target` events. * * @internal */ _toCondition() { return this.condition; } } exports.PullRequestSource = PullRequestSource; function requireNotEmpty(name, values, defaultDescription) { if (values && values.length === 0) { throw new Error(`'${name}' must not be empty. Omit '${name}' to allow ${defaultDescription}.`); } } function anyOf(expression, values) { return `(${values.map((v) => `${expression} == ${literal(v)}`).join(" || ")})`; } /** * Renders a string literal for a GitHub Actions expression. */ function literal(value) { return `'${value.replace(/'/g, "''")}'`; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVsbC1yZXF1ZXN0LXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9naXRodWIvcHVsbC1yZXF1ZXN0LXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBNkNBOzs7O0dBSUc7QUFDSCxNQUFhLGlCQUFpQjtJQW1FUzs7SUFsRXJDOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQ3RCLE9BQXVDO1FBRXZDLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FDYixvRUFBb0UsQ0FDckUsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM3QyxNQUFNLElBQUksS0FBSyxDQUNiLGlIQUFpSCxDQUNsSCxDQUFDO1FBQ0osQ0FBQztRQUNELGVBQWUsQ0FDYixnQkFBZ0IsRUFDaEIsT0FBTyxDQUFDLGNBQWMsRUFDdEIsbUJBQW1CLENBQ3BCLENBQUM7UUFDRixlQUFlLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFMUQsTUFBTSxPQUFPLEdBQUcsb0NBQW9DLENBQUM7UUFDckQsTUFBTSxVQUFVLEdBQUc7WUFDakIsb0VBQW9FO1lBQ3BFLE9BQU8sQ0FBQyxNQUFNO2dCQUNaLENBQUMsQ0FBQyxHQUFHLE9BQU8sT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUM1QyxDQUFDLENBQUMsY0FBYyxPQUFPLEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFhLENBQUMsR0FBRztTQUNoRSxDQUFDO1FBQ0YsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0IsVUFBVSxDQUFDLElBQUksQ0FDYixLQUFLLENBQUMsb0NBQW9DLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUNwRSxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLFVBQVUsQ0FBQyxJQUFJLENBQ2IsS0FBSyxDQUFDLHNDQUFzQyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FDL0QsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksaUJBQWlCLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQ3JCLE9BQXNDO1FBRXRDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FDYixrRkFBa0YsQ0FDbkYsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksaUJBQWlCLENBQzFCLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQzlELENBQUM7SUFDSixDQUFDO0lBRUQsWUFBcUMsU0FBaUI7UUFBakIsY0FBUyxHQUFULFNBQVMsQ0FBUTtJQUFHLENBQUM7SUFFMUQ7Ozs7OztPQU1HO0lBQ0ksWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQzs7QUE5RUgsOENBK0VDO0FBRUQsU0FBUyxlQUFlLENBQ3RCLElBQVksRUFDWixNQUE0QixFQUM1QixrQkFBMEI7SUFFMUIsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxNQUFNLElBQUksS0FBSyxDQUNiLElBQUksSUFBSSw4QkFBOEIsSUFBSSxjQUFjLGtCQUFrQixHQUFHLENBQzlFLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsS0FBSyxDQUFDLFVBQWtCLEVBQUUsTUFBZ0I7SUFDakQsT0FBTyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDakYsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxPQUFPLENBQUMsS0FBYTtJQUM1QixPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBPcHRpb25zIGZvciBgUHVsbFJlcXVlc3RTb3VyY2UuZnJvbUJyYW5jaGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWxsUmVxdWVzdFNvdXJjZUJyYW5jaE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGV4YWN0IGJyYW5jaCB0aGUgcHVsbCByZXF1ZXN0IGNvbWVzIGZyb20uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXNlIGBicmFuY2hQcmVmaXhgXG4gICAqL1xuICByZWFkb25seSBicmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcHJlZml4IHRoZSBicmFuY2ggdGhlIHB1bGwgcmVxdWVzdCBjb21lcyBmcm9tIG11c3Qgc3RhcnQgd2l0aC5cbiAgICpcbiAgICogTWFrZSBzdXJlIHRvIGluY2x1ZGUgYSBzZXBhcmF0b3IgYXQgdGhlIGVuZCBsaWtlIGAvYCBvciBgLWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXNlIGBicmFuY2hgXG4gICAqL1xuICByZWFkb25seSBicmFuY2hQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBicmFuY2hlcyB0aGUgcHVsbCByZXF1ZXN0IG1heSB0YXJnZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW55IHRhcmdldCBicmFuY2hcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldEJyYW5jaGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgdXNlcm5hbWVzIHRoYXQgbWF5IGF1dGhvciB0aGUgcHVsbCByZXF1ZXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFueSBhdXRob3JcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvcnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgUHVsbFJlcXVlc3RTb3VyY2UuZnJvbVVzZXJzYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1bGxSZXF1ZXN0U291cmNlVXNlcnNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgdXNlcm5hbWVzIHRoYXQgbWF5IGF1dGhvciB0aGUgcHVsbCByZXF1ZXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbG9naW5zOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgd2hlcmUgYSBwdWxsIHJlcXVlc3QgY29tZXMgZnJvbS5cbiAqXG4gKiBVc2VkIHRvIHNlbGVjdCB3aGljaCBwdWxsIHJlcXVlc3RzIGEgd29ya2Zsb3cgYWN0cyBvbiwgZS5nLiB3aGljaCBwdWxsIHJlcXVlc3RzIGFyZSBhdXRvLWFwcHJvdmVkLlxuICovXG5leHBvcnQgY2xhc3MgUHVsbFJlcXVlc3RTb3VyY2Uge1xuICAvKipcbiAgICogUHVsbCByZXF1ZXN0cyBmcm9tIGEgaGVhZCBicmFuY2ggaW4gdGhpcyByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBBbnlvbmUgd2hvIGNhbiBwdXNoIHRvIHRoZSBoZWFkIGJyYW5jaCBjb250cm9scyB0aGUgY29udGVudCBvZiB0aGUgcHVsbCByZXF1ZXN0LlxuICAgKiBQcm90ZWN0IHRoZSBtYXRjaGluZyBicmFuY2hlcyB3aXRoIGEgcnVsZXNldCB0aGF0IG9ubHkgYWxsb3dzIHRoZSBpbnRlbmRlZCBhdXRvbWF0aW9uXG4gICAqIHRvIGNyZWF0ZSwgdXBkYXRlIGFuZCBkZWxldGUgdGhlbS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJyYW5jaChcbiAgICBvcHRpb25zOiBQdWxsUmVxdWVzdFNvdXJjZUJyYW5jaE9wdGlvbnMsXG4gICk6IFB1bGxSZXF1ZXN0U291cmNlIHtcbiAgICBpZiAob3B0aW9ucy5icmFuY2ggJiYgb3B0aW9ucy5icmFuY2hQcmVmaXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJPbmx5IG9uZSBvZiAnYnJhbmNoJyBvciAnYnJhbmNoUHJlZml4JyBtYXkgYmUgc3BlY2lmaWVkLCBub3QgYm90aC5cIixcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghb3B0aW9ucy5icmFuY2ggJiYgIW9wdGlvbnMuYnJhbmNoUHJlZml4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiUHVsbFJlcXVlc3RTb3VyY2UuZnJvbUJyYW5jaCgpIHJlcXVpcmVzIGVpdGhlciAnYnJhbmNoJyBvciAnYnJhbmNoUHJlZml4JyB0byBiZSBzZXQgdG8gYSBub24tZW1wdHkgYnJhbmNoIG5hbWUuXCIsXG4gICAgICApO1xuICAgIH1cbiAgICByZXF1aXJlTm90RW1wdHkoXG4gICAgICBcInRhcmdldEJyYW5jaGVzXCIsXG4gICAgICBvcHRpb25zLnRhcmdldEJyYW5jaGVzLFxuICAgICAgXCJhbnkgdGFyZ2V0IGJyYW5jaFwiLFxuICAgICk7XG4gICAgcmVxdWlyZU5vdEVtcHR5KFwiYXV0aG9yc1wiLCBvcHRpb25zLmF1dGhvcnMsIFwiYW55IGF1dGhvclwiKTtcblxuICAgIGNvbnN0IGhlYWRSZWYgPSBcImdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QuaGVhZC5yZWZcIjtcbiAgICBjb25zdCBjb25kaXRpb25zID0gW1xuICAgICAgXCJnaXRodWIuZXZlbnQucHVsbF9yZXF1ZXN0LmhlYWQucmVwby5mdWxsX25hbWUgPT0gZ2l0aHViLnJlcG9zaXRvcnlcIixcbiAgICAgIG9wdGlvbnMuYnJhbmNoXG4gICAgICAgID8gYCR7aGVhZFJlZn0gPT0gJHtsaXRlcmFsKG9wdGlvbnMuYnJhbmNoKX1gXG4gICAgICAgIDogYHN0YXJ0c1dpdGgoJHtoZWFkUmVmfSwgJHtsaXRlcmFsKG9wdGlvbnMuYnJhbmNoUHJlZml4ISl9KWAsXG4gICAgXTtcbiAgICBpZiAob3B0aW9ucy50YXJnZXRCcmFuY2hlcykge1xuICAgICAgY29uZGl0aW9ucy5wdXNoKFxuICAgICAgICBhbnlPZihcImdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QuYmFzZS5yZWZcIiwgb3B0aW9ucy50YXJnZXRCcmFuY2hlcyksXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5hdXRob3JzKSB7XG4gICAgICBjb25kaXRpb25zLnB1c2goXG4gICAgICAgIGFueU9mKFwiZ2l0aHViLmV2ZW50LnB1bGxfcmVxdWVzdC51c2VyLmxvZ2luXCIsIG9wdGlvbnMuYXV0aG9ycyksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHVsbFJlcXVlc3RTb3VyY2UoYCgke2NvbmRpdGlvbnMuam9pbihcIiAmJiBcIil9KWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1bGwgcmVxdWVzdHMgYXV0aG9yZWQgYnkgYW55IG9mIHRoZSBnaXZlbiB1c2Vycy5cbiAgICpcbiAgICogQW55b25lIHdpdGggYWNjZXNzIHRvIHRoZSBjcmVkZW50aWFscyBvZiB0aGVzZSB1c2VycyBjYW4gYXV0aG9yIGEgbWF0Y2hpbmcgcHVsbCByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVXNlcnMoXG4gICAgb3B0aW9uczogUHVsbFJlcXVlc3RTb3VyY2VVc2Vyc09wdGlvbnMsXG4gICk6IFB1bGxSZXF1ZXN0U291cmNlIHtcbiAgICBpZiAob3B0aW9ucy5sb2dpbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiUHVsbFJlcXVlc3RTb3VyY2UuZnJvbVVzZXJzKCkgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIEdpdEh1YiB1c2VybmFtZSBpbiAnbG9naW5zJy5cIixcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUHVsbFJlcXVlc3RTb3VyY2UoXG4gICAgICBhbnlPZihcImdpdGh1Yi5ldmVudC5wdWxsX3JlcXVlc3QudXNlci5sb2dpblwiLCBvcHRpb25zLmxvZ2lucyksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjb25kaXRpb246IHN0cmluZykge31cblxuICAvKipcbiAgICogQSBHaXRIdWIgQWN0aW9ucyBleHByZXNzaW9uIHRoYXQgaXMgdHJ1ZSBmb3IgcHVsbCByZXF1ZXN0cyBmcm9tIHRoaXMgc291cmNlLlxuICAgKlxuICAgKiBPbmx5IHZhbGlkIGluIHdvcmtmbG93cyB0cmlnZ2VyZWQgYnkgYHB1bGxfcmVxdWVzdGAgb3IgYHB1bGxfcmVxdWVzdF90YXJnZXRgIGV2ZW50cy5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3RvQ29uZGl0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlcXVpcmVOb3RFbXB0eShcbiAgbmFtZTogc3RyaW5nLFxuICB2YWx1ZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkLFxuICBkZWZhdWx0RGVzY3JpcHRpb246IHN0cmluZyxcbikge1xuICBpZiAodmFsdWVzICYmIHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJyR7bmFtZX0nIG11c3Qgbm90IGJlIGVtcHR5LiBPbWl0ICcke25hbWV9JyB0byBhbGxvdyAke2RlZmF1bHREZXNjcmlwdGlvbn0uYCxcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFueU9mKGV4cHJlc3Npb246IHN0cmluZywgdmFsdWVzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiBgKCR7dmFsdWVzLm1hcCgodikgPT4gYCR7ZXhwcmVzc2lvbn0gPT0gJHtsaXRlcmFsKHYpfWApLmpvaW4oXCIgfHwgXCIpfSlgO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBzdHJpbmcgbGl0ZXJhbCBmb3IgYSBHaXRIdWIgQWN0aW9ucyBleHByZXNzaW9uLlxuICovXG5mdW5jdGlvbiBsaXRlcmFsKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCcke3ZhbHVlLnJlcGxhY2UoLycvZywgXCInJ1wiKX0nYDtcbn1cbiJdfQ==