From 40bf395e0ae447ac33928e8d9d1312c104175150 Mon Sep 17 00:00:00 2001 From: Peter Evans <18365890+peter-evans@users.noreply.github.com> Date: Mon, 24 Oct 2022 15:38:52 +0900 Subject: [PATCH] Minor refactor and tests for body-file input --- .github/comment-body-edited.md | 7 +++ .../{multiline-content.md => comment-body.md} | 0 .github/workflows/ci.yml | 15 +++++++ .github/workflows/test-command.yml | 10 +---- README.md | 7 ++- action.yml | 6 +-- dist/index.js | 43 +++++++++---------- index.js | 43 +++++++++---------- 8 files changed, 71 insertions(+), 60 deletions(-) create mode 100644 .github/comment-body-edited.md rename .github/{multiline-content.md => comment-body.md} (100%) diff --git a/.github/comment-body-edited.md b/.github/comment-body-edited.md new file mode 100644 index 0000000..8eb0936 --- /dev/null +++ b/.github/comment-body-edited.md @@ -0,0 +1,7 @@ +This is a multi-line test comment read from a file. +- With GitHub **Markdown** :sparkles: +- Created by [create-or-update-comment][1] + +[1]: https://github.com/peter-evans/create-or-update-comment + +*updated info* diff --git a/.github/multiline-content.md b/.github/comment-body.md similarity index 100% rename from .github/multiline-content.md rename to .github/comment-body.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4a417a5..f201184 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -92,6 +92,21 @@ jobs: comment-id: ${{ steps.couc.outputs.comment-id }} reactions: heart, hooray, laugh + - name: Test create comment from file + uses: ./ + id: couc2 + with: + issue-number: ${{ needs.build.outputs.issue-number }} + body-file: .github/comment-body.md + reactions: '+1' + + - name: Test update comment from file + uses: ./ + with: + comment-id: ${{ steps.couc2.outputs.comment-id }} + body-file: .github/comment-body-edited.md + reactions: eyes + package: if: github.event_name == 'push' && github.ref == 'refs/heads/main' needs: [test] diff --git a/.github/workflows/test-command.yml b/.github/workflows/test-command.yml index ded4a9e..eb5ec6c 100644 --- a/.github/workflows/test-command.yml +++ b/.github/workflows/test-command.yml @@ -61,19 +61,11 @@ jobs: reactions: hooray # Test create with body from file - - id: get-comment-body - run: | - body="$(cat .github/multiline-content.md)" - delimiter="$(openssl rand -hex 8)" - echo "body<<$delimiter" >> $GITHUB_OUTPUT - echo "$body" >> $GITHUB_OUTPUT - echo "$delimiter" >> $GITHUB_OUTPUT - - name: Create comment uses: ./ with: issue-number: 1 - body: ${{ steps.get-comment-body.outputs.body }} + body-file: .github/comment-body.md # Test create from template - name: Render template diff --git a/README.md b/README.md index 405d090..1e0d751 100644 --- a/README.md +++ b/README.md @@ -54,9 +54,8 @@ This action was created to help facilitate a GitHub Actions "ChatOps" solution i | `repository` | The full name of the repository in which to create or update a comment. | Current repository | | `issue-number` | The number of the issue or pull request in which to create a comment. | | | `comment-id` | The id of the comment to update. | | -| `body` | The comment body. | | -| `file` | The path to a file that can be read as `body`. Use either `file` or `body`, but not both. | | -| `fileEncoding` | The encoding of the file provided as `file`. | `utf8` | +| `body` | The comment body. Cannot be used in conjunction with `body-file`. | | +| `body-file` | The path to a file containing the comment body. Cannot be used in conjunction with `body`. | | | `edit-mode` | The mode when updating a comment, `replace` or `append`. | `append` | | `reactions` | A comma separated list of reactions to add to the comment. (`+1`, `-1`, `laugh`, `confused`, `heart`, `hooray`, `rocket`, `eyes`) | | @@ -165,7 +164,7 @@ If required, the create and update steps can be separated for greater control. uses: peter-evans/create-or-update-comment@v2 with: issue-number: 1 - file: 'comment-body.txt' + body-file: 'comment-body.md' ``` ### Using a markdown template diff --git a/action.yml b/action.yml index 4e98fdb..56c6329 100644 --- a/action.yml +++ b/action.yml @@ -11,9 +11,9 @@ inputs: comment-id: description: 'The id of the comment to update.' body: - description: 'The comment body.' - file: - description: 'The path to a file that can be read as `body`. Use either `file` or `body`, but not both.' + description: 'The comment body. Cannot be used in conjunction with `body-file`.' + body-file: + description: 'The path to a file containing the comment body. Cannot be used in conjunction with `body`.' edit-mode: description: 'The mode when updating a comment, "replace" or "append".' reaction-type: diff --git a/dist/index.js b/dist/index.js index aa5e2b7..cbff30b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -9750,6 +9750,16 @@ async function addReactions(octokit, repo, comment_id, reactions) { results = undefined; } +function getBody(inputs) { + if (inputs.body) { + return inputs.body; + } else if (inputs.bodyFile) { + return readFileSync(inputs.bodyFile, 'utf-8'); + } else { + return ''; + } +} + async function run() { try { const inputs = { @@ -9758,8 +9768,7 @@ async function run() { issueNumber: core.getInput("issue-number"), commentId: core.getInput("comment-id"), body: core.getInput("body"), - file: core.getInput("file"), - fileEncoding: core.getInput("file-encoding") || 'utf8', + bodyFile: core.getInput("body-file"), editMode: core.getInput("edit-mode"), reactions: core.getInput("reactions") ? core.getInput("reactions") @@ -9780,29 +9789,29 @@ async function run() { return; } - if (inputs.file && inputs.body) { - core.setFailed("Only one of 'file' or 'body' can be set."); + if (inputs.bodyFile && inputs.body) { + core.setFailed("Only one of 'body' or 'body-file' can be set."); return; } - if (inputs.file) { - if (!existsSync(inputs.file)) { - core.setFailed(`File '${inputs.file}' does not exist.`); + if (inputs.bodyFile) { + if (!existsSync(inputs.bodyFile)) { + core.setFailed(`File '${inputs.bodyFile}' does not exist.`); return; } } + const body = getBody(inputs); + const octokit = github.getOctokit(inputs.token); if (inputs.commentId) { // Edit a comment - if (!inputs.body && !inputs.reactions && !inputs.file) { - core.setFailed("Missing either comment 'body', 'file', or 'reactions'."); + if (!body && !inputs.reactions) { + core.setFailed("Missing comment 'body', 'body-file', or 'reactions'."); return; } - const body = getBodyOrFile(inputs); - if (body) { var commentBody = ""; if (editMode == "append") { @@ -9833,10 +9842,8 @@ async function run() { } } else if (inputs.issueNumber) { // Create a comment - const body = getBodyOrFile(inputs); - if (!body) { - core.setFailed("Missing comment 'body' or 'file'."); + core.setFailed("Missing comment 'body' or 'body-file'."); return; } @@ -9868,14 +9875,6 @@ async function run() { } } -function getBodyOrFile (inputs) { - if (inputs.body) { - return inputs.body; - } else if (inputs.file) { - return readFileSync(inputs.file, inputs.fileEncoding); - } -} - run(); })(); diff --git a/index.js b/index.js index 1017e11..98ebd7a 100644 --- a/index.js +++ b/index.js @@ -64,6 +64,16 @@ async function addReactions(octokit, repo, comment_id, reactions) { results = undefined; } +function getBody(inputs) { + if (inputs.body) { + return inputs.body; + } else if (inputs.bodyFile) { + return readFileSync(inputs.bodyFile, 'utf-8'); + } else { + return ''; + } +} + async function run() { try { const inputs = { @@ -72,8 +82,7 @@ async function run() { issueNumber: core.getInput("issue-number"), commentId: core.getInput("comment-id"), body: core.getInput("body"), - file: core.getInput("file"), - fileEncoding: core.getInput("file-encoding") || 'utf8', + bodyFile: core.getInput("body-file"), editMode: core.getInput("edit-mode"), reactions: core.getInput("reactions") ? core.getInput("reactions") @@ -94,29 +103,29 @@ async function run() { return; } - if (inputs.file && inputs.body) { - core.setFailed("Only one of 'file' or 'body' can be set."); + if (inputs.bodyFile && inputs.body) { + core.setFailed("Only one of 'body' or 'body-file' can be set."); return; } - if (inputs.file) { - if (!existsSync(inputs.file)) { - core.setFailed(`File '${inputs.file}' does not exist.`); + if (inputs.bodyFile) { + if (!existsSync(inputs.bodyFile)) { + core.setFailed(`File '${inputs.bodyFile}' does not exist.`); return; } } + const body = getBody(inputs); + const octokit = github.getOctokit(inputs.token); if (inputs.commentId) { // Edit a comment - if (!inputs.body && !inputs.reactions && !inputs.file) { - core.setFailed("Missing either comment 'body', 'file', or 'reactions'."); + if (!body && !inputs.reactions) { + core.setFailed("Missing comment 'body', 'body-file', or 'reactions'."); return; } - const body = getBodyOrFile(inputs); - if (body) { var commentBody = ""; if (editMode == "append") { @@ -147,10 +156,8 @@ async function run() { } } else if (inputs.issueNumber) { // Create a comment - const body = getBodyOrFile(inputs); - if (!body) { - core.setFailed("Missing comment 'body' or 'file'."); + core.setFailed("Missing comment 'body' or 'body-file'."); return; } @@ -182,12 +189,4 @@ async function run() { } } -function getBodyOrFile (inputs) { - if (inputs.body) { - return inputs.body; - } else if (inputs.file) { - return readFileSync(inputs.file, inputs.fileEncoding); - } -} - run();