Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add actions output variables #297

Merged
merged 1 commit into from Oct 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/workflows/ci.yaml
Expand Up @@ -15,6 +15,7 @@ jobs:

- name: Comment PR with message
uses: ./
id: nrt_message
with:
message: |
Current branch is `${{ github.head_ref }}`.
Expand Down Expand Up @@ -55,5 +56,11 @@ jobs:
comment_tag: nrt_create_if_not_exists
create_if_not_exists: false

- name: Check outputs
run: |
echo "id : ${{ steps.nrt_message.outputs.id }}"
echo "body : ${{ steps.nrt_message.outputs.body }}"
echo "html_url : ${{ steps.nrt_message.outputs.html_url }}"

- name: (AFTER) Setup test cases
run: rm /tmp/foobar.txt
29 changes: 29 additions & 0 deletions README.md
Expand Up @@ -125,6 +125,35 @@ This will delete the comment at the end of the job.
| `mode` | Mode that will be used to update comment (upsert/recreate/delete) | | upsert |
| `create_if_not_exists` | Whether a comment should be created even if `comment_tag` is not found | | true |


## Outputs

### Action outputs

You can get some outputs from this actions :

| Name | Description |
| --- | --- |
| `id` | Comment id that was created or updated |
| `body` | Comment body |
| `html_url` | URL of the comment created or updated |

## Example

```yaml
- name: Comment PR
uses: thollander/actions-comment-pull-request@v2
id: hello
with:
message: |
Hello world ! :wave:
- name: Check outputs
run: |
echo "id : ${{ steps.hello.outputs.id }}"
echo "body : ${{ steps.hello.outputs.body }}"
echo "html_url : ${{ steps.hello.outputs.html_url }}"
```

## Permissions

Depending on the permissions granted to your token, you may lack some rights.
Expand Down
45 changes: 38 additions & 7 deletions lib/index.js
Expand Up @@ -9582,6 +9582,40 @@ async function run() {
});
}));
}
async function createComment({ owner, repo, issue_number, body, }) {
const { data: comment } = await octokit.rest.issues.createComment({
owner,
repo,
issue_number,
body,
});
core.setOutput('id', comment.id);
core.setOutput('body', comment.body);
core.setOutput('html_url', comment.html_url);
await addReactions(comment.id, reactions);
return comment;
}
async function updateComment({ owner, repo, comment_id, body, }) {
const { data: comment } = await octokit.rest.issues.updateComment({
owner,
repo,
comment_id,
body,
});
core.setOutput('id', comment.id);
core.setOutput('body', comment.body);
core.setOutput('html_url', comment.html_url);
await addReactions(comment.id, reactions);
return comment;
}
async function deleteComment({ owner, repo, comment_id }) {
const { data: comment } = await octokit.rest.issues.deleteComment({
owner,
repo,
comment_id,
});
return comment;
}
const comment_tag_pattern = comment_tag
? `<!-- thollander/actions-comment-pull-request "${comment_tag}" -->`
: null;
Expand All @@ -9598,25 +9632,23 @@ async function run() {
}
if (comment) {
if (mode === 'upsert') {
await octokit.rest.issues.updateComment({
await updateComment({
...context.repo,
comment_id: comment.id,
body,
});
await addReactions(comment.id, reactions);
return;
}
else if (mode === 'recreate') {
await octokit.rest.issues.deleteComment({
await deleteComment({
...context.repo,
comment_id: comment.id,
});
const { data: newComment } = await octokit.rest.issues.createComment({
await createComment({
...context.repo,
issue_number,
body,
});
await addReactions(newComment.id, reactions);
return;
}
else if (mode === 'delete') {
Expand All @@ -9635,12 +9667,11 @@ async function run() {
return;
}
}
const { data: comment } = await octokit.rest.issues.createComment({
await createComment({
...context.repo,
issue_number,
body,
});
await addReactions(comment.id, reactions);
}
catch (error) {
if (error instanceof Error) {
Expand Down
77 changes: 68 additions & 9 deletions src/main.ts
Expand Up @@ -55,6 +55,70 @@ async function run() {
);
}

async function createComment({
owner,
repo,
issue_number,
body,
}: {
owner: string;
repo: string;
issue_number: number;
body: string;
}) {
const { data: comment } = await octokit.rest.issues.createComment({
owner,
repo,
issue_number,
body,
});

core.setOutput('id', comment.id);
core.setOutput('body', comment.body);
core.setOutput('html_url', comment.html_url);

await addReactions(comment.id, reactions);

return comment;
}

async function updateComment({
owner,
repo,
comment_id,
body,
}: {
owner: string;
repo: string;
comment_id: number;
body: string;
}) {
const { data: comment } = await octokit.rest.issues.updateComment({
owner,
repo,
comment_id,
body,
});

core.setOutput('id', comment.id);
core.setOutput('body', comment.body);
core.setOutput('html_url', comment.html_url);

await addReactions(comment.id, reactions);

return comment;
}

async function deleteComment({ owner, repo, comment_id }: { owner: string; repo: string; comment_id: number }) {
const { data: comment } = await octokit.rest.issues.deleteComment({
owner,
repo,
comment_id,
});

return comment;
}

const comment_tag_pattern = comment_tag
? `<!-- thollander/actions-comment-pull-request "${comment_tag}" -->`
: null;
Expand All @@ -75,26 +139,23 @@ async function run() {

if (comment) {
if (mode === 'upsert') {
await octokit.rest.issues.updateComment({
await updateComment({
...context.repo,
comment_id: comment.id,
body,
});
await addReactions(comment.id, reactions);
return;
} else if (mode === 'recreate') {
await octokit.rest.issues.deleteComment({
await deleteComment({
...context.repo,
comment_id: comment.id,
});

const { data: newComment } = await octokit.rest.issues.createComment({
await createComment({
...context.repo,
issue_number,
body,
});

await addReactions(newComment.id, reactions);
return;
} else if (mode === 'delete') {
core.debug('Registering this comment to be deleted.');
Expand All @@ -112,13 +173,11 @@ async function run() {
}
}

const { data: comment } = await octokit.rest.issues.createComment({
await createComment({
...context.repo,
issue_number,
body,
});

await addReactions(comment.id, reactions);
} catch (error) {
if (error instanceof Error) {
core.setFailed(error.message);
Expand Down