Skip to content

Commit

Permalink
Merge pull request #52 from marocchino/custom-comment-header
Browse files Browse the repository at this point in the history
feat: add ability to set custom header
  • Loading branch information
marocchino authored Feb 4, 2020
2 parents ee22346 + 033d20d commit 682de67
Show file tree
Hide file tree
Showing 8 changed files with 72 additions and 27 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/comment_on_pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,7 @@ jobs:
- uses: ./
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
header: FromPR
message: |
Test ${{ github.sha }} is successfully ended.
This is message from PR.
1 change: 1 addition & 0 deletions .github/workflows/comment_on_push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ jobs:
number: ${{ steps.finder.outputs.pr }}
message: |
Test ${{ github.sha }} is successfully ended.
This is message from push.
45 changes: 38 additions & 7 deletions __tests__/comment.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 () => {
Expand All @@ -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 = {
Expand All @@ -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"
});
});
3 changes: 3 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
17 changes: 10 additions & 7 deletions lib/comment.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,26 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const HEADER = "<!-- Sticky Pull Request Comment -->";
function findPreviousComment(octokit, repo, issue_number) {
function headerComment(header) {
return `<!-- Sticky Pull Request Comment${header} -->`;
}
function findPreviousComment(octokit, repo, issue_number, header) {
return __awaiter(this, void 0, void 0, function* () {
const { data: comments } = yield octokit.issues.listComments(Object.assign(Object.assign({}, repo), { issue_number }));
return comments.find(comment => comment.body.startsWith(HEADER));
const h = headerComment(header);
return comments.find(comment => comment.body.startsWith(h));
});
}
exports.findPreviousComment = findPreviousComment;
function updateComment(octokit, repo, comment_id, body) {
function updateComment(octokit, repo, comment_id, body, header) {
return __awaiter(this, void 0, void 0, function* () {
yield octokit.issues.updateComment(Object.assign(Object.assign({}, repo), { comment_id, body: `${HEADER}\n${body}` }));
yield octokit.issues.updateComment(Object.assign(Object.assign({}, repo), { comment_id, body: `${headerComment(header)}\n${body}` }));
});
}
exports.updateComment = updateComment;
function createComment(octokit, repo, issue_number, body) {
function createComment(octokit, repo, issue_number, body, header) {
return __awaiter(this, void 0, void 0, function* () {
yield octokit.issues.createComment(Object.assign(Object.assign({}, repo), { issue_number, body: `${HEADER}\n${body}` }));
yield octokit.issues.createComment(Object.assign(Object.assign({}, repo), { issue_number, body: `${headerComment(header)}\n${body}` }));
});
}
exports.createComment = createComment;
7 changes: 4 additions & 3 deletions lib/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,15 @@ function run() {
try {
const repo = github_1.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_1.GitHub(githubToken);
const previous = yield comment_1.findPreviousComment(octokit, repo, number);
const previous = yield comment_1.findPreviousComment(octokit, repo, number, header);
if (previous) {
yield comment_1.updateComment(octokit, repo, previous.id, body);
yield comment_1.updateComment(octokit, repo, previous.id, body, header);
}
else {
yield comment_1.createComment(octokit, repo, number, body);
yield comment_1.createComment(octokit, repo, number, body, header);
}
}
catch ({ message }) {
Expand Down
17 changes: 10 additions & 7 deletions src/comment.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
const HEADER = "<!-- Sticky Pull Request Comment -->";
function headerComment(header) {
return `<!-- Sticky Pull Request Comment${header} -->`;
}

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}`
});
}
7 changes: 4 additions & 3 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 682de67

Please sign in to comment.