Skip to content

Commit

Permalink
Merge pull request #29 from peter-evans/dev
Browse files Browse the repository at this point in the history
Deprecate reaction-type in favour of reactions
  • Loading branch information
Peter Evans authored and GitHub committed Apr 17, 2020
2 parents 4dad946 + 5005703 commit c1e8fb2
Show file tree
Hide file tree
Showing 4 changed files with 146 additions and 70 deletions.
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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

Expand Down Expand Up @@ -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
Expand Down
4 changes: 3 additions & 1 deletion action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
99 changes: 68 additions & 31 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand All @@ -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)}`);

Expand All @@ -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;
}

Expand All @@ -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";
}
Expand All @@ -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
Expand All @@ -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'.");
Expand Down
99 changes: 68 additions & 31 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand All @@ -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)}`);

Expand All @@ -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;
}

Expand All @@ -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";
}
Expand All @@ -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
Expand All @@ -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'.");
Expand Down

0 comments on commit c1e8fb2

Please sign in to comment.