Skip to content

Commit

Permalink
feat: add bots_ignore input
Browse files Browse the repository at this point in the history
  • Loading branch information
jef committed Dec 12, 2024
1 parent b584084 commit b83c525
Show file tree
Hide file tree
Showing 9 changed files with 68 additions and 10 deletions.
1 change: 0 additions & 1 deletion .node-version

This file was deleted.

14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# Changelog

## [1.3.0](https://github.com/jef/conventional-commits-pr-action/compare/v1.2.0...v1.3.0) (2024-12-11)


### Features

* add bots_ignore input ([#231](https://github.com/jef/conventional-commits-pr-action/issues/231)) ([6a6c1c4](https://github.com/jef/conventional-commits-pr-action/commit/6a6c1c4e9d224ea5ee12911040d5983c028fe9a6))

## [1.2.0](https://github.com/jef/conventional-commits-pr-action/compare/v1.1.1...v1.2.0) (2024-12-11)


### Features

* update node, deps, testing ([#229](https://github.com/jef/conventional-commits-pr-action/issues/229)) ([774e6b8](https://github.com/jef/conventional-commits-pr-action/commit/774e6b82d68662745722538184f979fb0dba9561))

### [1.1.1](https://github.com/jef/conventional-commits-pr-action/compare/v1.1.0...v1.1.1) (2022-03-22)


Expand Down
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,19 @@ jobs:
## Inputs
### `bots_ignore`

**Optional** A list of bots to ignore when linting the pull request title. Can be a comma-separated list.

### `comment`

**Optional** Post a comment in the pull request conversation with examples.

| Default value | `true` |
|---------------|--------|

**Note**: commenting in the pull request conversation requires that the token is configured with the `pull-requests` permission.
> [!NOTE]
> Commenting in the pull request conversation requires that the token is configured with the `pull-requests` permission.

### `token`

Expand Down
4 changes: 4 additions & 0 deletions action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ branding:
icon: align-left
color: blue
inputs:
bots_ignore:
required: false
description: A list of bots to ignore when linting the pull request title. Can be a comma-separated list.
default: ''
comment:
required: false
description: Post a comment in the pull request conversation with examples.
Expand Down
1 change: 1 addition & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/** @type {import('ts-jest').JestConfigWithTsJest} **/
module.exports = {
collectCoverage: true,
testEnvironment: 'node',
transform: {
'^.+.tsx?$': ['ts-jest', {}],
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@jef/conventional-commits-pr-action",
"version": "1.1.1",
"version": "1.3.0",
"private": true,
"description": "Lints pull requests based on Conventional Commits and Jira tickets",
"main": "./src/main.ts",
Expand Down
31 changes: 28 additions & 3 deletions src/__tests__/lint.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
import {getConventionalCommitTypes, lintPullRequest} from '../lint';
import {
getConventionalCommitTypes,
lintPullRequest,
isBotIgnored,
} from '../lint';
import {getInput} from '@actions/core';

jest.mock('@actions/core');

describe('getConvetionalCommitTypes tests', () => {
it('should return types', () => {
test('should return types', () => {
const types = getConventionalCommitTypes();

expect(
Expand Down Expand Up @@ -30,8 +37,26 @@ describe('lintPullRequest tests', () => {
];

tests.forEach(({args, expected}) => {
it(`should pass or fail linting ['${args}', '${expected}']`, async () => {
test(`should pass or fail linting ['${args}', '${expected}']`, async () => {
expect(await lintPullRequest(args)).toBe(expected);
});
});
});

jest.mock('@actions/github', () => ({
context: {
actor: 'test-bot',
},
}));

describe('isBotIgnored tests', () => {
test('should return true if the bot is in the ignore list', () => {
(getInput as jest.Mock).mockReturnValue('test-bot,another-bot');
expect(isBotIgnored()).toBe(true);
});

test('should return false if the bot is not in the ignore list', () => {
(getInput as jest.Mock).mockReturnValue('another-bot');
expect(isBotIgnored()).toBe(false);
});
});
14 changes: 12 additions & 2 deletions src/lint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,16 @@ import {
getPullRequest,
} from './github';
import * as conventionalCommitTypes from 'conventional-commit-types';
import {getInput} from '@actions/core';
import {getInput, info} from '@actions/core';
import {context} from '@actions/github';

const types = Object.keys(conventionalCommitTypes.types);

export function isBotIgnored() {
const botsIgnore = getInput('bots_ignore').split(',');
return botsIgnore.includes(context.actor);
}

export function getConventionalCommitTypes(): string {
return types
.map(type => {
Expand All @@ -28,8 +34,12 @@ export async function lintPullRequest(title: string) {
}

export async function lint() {
const pr = await getPullRequest();
if (isBotIgnored()) {
info('Bot is ignored. Skipping linting.');
return;
}

const pr = await getPullRequest();
const isPrTitleOk = await lintPullRequest(pr.title);

if (isPrTitleOk) {
Expand Down

0 comments on commit b83c525

Please sign in to comment.