Skip to content

Commit 269e82a

Browse files
authored
Merge pull request #21 from nearform/feature/limiting-commit-message-body
Limiting commit messages in issue description
2 parents 9e3dc79 + 2e52076 commit 269e82a

File tree

6 files changed

+342
-6
lines changed

6 files changed

+342
-6
lines changed

action.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ inputs:
88
description: 'Number of days of inactivity before a release becomes stale'
99
required: false
1010
default: 7
11+
commit-messages-lines:
12+
description: 'Limit the number of first x lines from commit messages that will be added in the issue description. No truncation when set to 0.'
13+
required: false
14+
default: 1
1115
runs:
1216
using: 'node12'
1317
main: 'dist/index.js'

dist/index.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6009,10 +6009,22 @@ async function updateLastOpenPendingIssue(token, issueTitle, issueBody, issueNo)
60096009
return updatedIssue.data.length ? updatedIssue.data[0] : null;
60106010
}
60116011

6012+
function formatCommitMessage(fullCommitMessage, numberOfLines) {
6013+
if (!numberOfLines || numberOfLines < 0) {
6014+
return fullCommitMessage;
6015+
}
6016+
return fullCommitMessage
6017+
.split('\n')
6018+
.slice(0, numberOfLines)
6019+
.join('\n')
6020+
.trim();
6021+
}
6022+
60126023
module.exports = {
60136024
createIssue,
60146025
getLastOpenPendingIssue,
60156026
updateLastOpenPendingIssue,
6027+
formatCommitMessage,
60166028
};
60176029

60186030

@@ -6174,12 +6186,13 @@ var __webpack_exports__ = {};
61746186
const core = __nccwpck_require__(186);
61756187
const { logInfo } = __nccwpck_require__(653);
61766188
const { getLatestRelease, getUnreleasedCommits } = __nccwpck_require__(26);
6177-
const { createIssue, getLastOpenPendingIssue, updateLastOpenPendingIssue } = __nccwpck_require__(608);
6189+
const { createIssue, getLastOpenPendingIssue, updateLastOpenPendingIssue, formatCommitMessage } = __nccwpck_require__(608);
61786190

61796191
async function run() {
61806192
try {
61816193
const token = core.getInput('github-token', { required: true });
61826194
const staleDays = Number(core.getInput('stale-days'));
6195+
const commitMessageLines = Number(core.getInput('commit-messages-lines'));
61836196
const latestRelease = await getLatestRelease(token);
61846197
const label = 'notify-release';
61856198

@@ -6197,7 +6210,7 @@ Tag:${latestRelease.tag_name}, author:${latestRelease.author.login}`);
61976210
);
61986211

61996212
if (unreleasedCommits.length) {
6200-
const commitStr = unreleasedCommits.map((commit) => `Commit: ${commit.commit.message}
6213+
const commitStr = unreleasedCommits.map((commit) => `Commit: ${formatCommitMessage(commit.commit.message, commitMessageLines)}
62016214
Author: ${commit.commit.author.name}
62026215
62036216
`).join('');

src/index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
const core = require('@actions/core');
33
const { logInfo } = require('./log');
44
const { getLatestRelease, getUnreleasedCommits } = require('./release');
5-
const { createIssue, getLastOpenPendingIssue, updateLastOpenPendingIssue } = require('./utils');
5+
const { createIssue, getLastOpenPendingIssue, updateLastOpenPendingIssue, formatCommitMessage } = require('./utils');
66

77
async function run() {
88
try {
99
const token = core.getInput('github-token', { required: true });
1010
const staleDays = Number(core.getInput('stale-days'));
11+
const commitMessageLines = Number(core.getInput('commit-messages-lines'));
1112
const latestRelease = await getLatestRelease(token);
1213
const label = 'notify-release';
1314

@@ -25,7 +26,7 @@ Tag:${latestRelease.tag_name}, author:${latestRelease.author.login}`);
2526
);
2627

2728
if (unreleasedCommits.length) {
28-
const commitStr = unreleasedCommits.map((commit) => `Commit: ${commit.commit.message}
29+
const commitStr = unreleasedCommits.map((commit) => `Commit: ${formatCommitMessage(commit.commit.message, commitMessageLines)}
2930
Author: ${commit.commit.author.name}
3031
3132
`).join('');

src/utils.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,20 @@ async function updateLastOpenPendingIssue(token, issueTitle, issueBody, issueNo)
4444
return updatedIssue.data.length ? updatedIssue.data[0] : null;
4545
}
4646

47+
function formatCommitMessage(fullCommitMessage, numberOfLines) {
48+
if (!numberOfLines || numberOfLines < 0) {
49+
return fullCommitMessage;
50+
}
51+
return fullCommitMessage
52+
.split('\n')
53+
.slice(0, numberOfLines)
54+
.join('\n')
55+
.trim();
56+
}
57+
4758
module.exports = {
4859
createIssue,
4960
getLastOpenPendingIssue,
5061
updateLastOpenPendingIssue,
62+
formatCommitMessage,
5163
};

test/testData.js

Lines changed: 278 additions & 2 deletions
Large diffs are not rendered by default.

test/util.spec.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
'use strict';
2+
3+
const utils = require('../src/utils');
4+
5+
const {
6+
unreleasedCommitsData1,
7+
} = require('./testData');
8+
9+
test('Should limit commit message to only first line', async () => {
10+
const formattedCommitMessage = utils.formatCommitMessage(unreleasedCommitsData1[0].commit.message, 1);
11+
expect(formattedCommitMessage).toStrictEqual('variable changed');
12+
});
13+
14+
test('Should return full commit message', async () => {
15+
const formattedCommitMessage = utils.formatCommitMessage(unreleasedCommitsData1[0].commit.message, 0);
16+
expect(formattedCommitMessage).toStrictEqual(`variable changed
17+
18+
19+
this message has multiple lines
20+
21+
`);
22+
});
23+
24+
test('Should trim start and end of commit message while limiting the lines', async () => {
25+
const formattedCommitMessage = utils.formatCommitMessage(unreleasedCommitsData1[0].commit.message, 5);
26+
expect(formattedCommitMessage).toStrictEqual(`variable changed
27+
28+
29+
this message has multiple lines`);
30+
});

0 commit comments

Comments
 (0)