Compare commits

...

10 commits

Author SHA1 Message Date
dependabot[bot]
bc14ce351a
chore(deps-dev): bump typescript from 5.2.2 to 5.3.3 (#326)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.2.2 to 5.3.3.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v5.2.2...v5.3.3)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-17 08:04:54 +01:00
Térence Hollander
fabd468d3a
Merge pull request #307 from thollander/feat/node-20
feat: node 20 version support
2024-02-17 07:38:47 +01:00
Térence Hollander
cb9f4be786 chore: bump to v2.5.0 2024-02-17 07:36:47 +01:00
Térence Hollander
2f6921097b feat: node 20 version support 2023-10-21 09:33:31 +02:00
dependabot[bot]
9d67388b9a
chore(deps-dev): bump @vercel/ncc from 0.38.0 to 0.38.1 (#304)
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.38.0 to 0.38.1.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.38.0...0.38.1)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 09:24:13 +02:00
Térence Hollander
88b3c3f072 docs: fix wrong indent 2023-10-21 09:22:38 +02:00
Térence Hollander
1d3973dc4b chore: fix build and lint 2023-10-21 09:19:13 +02:00
Térence Hollander
c9581a4c85 chore: bump to v2.4.3 2023-10-21 09:17:13 +02:00
Térence Hollander
5c591f7f55
feat(output): add some action outputs (#297)
- id, body, html_url
2023-10-21 09:16:27 +02:00
dependabot[bot]
363c6f6eae
chore(deps-dev): bump @vercel/ncc from 0.36.1 to 0.38.0 (#283)
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.36.1 to 0.38.0.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.36.1...0.38.0)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-08 11:33:18 +02:00
10 changed files with 204 additions and 60 deletions

View file

@ -15,6 +15,7 @@ jobs:
- name: Comment PR with message - name: Comment PR with message
uses: ./ uses: ./
id: nrt_message
with: with:
message: | message: |
Current branch is `${{ github.head_ref }}`. Current branch is `${{ github.head_ref }}`.
@ -55,5 +56,11 @@ jobs:
comment_tag: nrt_create_if_not_exists comment_tag: nrt_create_if_not_exists
create_if_not_exists: false 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 - name: (AFTER) Setup test cases
run: rm /tmp/foobar.txt run: rm /tmp/foobar.txt

2
.nvmrc
View file

@ -1 +1 @@
16.13.1 20.8.1

View file

@ -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 | | `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 | | `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 output
```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 ## Permissions
Depending on the permissions granted to your token, you may lack some rights. Depending on the permissions granted to your token, you may lack some rights.

View file

@ -25,6 +25,6 @@ inputs:
description: 'Whether a comment should be created even if comment_tag is not found.' description: 'Whether a comment should be created even if comment_tag is not found.'
default: 'true' default: 'true'
runs: runs:
using: 'node16' using: 'node20'
main: 'lib/index.js' main: 'lib/index.js'
post: 'lib/cleanup/index.js' post: 'lib/cleanup/index.js'

View file

@ -558,7 +558,7 @@ class OidcClient {
.catch(error => { .catch(error => {
throw new Error(`Failed to get ID Token. \n throw new Error(`Failed to get ID Token. \n
Error Code : ${error.statusCode}\n Error Code : ${error.statusCode}\n
Error Message: ${error.result.message}`); Error Message: ${error.message}`);
}); });
const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;
if (!id_token) { if (!id_token) {

View file

@ -558,7 +558,7 @@ class OidcClient {
.catch(error => { .catch(error => {
throw new Error(`Failed to get ID Token. \n throw new Error(`Failed to get ID Token. \n
Error Code : ${error.statusCode}\n Error Code : ${error.statusCode}\n
Error Message: ${error.result.message}`); Error Message: ${error.message}`);
}); });
const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;
if (!id_token) { if (!id_token) {
@ -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 const comment_tag_pattern = comment_tag
? `<!-- thollander/actions-comment-pull-request "${comment_tag}" -->` ? `<!-- thollander/actions-comment-pull-request "${comment_tag}" -->`
: null; : null;
@ -9598,25 +9632,23 @@ async function run() {
} }
if (comment) { if (comment) {
if (mode === 'upsert') { if (mode === 'upsert') {
await octokit.rest.issues.updateComment({ await updateComment({
...context.repo, ...context.repo,
comment_id: comment.id, comment_id: comment.id,
body, body,
}); });
await addReactions(comment.id, reactions);
return; return;
} }
else if (mode === 'recreate') { else if (mode === 'recreate') {
await octokit.rest.issues.deleteComment({ await deleteComment({
...context.repo, ...context.repo,
comment_id: comment.id, comment_id: comment.id,
}); });
const { data: newComment } = await octokit.rest.issues.createComment({ await createComment({
...context.repo, ...context.repo,
issue_number, issue_number,
body, body,
}); });
await addReactions(newComment.id, reactions);
return; return;
} }
else if (mode === 'delete') { else if (mode === 'delete') {
@ -9635,12 +9667,11 @@ async function run() {
return; return;
} }
} }
const { data: comment } = await octokit.rest.issues.createComment({ await createComment({
...context.repo, ...context.repo,
issue_number, issue_number,
body, body,
}); });
await addReactions(comment.id, reactions);
} }
catch (error) { catch (error) {
if (error instanceof Error) { if (error instanceof Error) {

86
package-lock.json generated
View file

@ -1,12 +1,12 @@
{ {
"name": "actions-comment-pull-request", "name": "actions-comment-pull-request",
"version": "2.4.2", "version": "2.5.0",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "actions-comment-pull-request", "name": "actions-comment-pull-request",
"version": "2.4.2", "version": "2.5.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@actions/core": "^1.10.1", "@actions/core": "^1.10.1",
@ -16,11 +16,11 @@
"@actions/tool-cache": "^2.0.1" "@actions/tool-cache": "^2.0.1"
}, },
"devDependencies": { "devDependencies": {
"@tsconfig/node16": "^16.1.1", "@tsconfig/node20": "^20.1.2",
"@types/node": "^18.16.2", "@types/node": "^20.8.1",
"@vercel/ncc": "^0.36.1", "@vercel/ncc": "^0.38.1",
"prettier": "^3.0.3", "prettier": "^3.0.3",
"typescript": "^5.2.2" "typescript": "^5.3.3"
} }
}, },
"node_modules/@actions/core": { "node_modules/@actions/core": {
@ -187,22 +187,25 @@
"@octokit/openapi-types": "^12.11.0" "@octokit/openapi-types": "^12.11.0"
} }
}, },
"node_modules/@tsconfig/node16": { "node_modules/@tsconfig/node20": {
"version": "16.1.1", "version": "20.1.2",
"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-16.1.1.tgz", "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.2.tgz",
"integrity": "sha512-+pio93ejHN4nINX4pXqfnR/fPLRtJBaT4ORaa5RH0Oc1zoYmo2B2koG+M328CQhHKn1Wj6FcOxCDFXAot9NhvA==", "integrity": "sha512-madaWq2k+LYMEhmcp0fs+OGaLFk0OenpHa4gmI4VEmCKX4PJntQ6fnnGADVFrVkBj0wIdAlQnK/MrlYTHsa1gQ==",
"dev": true "dev": true
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "18.16.2", "version": "20.8.7",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.2.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz",
"integrity": "sha512-GQW/JL/5Fz/0I8RpeBG9lKp0+aNcXEaVL71c0D2Q0QHDTFvlYKT7an0onCUXj85anv7b4/WesqdfchLc0jtsCg==", "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==",
"dev": true "dev": true,
"dependencies": {
"undici-types": "~5.25.1"
}
}, },
"node_modules/@vercel/ncc": { "node_modules/@vercel/ncc": {
"version": "0.36.1", "version": "0.38.1",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.36.1.tgz", "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.1.tgz",
"integrity": "sha512-S4cL7Taa9yb5qbv+6wLgiKVZ03Qfkc4jGRuiUQMQ8HGBD5pcNRnHeYM33zBvJE4/zJGjJJ8GScB+WmTsn9mORw==", "integrity": "sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==",
"dev": true, "dev": true,
"bin": { "bin": {
"ncc": "dist/ncc/cli.js" "ncc": "dist/ncc/cli.js"
@ -290,9 +293,9 @@
} }
}, },
"node_modules/typescript": { "node_modules/typescript": {
"version": "5.2.2", "version": "5.3.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
"integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
"dev": true, "dev": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
@ -302,6 +305,12 @@
"node": ">=14.17" "node": ">=14.17"
} }
}, },
"node_modules/undici-types": {
"version": "5.25.3",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz",
"integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==",
"dev": true
},
"node_modules/universal-user-agent": { "node_modules/universal-user-agent": {
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
@ -492,22 +501,25 @@
"@octokit/openapi-types": "^12.11.0" "@octokit/openapi-types": "^12.11.0"
} }
}, },
"@tsconfig/node16": { "@tsconfig/node20": {
"version": "16.1.1", "version": "20.1.2",
"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-16.1.1.tgz", "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.2.tgz",
"integrity": "sha512-+pio93ejHN4nINX4pXqfnR/fPLRtJBaT4ORaa5RH0Oc1zoYmo2B2koG+M328CQhHKn1Wj6FcOxCDFXAot9NhvA==", "integrity": "sha512-madaWq2k+LYMEhmcp0fs+OGaLFk0OenpHa4gmI4VEmCKX4PJntQ6fnnGADVFrVkBj0wIdAlQnK/MrlYTHsa1gQ==",
"dev": true "dev": true
}, },
"@types/node": { "@types/node": {
"version": "18.16.2", "version": "20.8.7",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.2.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz",
"integrity": "sha512-GQW/JL/5Fz/0I8RpeBG9lKp0+aNcXEaVL71c0D2Q0QHDTFvlYKT7an0onCUXj85anv7b4/WesqdfchLc0jtsCg==", "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==",
"dev": true "dev": true,
"requires": {
"undici-types": "~5.25.1"
}
}, },
"@vercel/ncc": { "@vercel/ncc": {
"version": "0.36.1", "version": "0.38.1",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.36.1.tgz", "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.1.tgz",
"integrity": "sha512-S4cL7Taa9yb5qbv+6wLgiKVZ03Qfkc4jGRuiUQMQ8HGBD5pcNRnHeYM33zBvJE4/zJGjJJ8GScB+WmTsn9mORw==", "integrity": "sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==",
"dev": true "dev": true
}, },
"before-after-hook": { "before-after-hook": {
@ -563,9 +575,15 @@
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
}, },
"typescript": { "typescript": {
"version": "5.2.2", "version": "5.3.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
"integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
"dev": true
},
"undici-types": {
"version": "5.25.3",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz",
"integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==",
"dev": true "dev": true
}, },
"universal-user-agent": { "universal-user-agent": {

View file

@ -1,6 +1,6 @@
{ {
"name": "actions-comment-pull-request", "name": "actions-comment-pull-request",
"version": "2.4.2", "version": "2.5.0",
"description": "GitHub action for commenting pull-request", "description": "GitHub action for commenting pull-request",
"main": "lib/main.js", "main": "lib/main.js",
"scripts": { "scripts": {
@ -34,10 +34,10 @@
"@actions/tool-cache": "^2.0.1" "@actions/tool-cache": "^2.0.1"
}, },
"devDependencies": { "devDependencies": {
"@tsconfig/node16": "^16.1.1", "@tsconfig/node20": "^20.1.2",
"@types/node": "^18.16.2", "@types/node": "^20.8.1",
"@vercel/ncc": "^0.36.1", "@vercel/ncc": "^0.38.1",
"prettier": "^3.0.3", "prettier": "^3.0.3",
"typescript": "^5.2.2" "typescript": "^5.3.3"
} }
} }

View file

@ -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 const comment_tag_pattern = comment_tag
? `<!-- thollander/actions-comment-pull-request "${comment_tag}" -->` ? `<!-- thollander/actions-comment-pull-request "${comment_tag}" -->`
: null; : null;
@ -75,26 +139,23 @@ async function run() {
if (comment) { if (comment) {
if (mode === 'upsert') { if (mode === 'upsert') {
await octokit.rest.issues.updateComment({ await updateComment({
...context.repo, ...context.repo,
comment_id: comment.id, comment_id: comment.id,
body, body,
}); });
await addReactions(comment.id, reactions);
return; return;
} else if (mode === 'recreate') { } else if (mode === 'recreate') {
await octokit.rest.issues.deleteComment({ await deleteComment({
...context.repo, ...context.repo,
comment_id: comment.id, comment_id: comment.id,
}); });
const { data: newComment } = await octokit.rest.issues.createComment({ await createComment({
...context.repo, ...context.repo,
issue_number, issue_number,
body, body,
}); });
await addReactions(newComment.id, reactions);
return; return;
} else if (mode === 'delete') { } else if (mode === 'delete') {
core.debug('Registering this comment to be deleted.'); core.debug('Registering this comment to be deleted.');
@ -112,13 +173,11 @@ async function run() {
} }
} }
const { data: comment } = await octokit.rest.issues.createComment({ await createComment({
...context.repo, ...context.repo,
issue_number, issue_number,
body, body,
}); });
await addReactions(comment.id, reactions);
} catch (error) { } catch (error) {
if (error instanceof Error) { if (error instanceof Error) {
core.setFailed(error.message); core.setFailed(error.message);

View file

@ -1,5 +1,5 @@
{ {
"extends": "@tsconfig/node16/tsconfig.json", "extends": "@tsconfig/node20/tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "./lib", "outDir": "./lib",
"rootDir": "./src" "rootDir": "./src"