From 1cfcb23af5b9fbff1496ec5f0400d54f498c3209 Mon Sep 17 00:00:00 2001 From: marocchino Date: Sat, 23 Nov 2019 10:47:42 +0900 Subject: [PATCH] build: comment header --- lib/comment.js | 31 +++++++++++++++++++++++++++++++ lib/main.js | 19 +++++++++---------- 2 files changed, 40 insertions(+), 10 deletions(-) create mode 100644 lib/comment.js diff --git a/lib/comment.js b/lib/comment.js new file mode 100644 index 0000000..e287e6b --- /dev/null +++ b/lib/comment.js @@ -0,0 +1,31 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const HEADER = ""; +function findPreviousComment(octokit, repo, issue_number) { + 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)); + }); +} +exports.findPreviousComment = findPreviousComment; +function updateComment(octokit, repo, comment_id, body) { + return __awaiter(this, void 0, void 0, function* () { + yield octokit.issues.updateComment(Object.assign(Object.assign({}, repo), { comment_id, body: `${HEADER}\n${body}` })); + }); +} +exports.updateComment = updateComment; +function createComment(octokit, repo, issue_number, body) { + return __awaiter(this, void 0, void 0, function* () { + yield octokit.issues.createComment(Object.assign(Object.assign({}, repo), { issue_number, body: `${HEADER}\n${body}` })); + }); +} +exports.createComment = createComment; diff --git a/lib/main.js b/lib/main.js index 3f28aa8..c6d36b6 100644 --- a/lib/main.js +++ b/lib/main.js @@ -18,31 +18,30 @@ var __importStar = (this && this.__importStar) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); const core = __importStar(require("@actions/core")); const github_1 = require("@actions/github"); +const comment_1 = require("./comment"); function run() { var _a, _b, _c; return __awaiter(this, void 0, void 0, function* () { try { const repo = github_1.context.repo; - const issue_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; - if (!issue_number) { + 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 body = core.getInput("message"); + const githubToken = core.getInput("GITHUB_TOKEN"); + if (!number) { core.setFailed("This action only works for pull_request"); return; } - const body = core.getInput("message"); - const githubToken = core.getInput("GITHUB_TOKEN"); if (!body || !githubToken) { core.setFailed("invalid input: please check your workflow"); return; } const octokit = new github_1.GitHub(githubToken); - const { data: comments } = yield octokit.issues.listComments(Object.assign(Object.assign({}, repo), { issue_number })); - const myComment = comments.find(comment => comment.user.login === "github-actions[bot]"); - if (myComment) { - yield octokit.issues.updateComment(Object.assign(Object.assign({}, repo), { comment_id: myComment.id, body })); + const previous = yield comment_1.findPreviousComment(octokit, repo, number); + if (previous) { + yield comment_1.updateComment(octokit, repo, previous.id, body); } else { - yield octokit.issues.createComment(Object.assign(Object.assign({}, repo), { issue_number, - body })); + yield comment_1.createComment(octokit, repo, number, body); } } catch ({ message }) {