diff --git a/README.md b/README.md index 372741d..ad786d2 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,15 @@ with: This is message from push. ``` +### Read comment from a file + +```yaml +uses: marocchino/sticky-pull-request-comment@v1 +with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + path: path-to-comment-contents.txt +``` + ## Development Install the dependencies diff --git a/action.yml b/action.yml index eb083b3..4aec2f6 100644 --- a/action.yml +++ b/action.yml @@ -10,7 +10,10 @@ inputs: required: false message: description: "comment message" - required: true + required: false + path: + description: "path to file containing comment message" + required: false number: description: "pull request number for push event" required: false diff --git a/lib/main.js b/lib/main.js index 79facda..724e15a 100644 --- a/lib/main.js +++ b/lib/main.js @@ -19,6 +19,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); const core = __importStar(require("@actions/core")); const github_1 = require("@actions/github"); const comment_1 = require("./comment"); +const fs_1 = require("fs"); function run() { var _a, _b; return __awaiter(this, void 0, void 0, function* () { @@ -30,12 +31,23 @@ function run() { } try { const repo = github_1.context.repo; - const body = core.getInput("message", { required: true }); + const message = core.getInput("message", { required: false }); + const path = core.getInput("path", { required: false }); 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 (!message && !path) { + throw { message: 'Either message or path input is required' }; + } + let body; + if (path) { + body = fs_1.readFileSync(path); + } + else { + body = message; + } if (previous) { if (append) { yield comment_1.updateComment(octokit, repo, previous.id, body, header, previous.body); diff --git a/src/main.ts b/src/main.ts index c83c9ff..8a8b036 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,6 +1,7 @@ import * as core from "@actions/core"; import { context, GitHub } from "@actions/github"; import { findPreviousComment, createComment, updateComment } from "./comment"; +import { readFileSync } from 'fs'; async function run() { const number = @@ -13,12 +14,26 @@ async function run() { try { const repo = context.repo; - const body = core.getInput("message", { required: true }); + const message = core.getInput("message", { required: false }); + const path = core.getInput("path", { required: false }); 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 (!message && !path) { + throw { message: 'Either message or path input is required' }; + } + + let body; + + if (path) { + body = readFileSync(path); + } else { + body = message; + } + if (previous) { if (append) { await updateComment(octokit, repo, previous.id, body, header, previous.body);