Merge pull request #29 from peter-evans/dev

Deprecate reaction-type in favour of reactions
This commit is contained in:
Peter Evans 2020-04-17 16:38:20 +09:00 committed by GitHub
commit c1e8fb2113
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 146 additions and 70 deletions

View File

@ -20,7 +20,7 @@ This action was created to help facilitate a GitHub Actions "ChatOps" solution i
- Created by [create-or-update-comment][1]
[1]: https://github.com/peter-evans/create-or-update-comment
reaction-type: '+1'
reactions: '+1'
```
### Update a comment
@ -32,17 +32,17 @@ This action was created to help facilitate a GitHub Actions "ChatOps" solution i
comment-id: 557858210
body: |
**Edit:** Some additional info
reaction-type: eyes
reactions: eyes
```
### Add a comment reaction
### Add comment reactions
```yml
- name: Add reaction
- name: Add reactions
uses: peter-evans/create-or-update-comment@v1
with:
comment-id: 557858210
reaction-type: heart
reactions: heart, hooray, laugh
```
### Action inputs
@ -55,7 +55,7 @@ This action was created to help facilitate a GitHub Actions "ChatOps" solution i
| `comment-id` | The id of the comment to update. | |
| `body` | The comment body. | |
| `edit-mode` | The mode when updating a comment, `replace` or `append`. | `append` |
| `reaction-type` | The reaction to add to the comment. (`+1`, `-1`, `laugh`, `confused`, `heart`, `hooray`, `rocket`, `eyes`) | |
| `reactions` | A comma separated list of reactions to add to the comment. (`+1`, `-1`, `laugh`, `confused`, `heart`, `hooray`, `rocket`, `eyes`) | |
#### Outputs
@ -92,7 +92,7 @@ jobs:
uses: peter-evans/create-or-update-comment@v1
with:
comment-id: ${{ github.event.comment.id }}
reaction-type: eyes
reactions: eyes
```
### Accessing issues and comments in other repositories

View File

@ -15,7 +15,9 @@ inputs:
edit-mode:
description: 'The mode when updating a comment, "replace" or "append".'
reaction-type:
description: 'The reaction to add to the comment.'
description: 'Deprecated in favour of `reactions`'
reactions:
description: 'A comma separated list of reactions to add to the comment.'
outputs:
comment-id:
description: 'The id of the created comment'

99
dist/index.js vendored
View File

@ -506,22 +506,57 @@ const REACTION_TYPES = [
"heart",
"hooray",
"rocket",
"eyes"
"eyes",
];
async function addReaction(octokit, repo, comment_id, reactionType) {
if (REACTION_TYPES.includes(reactionType)) {
await octokit.reactions.createForIssueComment({
owner: repo[0],
repo: repo[1],
comment_id: comment_id,
content: reactionType
});
core.info(`Set '${reactionType}' reaction on comment.`);
} else {
core.setFailed("Invalid 'reaction-type'.");
return;
async function addReactions(octokit, repo, comment_id, reactions) {
let ReactionsSet = [
...new Set(
reactions
.replace(/\s/g, "")
.split(",")
.filter((item) => {
if (!REACTION_TYPES.includes(item)) {
core.info(`Skipping invalid reaction '${item}'.`);
return false;
}
return true;
})
),
];
if (!ReactionsSet) {
core.setFailed(
`No valid reactions are contained in '${reactions}'.`
);
return false;
}
let results = await Promise.allSettled(
ReactionsSet.map(async (item) => {
await octokit.reactions.createForIssueComment({
owner: repo[0],
repo: repo[1],
comment_id: comment_id,
content: item,
});
core.info(`Setting '${item}' reaction on comment.`);
})
);
for (let i = 0, l = results.length; i < l; i++) {
if (results[i].status === "fulfilled") {
core.info(
`Added reaction '${ReactionsSet[i]}' to comment id '${comment_id}'.`
);
} else if (results[i].status === "rejected") {
core.info(
`Adding reaction '${ReactionsSet[i]}' to comment id '${comment_id}' failed with ${results[i].reason}.`
);
}
}
ReactionsSet = undefined;
results = undefined;
}
async function run() {
@ -533,7 +568,9 @@ async function run() {
commentId: core.getInput("comment-id"),
body: core.getInput("body"),
editMode: core.getInput("edit-mode"),
reactionType: core.getInput("reaction-type")
reactions: core.getInput("reactions")
? core.getInput("reactions")
: core.getInput("reaction-type"),
};
core.debug(`Inputs: ${inspect(inputs)}`);
@ -551,11 +588,11 @@ async function run() {
}
const octokit = new github.GitHub(inputs.token);
if (inputs.commentId) {
// Edit a comment
if (!inputs.body && !inputs.reactionType) {
core.setFailed("Missing either comment 'body' or 'reaction-type'.");
if (!inputs.body && !inputs.reactions) {
core.setFailed("Missing either comment 'body' or 'reactions'.");
return;
}
@ -566,7 +603,7 @@ async function run() {
const { data: comment } = await octokit.issues.getComment({
owner: repo[0],
repo: repo[1],
comment_id: inputs.commentId
comment_id: inputs.commentId,
});
commentBody = comment.body + "\n";
}
@ -577,16 +614,15 @@ async function run() {
owner: repo[0],
repo: repo[1],
comment_id: inputs.commentId,
body: commentBody
body: commentBody,
});
core.info(`Updated comment id '${inputs.commentId}'.`);
core.setOutput('comment-id', inputs.commentId);
core.setOutput("comment-id", inputs.commentId);
}
// Set a comment reaction
if (inputs.reactionType) {
await addReaction(octokit, repo, inputs.commentId, inputs.reactionType);
core.info(`Added reaction '${inputs.reactionType}' to comment id '${inputs.commentId}'.`);
// Set comment reactions
if (inputs.reactions) {
await addReactions(octokit, repo, inputs.commentId, inputs.reactions);
}
} else if (inputs.issueNumber) {
// Create a comment
@ -598,15 +634,16 @@ async function run() {
owner: repo[0],
repo: repo[1],
issue_number: inputs.issueNumber,
body: inputs.body
body: inputs.body,
});
core.info(`Created comment id '${comment.id}' on issue '${inputs.issueNumber}'.`);
core.setOutput('comment-id', comment.id);
core.info(
`Created comment id '${comment.id}' on issue '${inputs.issueNumber}'.`
);
core.setOutput("comment-id", comment.id);
// Set a comment reaction
if (inputs.reactionType) {
await addReaction(octokit, repo, comment.id, inputs.reactionType);
core.info(`Added reaction '${inputs.reactionType}' to comment id '${comment.id}'.`);
// Set comment reactions
if (inputs.reactions) {
await addReactions(octokit, repo, comment.id, inputs.reactions);
}
} else {
core.setFailed("Missing either 'issue-number' or 'comment-id'.");

View File

@ -10,22 +10,57 @@ const REACTION_TYPES = [
"heart",
"hooray",
"rocket",
"eyes"
"eyes",
];
async function addReaction(octokit, repo, comment_id, reactionType) {
if (REACTION_TYPES.includes(reactionType)) {
await octokit.reactions.createForIssueComment({
owner: repo[0],
repo: repo[1],
comment_id: comment_id,
content: reactionType
});
core.info(`Set '${reactionType}' reaction on comment.`);
} else {
core.setFailed("Invalid 'reaction-type'.");
return;
async function addReactions(octokit, repo, comment_id, reactions) {
let ReactionsSet = [
...new Set(
reactions
.replace(/\s/g, "")
.split(",")
.filter((item) => {
if (!REACTION_TYPES.includes(item)) {
core.info(`Skipping invalid reaction '${item}'.`);
return false;
}
return true;
})
),
];
if (!ReactionsSet) {
core.setFailed(
`No valid reactions are contained in '${reactions}'.`
);
return false;
}
let results = await Promise.allSettled(
ReactionsSet.map(async (item) => {
await octokit.reactions.createForIssueComment({
owner: repo[0],
repo: repo[1],
comment_id: comment_id,
content: item,
});
core.info(`Setting '${item}' reaction on comment.`);
})
);
for (let i = 0, l = results.length; i < l; i++) {
if (results[i].status === "fulfilled") {
core.info(
`Added reaction '${ReactionsSet[i]}' to comment id '${comment_id}'.`
);
} else if (results[i].status === "rejected") {
core.info(
`Adding reaction '${ReactionsSet[i]}' to comment id '${comment_id}' failed with ${results[i].reason}.`
);
}
}
ReactionsSet = undefined;
results = undefined;
}
async function run() {
@ -37,7 +72,9 @@ async function run() {
commentId: core.getInput("comment-id"),
body: core.getInput("body"),
editMode: core.getInput("edit-mode"),
reactionType: core.getInput("reaction-type")
reactions: core.getInput("reactions")
? core.getInput("reactions")
: core.getInput("reaction-type"),
};
core.debug(`Inputs: ${inspect(inputs)}`);
@ -55,11 +92,11 @@ async function run() {
}
const octokit = new github.GitHub(inputs.token);
if (inputs.commentId) {
// Edit a comment
if (!inputs.body && !inputs.reactionType) {
core.setFailed("Missing either comment 'body' or 'reaction-type'.");
if (!inputs.body && !inputs.reactions) {
core.setFailed("Missing either comment 'body' or 'reactions'.");
return;
}
@ -70,7 +107,7 @@ async function run() {
const { data: comment } = await octokit.issues.getComment({
owner: repo[0],
repo: repo[1],
comment_id: inputs.commentId
comment_id: inputs.commentId,
});
commentBody = comment.body + "\n";
}
@ -81,16 +118,15 @@ async function run() {
owner: repo[0],
repo: repo[1],
comment_id: inputs.commentId,
body: commentBody
body: commentBody,
});
core.info(`Updated comment id '${inputs.commentId}'.`);
core.setOutput('comment-id', inputs.commentId);
core.setOutput("comment-id", inputs.commentId);
}
// Set a comment reaction
if (inputs.reactionType) {
await addReaction(octokit, repo, inputs.commentId, inputs.reactionType);
core.info(`Added reaction '${inputs.reactionType}' to comment id '${inputs.commentId}'.`);
// Set comment reactions
if (inputs.reactions) {
await addReactions(octokit, repo, inputs.commentId, inputs.reactions);
}
} else if (inputs.issueNumber) {
// Create a comment
@ -102,15 +138,16 @@ async function run() {
owner: repo[0],
repo: repo[1],
issue_number: inputs.issueNumber,
body: inputs.body
body: inputs.body,
});
core.info(`Created comment id '${comment.id}' on issue '${inputs.issueNumber}'.`);
core.setOutput('comment-id', comment.id);
core.info(
`Created comment id '${comment.id}' on issue '${inputs.issueNumber}'.`
);
core.setOutput("comment-id", comment.id);
// Set a comment reaction
if (inputs.reactionType) {
await addReaction(octokit, repo, comment.id, inputs.reactionType);
core.info(`Added reaction '${inputs.reactionType}' to comment id '${comment.id}'.`);
// Set comment reactions
if (inputs.reactions) {
await addReactions(octokit, repo, comment.id, inputs.reactions);
}
} else {
core.setFailed("Missing either 'issue-number' or 'comment-id'.");