mirror of
https://github.com/marocchino/sticky-pull-request-comment.git
synced 2025-12-12 11:41:14 +00:00
feat: add ability to set custom header
This commit is contained in:
parent
ee22346016
commit
c873eaf14f
4 changed files with 56 additions and 18 deletions
|
|
@ -11,23 +11,40 @@ it("findPreviousComment", async () => {
|
|||
},
|
||||
body: "<!-- Sticky Pull Request Comment -->\nprevious message"
|
||||
};
|
||||
const otherComment = {
|
||||
const commentWithCustomHeader = {
|
||||
user: {
|
||||
login: "some-user"
|
||||
login: "github-actions[bot]"
|
||||
},
|
||||
body: "lgtm"
|
||||
body: "<!-- Sticky Pull Request CommentTypeA -->\nprevious message"
|
||||
};
|
||||
const otherComments = [
|
||||
{
|
||||
user: {
|
||||
login: "some-user"
|
||||
},
|
||||
body: "lgtm"
|
||||
},
|
||||
{
|
||||
user: {
|
||||
login: "github-actions[bot]"
|
||||
},
|
||||
body: "<!-- Sticky Pull Request CommentTypeB -->\nprevious message"
|
||||
}
|
||||
];
|
||||
const octokit = {
|
||||
issues: {
|
||||
listComments: jest.fn(() =>
|
||||
Promise.resolve({
|
||||
data: [otherComment, comment]
|
||||
data: [commentWithCustomHeader, comment, ...otherComments]
|
||||
})
|
||||
)
|
||||
}
|
||||
};
|
||||
|
||||
expect(await findPreviousComment(octokit, repo, 123)).toBe(comment);
|
||||
expect(await findPreviousComment(octokit, repo, 123, "")).toBe(comment);
|
||||
expect(await findPreviousComment(octokit, repo, 123, "TypeA")).toBe(
|
||||
commentWithCustomHeader
|
||||
);
|
||||
expect(octokit.issues.listComments).toBeCalledWith({ issue_number: 123 });
|
||||
});
|
||||
it("updateComment", async () => {
|
||||
|
|
@ -37,12 +54,19 @@ it("updateComment", async () => {
|
|||
}
|
||||
};
|
||||
expect(
|
||||
await updateComment(octokit, repo, 456, "hello there")
|
||||
await updateComment(octokit, repo, 456, "hello there", "")
|
||||
).toBeUndefined();
|
||||
expect(octokit.issues.updateComment).toBeCalledWith({
|
||||
comment_id: 456,
|
||||
body: "<!-- Sticky Pull Request Comment -->\nhello there"
|
||||
});
|
||||
expect(
|
||||
await updateComment(octokit, repo, 456, "hello there", "TypeA")
|
||||
).toBeUndefined();
|
||||
expect(octokit.issues.updateComment).toBeCalledWith({
|
||||
comment_id: 456,
|
||||
body: "<!-- Sticky Pull Request CommentTypeA -->\nhello there"
|
||||
});
|
||||
});
|
||||
it("createComment", async () => {
|
||||
const octokit = {
|
||||
|
|
@ -51,10 +75,17 @@ it("createComment", async () => {
|
|||
}
|
||||
};
|
||||
expect(
|
||||
await createComment(octokit, repo, 456, "hello there")
|
||||
await createComment(octokit, repo, 456, "hello there", "")
|
||||
).toBeUndefined();
|
||||
expect(octokit.issues.createComment).toBeCalledWith({
|
||||
issue_number: 456,
|
||||
body: "<!-- Sticky Pull Request Comment -->\nhello there"
|
||||
});
|
||||
expect(
|
||||
await createComment(octokit, repo, 456, "hello there", "TypeA")
|
||||
).toBeUndefined();
|
||||
expect(octokit.issues.createComment).toBeCalledWith({
|
||||
issue_number: 456,
|
||||
body: "<!-- Sticky Pull Request CommentTypeA -->\nhello there"
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@ name: "Sticky Pull Request Comment"
|
|||
description: "Create comment on pull request, if exists update that comment."
|
||||
author: "marocchino"
|
||||
inputs:
|
||||
header:
|
||||
description: "Header to determine if the comment is to be updated, not shown on screen"
|
||||
required: false
|
||||
message:
|
||||
description: "comment message"
|
||||
required: true
|
||||
|
|
|
|||
|
|
@ -1,23 +1,26 @@
|
|||
const HEADER = "<!-- Sticky Pull Request Comment -->";
|
||||
|
||||
export async function findPreviousComment(octokit, repo, issue_number) {
|
||||
export async function findPreviousComment(octokit, repo, issue_number, header) {
|
||||
const { data: comments } = await octokit.issues.listComments({
|
||||
...repo,
|
||||
issue_number
|
||||
});
|
||||
return comments.find(comment => comment.body.startsWith(HEADER));
|
||||
const h = headerComment(header);
|
||||
return comments.find(comment => comment.body.startsWith(h));
|
||||
}
|
||||
export async function updateComment(octokit, repo, comment_id, body) {
|
||||
export async function updateComment(octokit, repo, comment_id, body, header) {
|
||||
await octokit.issues.updateComment({
|
||||
...repo,
|
||||
comment_id,
|
||||
body: `${HEADER}\n${body}`
|
||||
body: `${headerComment(header)}\n${body}`
|
||||
});
|
||||
}
|
||||
export async function createComment(octokit, repo, issue_number, body) {
|
||||
export async function createComment(octokit, repo, issue_number, body, header) {
|
||||
await octokit.issues.createComment({
|
||||
...repo,
|
||||
issue_number,
|
||||
body: `${HEADER}\n${body}`
|
||||
body: `${headerComment(header)}\n${body}`
|
||||
});
|
||||
}
|
||||
|
||||
function headerComment(header) {
|
||||
return `<!-- Sticky Pull Request Comment${header} -->`;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,13 +14,14 @@ async function run() {
|
|||
try {
|
||||
const repo = context.repo;
|
||||
const body = core.getInput("message", { required: true });
|
||||
const header = core.getInput("header", { required: false }) || "";
|
||||
const githubToken = core.getInput("GITHUB_TOKEN", { required: true });
|
||||
const octokit = new GitHub(githubToken);
|
||||
const previous = await findPreviousComment(octokit, repo, number);
|
||||
const previous = await findPreviousComment(octokit, repo, number, header);
|
||||
if (previous) {
|
||||
await updateComment(octokit, repo, previous.id, body);
|
||||
await updateComment(octokit, repo, previous.id, body, header);
|
||||
} else {
|
||||
await createComment(octokit, repo, number, body);
|
||||
await createComment(octokit, repo, number, body, header);
|
||||
}
|
||||
} catch ({ message }) {
|
||||
core.setFailed(message);
|
||||
|
|
|
|||
Loading…
Reference in a new issue