diff --git a/.github/workflows/lint-pr-title-preview-all.yml b/.github/workflows/lint-pr-title-preview-all.yml new file mode 100644 index 00000000..1abb82b1 --- /dev/null +++ b/.github/workflows/lint-pr-title-preview-all.yml @@ -0,0 +1,74 @@ +name: 'Lint PR title preview (current branch, all options specified)' +on: + pull_request: + types: + - opened + - edited + - synchronize + +jobs: + main: + runs-on: ubuntu-latest + permissions: + pull-requests: read + steps: + - uses: actions/checkout@v5 + - uses: pnpm/action-setup@v4 + with: + version: 9 + - uses: actions/setup-node@v4 + with: + node-version: 24 + - run: pnpm install + - run: pnpm build + - uses: ./ + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + # Configure which types are allowed (newline-delimited). + # Default: https://github.com/commitizen/conventional-commit-types + types: | + fix + feat + # Configure which scopes are allowed (newline-delimited). + # These are regex patterns auto-wrapped in `^ $`. + scopes: | + core + ui + JIRA-\d+ + # Configure that a scope must always be provided. + requireScope: false + # Configure which scopes are disallowed in PR titles (newline-delimited). + # For instance by setting the value below, `chore(release): ...` (lowercase) + # and `ci(e2e,release): ...` (unknown scope) will be rejected. + # These are regex patterns auto-wrapped in `^ $`. + disallowScopes: | + release + [A-Z]+ + # Configure additional validation for the subject based on a regex. + # This example ensures the subject doesn't start with an uppercase character. + subjectPattern: ^(?![A-Z]).+$ + # If `subjectPattern` is configured, you can use this property to override + # the default error message that is shown when the pattern doesn't match. + # The variables `subject` and `title` can be used within the message. + subjectPatternError: | + The subject "{subject}" found in the pull request title "{title}" + didn't match the configured pattern. Please ensure that the subject + doesn't start with an uppercase character. + # The GitHub base URL will be automatically set to the correct value from the GitHub context variable. + # If you want to override this, you can do so here (not recommended). + # githubBaseUrl: https://github.com/api/v3 + # If the PR contains one of these newline-delimited labels, the + # validation is skipped. If you want to rerun the validation when + # labels change, you might want to use the `labeled` and `unlabeled` + # event triggers in your workflow. + ignoreLabels: | + bot + ignore-semantic-pull-request + # If you're using a format for the PR title that differs from the traditional Conventional + # Commits spec, you can use these options to customize the parsing of the type, scope and + # subject. The `headerPattern` should contain a regex where the capturing groups in parentheses + # correspond to the parts listed in `headerPatternCorrespondence`. + # See: https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-commits-parser#headerpattern + headerPattern: '^(\w*)(?:\(([\w$.\-*/ ]*)\))?: (.*)$' + headerPatternCorrespondence: type, scope, subject diff --git a/src/parseConfig.js b/src/parseConfig.js index 832b718e..0b1c15aa 100644 --- a/src/parseConfig.js +++ b/src/parseConfig.js @@ -40,9 +40,11 @@ export default function parseConfig() { let headerPatternCorrespondence; if (process.env.INPUT_HEADERPATTERNCORRESPONDENCE) { - headerPatternCorrespondence = ConfigParser.parseString( - process.env.INPUT_HEADERPATTERNCORRESPONDENCE - ); + // todo: this should be migrated to an enum w/ ConfigParser.parseEnum + headerPatternCorrespondence = + process.env.INPUT_HEADERPATTERNCORRESPONDENCE.split(',') + .map((part) => part.trim()) + .filter((part) => part.length > 0); } let wip;