UNPKG

@aws-cdk/aws-codepipeline

Version:

Better interface to AWS Code Pipeline

64 lines 8.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateNamespaceName = exports.validateArtifactName = exports.validateName = exports.validateSourceAction = exports.validateArtifactBounds = void 0; const cdk = require("@aws-cdk/core"); const action_1 = require("../action"); /** * Validation function that checks if the number of artifacts is within the given bounds */ function validateArtifactBounds(type, artifacts, min, max, category, provider) { const ret = []; if (artifacts.length < min) { ret.push(`${category}/${provider} must have at least ${min} ${type} artifacts`); } if (artifacts.length > max) { ret.push(`${category}/${provider} cannot have more than ${max} ${type} artifacts`); } return ret; } exports.validateArtifactBounds = validateArtifactBounds; /** * Validation function that guarantees that an action is or is not a source action. This is useful because Source actions can only be * in the first stage of a pipeline, and the first stage can only contain source actions. */ function validateSourceAction(mustBeSource, category, actionName, stageName) { if (mustBeSource !== (category === action_1.ActionCategory.SOURCE)) { return [`Action ${actionName} in stage ${stageName}: ` + (mustBeSource ? 'first stage may only contain Source actions' : 'Source actions may only occur in first stage')]; } return []; } exports.validateSourceAction = validateSourceAction; /** * Regex to validate Pipeline, Stage, Action names * * https://docs.aws.amazon.com/codepipeline/latest/userguide/limits.html */ const VALID_IDENTIFIER_REGEX = /^[a-zA-Z0-9.@_-]{1,100}$/; /** * Validate the given name of a pipeline component. Pipeline component names all have the same restrictions. * This can be used to validate the name of all components of a pipeline. */ function validateName(thing, name) { validateAgainstRegex(VALID_IDENTIFIER_REGEX, thing, name); } exports.validateName = validateName; function validateArtifactName(artifactName) { // https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_Artifact.html#CodePipeline-Type-Artifact-name validateAgainstRegex(/^[a-zA-Z0-9_-]{1,100}$/, 'Artifact', artifactName); } exports.validateArtifactName = validateArtifactName; function validateNamespaceName(namespaceName) { validateAgainstRegex(/^[A-Za-z0-9@_-]{1,100}$/, 'Namespace', namespaceName); } exports.validateNamespaceName = validateNamespaceName; function validateAgainstRegex(regex, thing, name) { // name could be a Token - in that case, skip validation altogether if (cdk.Token.isUnresolved(name)) { return; } if (name !== undefined && !regex.test(name)) { throw new Error(`${thing} name must match regular expression: ${regex.toString()}, got '${name}'`); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXFDO0FBQ3JDLHNDQUEyQztBQUczQzs7R0FFRztBQUNILFNBQWdCLHNCQUFzQixDQUNwQyxJQUFZLEVBQUUsU0FBcUIsRUFDbkMsR0FBVyxFQUFFLEdBQVcsRUFDeEIsUUFBZ0IsRUFBRSxRQUFnQjtJQUNsQyxNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7SUFFekIsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtRQUMxQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxJQUFJLFFBQVEsdUJBQXVCLEdBQUcsSUFBSSxJQUFJLFlBQVksQ0FBQyxDQUFDO0tBQ2pGO0lBRUQsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtRQUMxQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxJQUFJLFFBQVEsMEJBQTBCLEdBQUcsSUFBSSxJQUFJLFlBQVksQ0FBQyxDQUFDO0tBQ3BGO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBZkQsd0RBZUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxZQUFxQixFQUFFLFFBQWdCLEVBQUUsVUFBa0IsRUFBRSxTQUFpQjtJQUNqSCxJQUFJLFlBQVksS0FBSyxDQUFDLFFBQVEsS0FBSyx1QkFBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3pELE9BQU8sQ0FBQyxVQUFVLFVBQVUsYUFBYSxTQUFTLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsNkNBQTZDO2dCQUNwSCxDQUFDLENBQUMsOENBQThDLENBQUMsQ0FBQyxDQUFDO0tBQ3REO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBTkQsb0RBTUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRywwQkFBMEIsQ0FBQztBQUUxRDs7O0dBR0c7QUFDSCxTQUFnQixZQUFZLENBQUMsS0FBYSxFQUFFLElBQXdCO0lBQ2xFLG9CQUFvQixDQUFDLHNCQUFzQixFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBRkQsb0NBRUM7QUFFRCxTQUFnQixvQkFBb0IsQ0FBQyxZQUFnQztJQUNuRSxpSEFBaUg7SUFDakgsb0JBQW9CLENBQUMsd0JBQXdCLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQzNFLENBQUM7QUFIRCxvREFHQztBQUVELFNBQWdCLHFCQUFxQixDQUFDLGFBQWlDO0lBQ3JFLG9CQUFvQixDQUFDLHlCQUF5QixFQUFFLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUM5RSxDQUFDO0FBRkQsc0RBRUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLEtBQWEsRUFBRSxLQUFhLEVBQUUsSUFBd0I7SUFDbEYsbUVBQW1FO0lBQ25FLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDaEMsT0FBTztLQUNSO0lBRUQsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyx3Q0FBd0MsS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFVLElBQUksR0FBRyxDQUFDLENBQUM7S0FDcEc7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uQ2F0ZWdvcnkgfSBmcm9tICcuLi9hY3Rpb24nO1xuaW1wb3J0IHsgQXJ0aWZhY3QgfSBmcm9tICcuLi9hcnRpZmFjdCc7XG5cbi8qKlxuICogVmFsaWRhdGlvbiBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiB0aGUgbnVtYmVyIG9mIGFydGlmYWN0cyBpcyB3aXRoaW4gdGhlIGdpdmVuIGJvdW5kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVBcnRpZmFjdEJvdW5kcyhcbiAgdHlwZTogc3RyaW5nLCBhcnRpZmFjdHM6IEFydGlmYWN0W10sXG4gIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcixcbiAgY2F0ZWdvcnk6IHN0cmluZywgcHJvdmlkZXI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcmV0OiBzdHJpbmdbXSA9IFtdO1xuXG4gIGlmIChhcnRpZmFjdHMubGVuZ3RoIDwgbWluKSB7XG4gICAgcmV0LnB1c2goYCR7Y2F0ZWdvcnl9LyR7cHJvdmlkZXJ9IG11c3QgaGF2ZSBhdCBsZWFzdCAke21pbn0gJHt0eXBlfSBhcnRpZmFjdHNgKTtcbiAgfVxuXG4gIGlmIChhcnRpZmFjdHMubGVuZ3RoID4gbWF4KSB7XG4gICAgcmV0LnB1c2goYCR7Y2F0ZWdvcnl9LyR7cHJvdmlkZXJ9IGNhbm5vdCBoYXZlIG1vcmUgdGhhbiAke21heH0gJHt0eXBlfSBhcnRpZmFjdHNgKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogVmFsaWRhdGlvbiBmdW5jdGlvbiB0aGF0IGd1YXJhbnRlZXMgdGhhdCBhbiBhY3Rpb24gaXMgb3IgaXMgbm90IGEgc291cmNlIGFjdGlvbi4gVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSBTb3VyY2UgYWN0aW9ucyBjYW4gb25seSBiZVxuICogaW4gdGhlIGZpcnN0IHN0YWdlIG9mIGEgcGlwZWxpbmUsIGFuZCB0aGUgZmlyc3Qgc3RhZ2UgY2FuIG9ubHkgY29udGFpbiBzb3VyY2UgYWN0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU291cmNlQWN0aW9uKG11c3RCZVNvdXJjZTogYm9vbGVhbiwgY2F0ZWdvcnk6IHN0cmluZywgYWN0aW9uTmFtZTogc3RyaW5nLCBzdGFnZU5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgaWYgKG11c3RCZVNvdXJjZSAhPT0gKGNhdGVnb3J5ID09PSBBY3Rpb25DYXRlZ29yeS5TT1VSQ0UpKSB7XG4gICAgcmV0dXJuIFtgQWN0aW9uICR7YWN0aW9uTmFtZX0gaW4gc3RhZ2UgJHtzdGFnZU5hbWV9OiBgICsgKG11c3RCZVNvdXJjZSA/ICdmaXJzdCBzdGFnZSBtYXkgb25seSBjb250YWluIFNvdXJjZSBhY3Rpb25zJ1xuICAgICAgOiAnU291cmNlIGFjdGlvbnMgbWF5IG9ubHkgb2NjdXIgaW4gZmlyc3Qgc3RhZ2UnKV07XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG4vKipcbiAqIFJlZ2V4IHRvIHZhbGlkYXRlIFBpcGVsaW5lLCBTdGFnZSwgQWN0aW9uIG5hbWVzXG4gKlxuICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2NvZGVwaXBlbGluZS9sYXRlc3QvdXNlcmd1aWRlL2xpbWl0cy5odG1sXG4gKi9cbmNvbnN0IFZBTElEX0lERU5USUZJRVJfUkVHRVggPSAvXlthLXpBLVowLTkuQF8tXXsxLDEwMH0kLztcblxuLyoqXG4gKiBWYWxpZGF0ZSB0aGUgZ2l2ZW4gbmFtZSBvZiBhIHBpcGVsaW5lIGNvbXBvbmVudC4gUGlwZWxpbmUgY29tcG9uZW50IG5hbWVzIGFsbCBoYXZlIHRoZSBzYW1lIHJlc3RyaWN0aW9ucy5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gdmFsaWRhdGUgdGhlIG5hbWUgb2YgYWxsIGNvbXBvbmVudHMgb2YgYSBwaXBlbGluZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTmFtZSh0aGluZzogc3RyaW5nLCBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgdmFsaWRhdGVBZ2FpbnN0UmVnZXgoVkFMSURfSURFTlRJRklFUl9SRUdFWCwgdGhpbmcsIG5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVBcnRpZmFjdE5hbWUoYXJ0aWZhY3ROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2NvZGVwaXBlbGluZS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9BcnRpZmFjdC5odG1sI0NvZGVQaXBlbGluZS1UeXBlLUFydGlmYWN0LW5hbWVcbiAgdmFsaWRhdGVBZ2FpbnN0UmVnZXgoL15bYS16QS1aMC05Xy1dezEsMTAwfSQvLCAnQXJ0aWZhY3QnLCBhcnRpZmFjdE5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVOYW1lc3BhY2VOYW1lKG5hbWVzcGFjZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICB2YWxpZGF0ZUFnYWluc3RSZWdleCgvXltBLVphLXowLTlAXy1dezEsMTAwfSQvLCAnTmFtZXNwYWNlJywgbmFtZXNwYWNlTmFtZSk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQWdhaW5zdFJlZ2V4KHJlZ2V4OiBSZWdFeHAsIHRoaW5nOiBzdHJpbmcsIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAvLyBuYW1lIGNvdWxkIGJlIGEgVG9rZW4gLSBpbiB0aGF0IGNhc2UsIHNraXAgdmFsaWRhdGlvbiBhbHRvZ2V0aGVyXG4gIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKG5hbWUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCAmJiAhcmVnZXgudGVzdChuYW1lKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGluZ30gbmFtZSBtdXN0IG1hdGNoIHJlZ3VsYXIgZXhwcmVzc2lvbjogJHtyZWdleC50b1N0cmluZygpfSwgZ290ICcke25hbWV9J2ApO1xuICB9XG59XG4iXX0=