diff --git a/__tests__/comment.test.ts b/__tests__/comment.test.ts index b57f2d9..578c3ff 100644 --- a/__tests__/comment.test.ts +++ b/__tests__/comment.test.ts @@ -67,6 +67,14 @@ it("updateComment", async () => { comment_id: 456, body: "\nhello there" }); + + expect( + await updateComment(octokit, repo, 456, "hello there", "TypeA", "\nhello there") + ).toBeUndefined(); + expect(octokit.issues.updateComment).toBeCalledWith({ + comment_id: 456, + body: "\nhello there\nhello there" + }); }); it("createComment", async () => { const octokit = { diff --git a/action.yml b/action.yml index 571964f..eb083b3 100644 --- a/action.yml +++ b/action.yml @@ -5,6 +5,9 @@ inputs: header: description: "Header to determine if the comment is to be updated, not shown on screen" required: false + append: + description: "Indicate if new comment messages should be appended to previous comment message" + required: false message: description: "comment message" required: true diff --git a/lib/comment.js b/lib/comment.js index 2e4aabb..1fd06d5 100644 --- a/lib/comment.js +++ b/lib/comment.js @@ -20,9 +20,9 @@ function findPreviousComment(octokit, repo, issue_number, header) { }); } exports.findPreviousComment = findPreviousComment; -function updateComment(octokit, repo, comment_id, body, header) { +function updateComment(octokit, repo, comment_id, body, header, previousBody) { return __awaiter(this, void 0, void 0, function* () { - yield octokit.issues.updateComment(Object.assign(Object.assign({}, repo), { comment_id, body: `${headerComment(header)}\n${body}` })); + yield octokit.issues.updateComment(Object.assign(Object.assign({}, repo), { comment_id, body: previousBody ? `${previousBody}\n${body}` : `${headerComment(header)}\n${body}` })); }); } exports.updateComment = updateComment; diff --git a/lib/main.js b/lib/main.js index 913c4aa..79facda 100644 --- a/lib/main.js +++ b/lib/main.js @@ -20,9 +20,9 @@ const core = __importStar(require("@actions/core")); const github_1 = require("@actions/github"); const comment_1 = require("./comment"); function run() { - var _a, _b, _c; + var _a, _b; return __awaiter(this, void 0, void 0, function* () { - const number = ((_c = (_b = (_a = github_1.context) === null || _a === void 0 ? void 0 : _a.payload) === null || _b === void 0 ? void 0 : _b.pull_request) === null || _c === void 0 ? void 0 : _c.number) || + const number = ((_b = (_a = github_1.context === null || github_1.context === void 0 ? void 0 : github_1.context.payload) === null || _a === void 0 ? void 0 : _a.pull_request) === null || _b === void 0 ? void 0 : _b.number) || +core.getInput("number", { required: false }); if (isNaN(number) || number < 1) { core.info("no numbers given: skip step"); @@ -32,11 +32,17 @@ function run() { const repo = github_1.context.repo; const body = core.getInput("message", { required: true }); const header = core.getInput("header", { required: false }) || ""; + const append = core.getInput("append", { required: false }) || 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, header); if (previous) { - yield comment_1.updateComment(octokit, repo, previous.id, body, header); + if (append) { + yield comment_1.updateComment(octokit, repo, previous.id, body, header, previous.body); + } + else { + yield comment_1.updateComment(octokit, repo, previous.id, body, header); + } } else { yield comment_1.createComment(octokit, repo, number, body, header); diff --git a/src/comment.ts b/src/comment.ts index 7544984..b311a86 100644 --- a/src/comment.ts +++ b/src/comment.ts @@ -10,11 +10,11 @@ export async function findPreviousComment(octokit, repo, issue_number, header) { const h = headerComment(header); return comments.find(comment => comment.body.startsWith(h)); } -export async function updateComment(octokit, repo, comment_id, body, header) { +export async function updateComment(octokit, repo, comment_id, body, header, previousBody?) { await octokit.issues.updateComment({ ...repo, comment_id, - body: `${headerComment(header)}\n${body}` + body: previousBody ? `${previousBody}\n${body}` : `${headerComment(header)}\n${body}` }); } export async function createComment(octokit, repo, issue_number, body, header) { diff --git a/src/main.ts b/src/main.ts index ed8e2f4..c83c9ff 100644 --- a/src/main.ts +++ b/src/main.ts @@ -15,11 +15,16 @@ async function run() { const repo = context.repo; const body = core.getInput("message", { required: true }); const header = core.getInput("header", { required: false }) || ""; + const append = core.getInput("append", { required: false }) || false; const githubToken = core.getInput("GITHUB_TOKEN", { required: true }); const octokit = new GitHub(githubToken); const previous = await findPreviousComment(octokit, repo, number, header); if (previous) { - await updateComment(octokit, repo, previous.id, body, header); + if (append) { + await updateComment(octokit, repo, previous.id, body, header, previous.body); + } else { + await updateComment(octokit, repo, previous.id, body, header); + } } else { await createComment(octokit, repo, number, body, header); }