mirror of
https://github.com/mshick/add-pr-comment.git
synced 2025-12-31 14:20:32 +11:00
Adding the possibility to auto refresh the sticky comment position... (#66)
* Allow to refresh the uniq comment position to be the latest one in the PR feed. * Allow to refresh the uniq comment position to be the latest one in the PR feed. * Removed "auto-" from func name + now defaulting new option to "false"
This commit is contained in:
parent
a65df5f64f
commit
fe6766b6b0
10 changed files with 2641 additions and 2572 deletions
29
README.md
29
README.md
|
|
@ -62,20 +62,21 @@ jobs:
|
|||
|
||||
## Configuration options
|
||||
|
||||
| Input | Location | Description | Required | Default |
|
||||
| ----------------- | -------- | ---------------------------------------------------------------------------------------------------- | -------- | ------------------ |
|
||||
| message | with | The message you'd like displayed, supports Markdown and all valid Unicode characters. | maybe | |
|
||||
| message-path | with | Path to a message you'd like displayed. Will be read and displayed just like a normal message. | maybe | |
|
||||
| message-success | with | A message override, printed in case of success. | no | |
|
||||
| message-failure | with | A message override, printed in case of failure. | no | |
|
||||
| message-cancelled | with | A message override, printed in case of cancelled. | no | |
|
||||
| status | with | Required if you want to use message status overrides. | no | {{ job.status }} |
|
||||
| repo-token | with | Valid GitHub token, either the temporary token GitHub provides or a personal access token. | no | {{ github.token }} |
|
||||
| message-id | with | Message id to use when searching existing comments. If found, updates the existing (sticky comment). | no | |
|
||||
| allow-repeats | with | Boolean flag to allow identical messages to be posted each time this action is run. | no | false |
|
||||
| proxy-url | with | String for your proxy service URL if you'd like this to work with fork-based PRs. | no | |
|
||||
| issue | with | Optional issue number override. | no | |
|
||||
| GITHUB_TOKEN | env | Valid GitHub token, can alternatively be defined in the env. | no | |
|
||||
| Input | Location | Description | Required | Default |
|
||||
| ------------------------ | -------- | ---------------------------------------------------------------------------------------------------- | -------- | ------------------ |
|
||||
| message | with | The message you'd like displayed, supports Markdown and all valid Unicode characters. | maybe | |
|
||||
| message-path | with | Path to a message you'd like displayed. Will be read and displayed just like a normal message. | maybe | |
|
||||
| message-success | with | A message override, printed in case of success. | no | |
|
||||
| message-failure | with | A message override, printed in case of failure. | no | |
|
||||
| message-cancelled | with | A message override, printed in case of cancelled. | no | |
|
||||
| status | with | Required if you want to use message status overrides. | no | {{ job.status }} |
|
||||
| repo-token | with | Valid GitHub token, either the temporary token GitHub provides or a personal access token. | no | {{ github.token }} |
|
||||
| message-id | with | Message id to use when searching existing comments. If found, updates the existing (sticky comment). | no | |
|
||||
| refresh-message-position | with | Should the sticky message be the last one in the PR's feed. | no | false |
|
||||
| allow-repeats | with | Boolean flag to allow identical messages to be posted each time this action is run. | no | false |
|
||||
| proxy-url | with | String for your proxy service URL if you'd like this to work with fork-based PRs. | no | |
|
||||
| issue | with | Optional issue number override. | no | |
|
||||
| GITHUB_TOKEN | env | Valid GitHub token, can alternatively be defined in the env. | no | |
|
||||
|
||||
## Advanced Uses
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,10 @@ inputs:
|
|||
description: "An optional id to use for this message."
|
||||
default: "add-pr-comment"
|
||||
required: false
|
||||
refresh-message-position:
|
||||
description: "If a message with the same id, this option allow to refresh the position of the message to be the last one posted."
|
||||
default: "false"
|
||||
required: false
|
||||
repo-token:
|
||||
description: "A GitHub token for API access. Defaults to {{ github.token }}."
|
||||
default: "${{ github.token }}"
|
||||
|
|
|
|||
2530
dist/index.js
vendored
2530
dist/index.js
vendored
File diff suppressed because one or more lines are too long
2
dist/index.js.map
vendored
2
dist/index.js.map
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +1,6 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.createComment = exports.updateComment = exports.getExistingCommentId = void 0;
|
||||
exports.createComment = exports.deleteComment = exports.updateComment = exports.getExistingCommentId = void 0;
|
||||
async function getExistingCommentId(octokit, owner, repo, issueNumber, messageId) {
|
||||
const parameters = {
|
||||
owner,
|
||||
|
|
@ -31,6 +31,16 @@ async function updateComment(octokit, owner, repo, existingCommentId, body) {
|
|||
return updatedComment.data;
|
||||
}
|
||||
exports.updateComment = updateComment;
|
||||
async function deleteComment(octokit, owner, repo, existingCommentId, body) {
|
||||
const deletedComment = await octokit.rest.issues.deleteComment({
|
||||
comment_id: existingCommentId,
|
||||
owner,
|
||||
repo,
|
||||
body,
|
||||
});
|
||||
return deletedComment.data;
|
||||
}
|
||||
exports.deleteComment = deleteComment;
|
||||
async function createComment(octokit, owner, repo, issueNumber, body) {
|
||||
const createdComment = await octokit.rest.issues.createComment({
|
||||
issue_number: issueNumber,
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ async function getInputs() {
|
|||
const issue = core.getInput('issue', { required: false });
|
||||
const proxyUrl = core.getInput('proxy-url', { required: false }).replace(/\/$/, '');
|
||||
const allowRepeats = core.getInput('allow-repeats', { required: true }) === 'true';
|
||||
const refreshMessagePosition = core.getInput('refresh-message-position', { required: false }) === 'true';
|
||||
if (messageInput && messagePath) {
|
||||
throw new Error('must specify only one, message or message-path');
|
||||
}
|
||||
|
|
@ -73,6 +74,7 @@ async function getInputs() {
|
|||
}
|
||||
const [owner, repo] = repoFullName.split('/');
|
||||
return {
|
||||
refreshMessagePosition,
|
||||
allowRepeats,
|
||||
message,
|
||||
messageId: `<!-- ${messageId} -->`,
|
||||
|
|
|
|||
10
lib/main.js
10
lib/main.js
|
|
@ -31,7 +31,7 @@ const issues_1 = require("./issues");
|
|||
const proxy_1 = require("./proxy");
|
||||
const run = async () => {
|
||||
try {
|
||||
const { allowRepeats, message, messageId, repoToken, proxyUrl, issue, pullRequestNumber, commitSha, repo, owner, } = await (0, config_1.getInputs)();
|
||||
const { allowRepeats, message, messageId, refreshMessagePosition, repoToken, proxyUrl, issue, pullRequestNumber, commitSha, repo, owner, } = await (0, config_1.getInputs)();
|
||||
const octokit = github.getOctokit(repoToken);
|
||||
let issueNumber;
|
||||
if (issue) {
|
||||
|
|
@ -72,7 +72,13 @@ const run = async () => {
|
|||
core.setOutput(existingCommentId ? 'comment-updated' : 'comment-created', 'true');
|
||||
}
|
||||
else if (existingCommentId) {
|
||||
comment = await (0, comments_1.updateComment)(octokit, owner, repo, existingCommentId, body);
|
||||
if (refreshMessagePosition) {
|
||||
await (0, comments_1.deleteComment)(octokit, owner, repo, existingCommentId, body);
|
||||
comment = await (0, comments_1.createComment)(octokit, owner, repo, issueNumber, body);
|
||||
}
|
||||
else {
|
||||
comment = await (0, comments_1.updateComment)(octokit, owner, repo, existingCommentId, body);
|
||||
}
|
||||
core.setOutput('comment-updated', 'true');
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -53,6 +53,23 @@ export async function updateComment(
|
|||
return updatedComment.data
|
||||
}
|
||||
|
||||
export async function deleteComment(
|
||||
octokit: InstanceType<typeof GitHub>,
|
||||
owner: string,
|
||||
repo: string,
|
||||
existingCommentId: number,
|
||||
body: string,
|
||||
): Promise<CreateIssueCommentResponseData> {
|
||||
const deletedComment = await octokit.rest.issues.deleteComment({
|
||||
comment_id: existingCommentId,
|
||||
owner,
|
||||
repo,
|
||||
body,
|
||||
})
|
||||
|
||||
return deletedComment.data
|
||||
}
|
||||
|
||||
export async function createComment(
|
||||
octokit: InstanceType<typeof GitHub>,
|
||||
owner: string,
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import * as github from '@actions/github'
|
|||
import fs from 'node:fs/promises'
|
||||
|
||||
interface Inputs {
|
||||
refreshMessagePosition: boolean
|
||||
allowRepeats: boolean
|
||||
message?: string
|
||||
messageId: string
|
||||
|
|
@ -30,6 +31,8 @@ export async function getInputs(): Promise<Inputs> {
|
|||
const issue = core.getInput('issue', { required: false })
|
||||
const proxyUrl = core.getInput('proxy-url', { required: false }).replace(/\/$/, '')
|
||||
const allowRepeats = core.getInput('allow-repeats', { required: true }) === 'true'
|
||||
const refreshMessagePosition =
|
||||
core.getInput('refresh-message-position', { required: false }) === 'true'
|
||||
|
||||
if (messageInput && messagePath) {
|
||||
throw new Error('must specify only one, message or message-path')
|
||||
|
|
@ -74,6 +77,7 @@ export async function getInputs(): Promise<Inputs> {
|
|||
const [owner, repo] = repoFullName.split('/')
|
||||
|
||||
return {
|
||||
refreshMessagePosition,
|
||||
allowRepeats,
|
||||
message,
|
||||
messageId: `<!-- ${messageId} -->`,
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import {
|
|||
CreateIssueCommentResponseData,
|
||||
getExistingCommentId,
|
||||
updateComment,
|
||||
deleteComment,
|
||||
} from './comments'
|
||||
import { getInputs } from './config'
|
||||
import { getIssueNumberFromCommitPullsList } from './issues'
|
||||
|
|
@ -16,6 +17,7 @@ const run = async (): Promise<void> => {
|
|||
allowRepeats,
|
||||
message,
|
||||
messageId,
|
||||
refreshMessagePosition,
|
||||
repoToken,
|
||||
proxyUrl,
|
||||
issue,
|
||||
|
|
@ -74,7 +76,12 @@ const run = async (): Promise<void> => {
|
|||
})
|
||||
core.setOutput(existingCommentId ? 'comment-updated' : 'comment-created', 'true')
|
||||
} else if (existingCommentId) {
|
||||
comment = await updateComment(octokit, owner, repo, existingCommentId, body)
|
||||
if (refreshMessagePosition) {
|
||||
await deleteComment(octokit, owner, repo, existingCommentId, body)
|
||||
comment = await createComment(octokit, owner, repo, issueNumber, body)
|
||||
} else {
|
||||
comment = await updateComment(octokit, owner, repo, existingCommentId, body)
|
||||
}
|
||||
core.setOutput('comment-updated', 'true')
|
||||
} else {
|
||||
comment = await createComment(octokit, owner, repo, issueNumber, body)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue