Compare commits

...

84 Commits

Author SHA1 Message Date
Jonathan Clem c7971c2fc0 1.1.0 2020-05-20 09:53:04 -04:00
Jonathan Clem 7ec2818723 Merge pull request #52 from jasonmacgowan/feature/include-io
Include @actions/io
2020-05-20 09:50:23 -04:00
Jonathan Clem 287e10e610 Remove contributor home directory path from build artifacts 2020-05-20 09:47:59 -04:00
Jason Macgowan b2c461f3a2 Include @actions/io 2020-05-18 15:56:00 -04:00
Jonathan Clem 048309c447 Bump to v1 2020-05-18 14:32:21 -04:00
Jonathan Clem a8704b62a3 Add note about checkout to separate file docs 2020-05-18 12:59:15 -04:00
Jonathan Clem e16145c72e Merge pull request #50 from actions/readme-update
Add step results section to readme
2020-05-18 12:55:07 -04:00
Jonathan Clem dd16c14e71 Move another section in the wrong place 2020-05-18 12:54:07 -04:00
Jonathan Clem 5d33ffc89d Fix step ID in output example 2020-05-18 12:53:18 -04:00
Jonathan Clem adb3d5168d Fix section not moved 2020-05-18 12:52:37 -04:00
Jonathan Clem 181dcc219c Add step results section to readme 2020-05-18 12:51:39 -04:00
Jonathan Clem 6f0504cb03 Merge pull request #45 from tevoinea/patch-1
Add example on how to get the step result
2020-05-18 12:48:21 -04:00
Jonathan Clem d89db5b6f4 s/script/module 2020-05-18 12:41:53 -04:00
Jonathan Clem 52110c52e9 Add a separate file example 2020-05-18 12:38:49 -04:00
Jonathan Clem f498913621 Merge pull request #48 from actions/code-quality
Code quality improvements
2020-05-18 11:34:07 -04:00
Jonathan Clem 58f0ff84d6 Add style:check to ci workflow 2020-05-18 11:33:04 -04:00
Jonathan Clem 3037861304 Add ESLint and Prettier 2020-05-18 11:28:54 -04:00
Jonathan Clem b945d091bf Check in .vscode 2020-05-18 11:27:26 -04:00
Jonathan Clem ca14121875 Merge pull request #47 from actions/users/paquirk/ghesfixes
Bumping actions/core and actions/github dependencies for GHES
2020-05-14 18:08:58 -04:00
PJ Quirk ca6d0aaa59 Fixing exports in generated file 2020-05-14 18:05:57 -04:00
PJ Quirk 5d879b69aa Revert changes to tsc/ncc 2020-05-14 17:16:50 -04:00
Jonathan Clem 1bc9cbef6c Merge pull request #46 from nschonni/patch-1
fix: Example YAML schema to match Actions Docs
2020-05-14 16:22:01 -04:00
PJ Quirk 9a58186a54 Combine build/pack 2020-05-12 15:54:30 -04:00
PJ Quirk 8934ce0ffe Fix pack step and re-run 2020-05-12 15:20:35 -04:00
PJ Quirk 05997a2463 Fix build steps 2020-05-12 15:09:19 -04:00
PJ Quirk 1bc2687309 Bump package versions 2020-05-12 15:08:00 -04:00
Nick Schonning 97fd3f1973 fix: Example YAML schema to match Actions Docs
Both ways should be valid, but the regular nested YAML keys seems to be the format of the regular GitHub Actions docs
2020-05-09 13:09:30 -04:00
Teo Voinea f8e6050e29 Add example on how to get the step result 2020-05-07 18:19:02 -07:00
Jonathan Clem 648bc46b8a Merge pull request #37 from localheinz/fix/three
Fix: README.md
2020-04-20 12:25:29 -04:00
Andreas Möller 1268370776 Fix: README.md 2020-03-27 12:38:18 +01:00
Jonathan Clem 5d03ada4b0 0.9.0 2020-03-24 15:14:05 -04:00
Jonathan Clem 293ee0ca2d Uninstall/reinstall ts-jest 2020-03-24 15:07:44 -04:00
Jonathan Clem 67d29bab15 Merge pull request #36 from actions/bump-dependencies
Uninstall/reinstall Jest (for minimist update)
2020-03-24 15:00:02 -04:00
Jonathan Clem 0baa1791ca Merge pull request #35 from actions/bump-dependencies
Bump outdated npm packages
2020-03-24 14:58:02 -04:00
Jonathan Clem b4fd05ccdf Uninstall/reinstall Jest (for minimist update) 2020-03-24 14:57:31 -04:00
Jonathan Clem 2ccd1edaf4 Update ncc 2020-03-24 14:38:07 -04:00
Jonathan Clem a59996ab35 Update TypeScript 2020-03-24 14:37:22 -04:00
Jonathan Clem 7ca8635cd0 Bump @types/jest 2020-03-24 14:36:26 -04:00
Jonathan Clem 8117de6119 Bump @actions/core 2020-03-24 14:35:48 -04:00
Jonathan Clem 3f4f5a83e8 Merge pull request #34 from actions/dependabot/npm_and_yarn/acorn-6.4.1
Bump acorn from 6.4.0 to 6.4.1
2020-03-24 14:14:58 -04:00
dependabot[bot] 0e2c0d5c7c Bump acorn from 6.4.0 to 6.4.1
Bumps [acorn](https://github.com/acornjs/acorn) from 6.4.0 to 6.4.1.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/6.4.0...6.4.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-03-24 18:11:43 +00:00
Jonathan Clem 0d15461bee Merge pull request #33 from actions/add-core
Add core to execution context
2020-03-24 14:08:04 -04:00
Jonathan Clem e4cc5a8d47 Add core to README 2020-03-24 14:06:45 -04:00
Jonathan Clem dc16f26602 Add core to integration test 2020-03-24 14:02:45 -04:00
Jonathan Clem 8982156783 Add core to the script context 2020-03-24 13:57:27 -04:00
Jonathan Clem 80a5e943b4 v0.8.0 2020-02-28 09:18:07 -05:00
Jonathan Clem 0cb5c91bd3 Update README.md 2020-02-28 09:12:55 -05:00
Jonathan Clem 493b839630 Remove output log 2020-02-28 09:09:06 -05:00
Jonathan Clem 904b439f45 Set output 2020-02-28 09:07:52 -05:00
Jonathan Clem 1e169ae445 Remove result temporarily 2020-02-28 09:06:03 -05:00
Jonathan Clem 62fdca610c Remove log result 2020-02-28 08:54:30 -05:00
Jonathan Clem 26ee3d2d09 Test log result 2020-02-28 08:52:13 -05:00
Jonathan Clem be5d094bf9 Remove async from callAsyncFunction 2020-02-28 08:51:05 -05:00
Jonathan Clem 3758c2b05b Add result log 2020-02-28 08:50:21 -05:00
Jonathan Clem 317a0746d1 Remove core again for now 2020-02-28 08:49:25 -05:00
Jonathan Clem ec171b8961 Use master 2020-02-27 17:53:27 -05:00
Jonathan Clem d73e75dea8 Separate integration workflow 2020-02-27 17:52:43 -05:00
Jonathan Clem 7afad1e364 Add core 2020-02-27 17:43:18 -05:00
Jonathan Clem ebe3cb13e0 Add some test workflows 2020-02-27 17:39:50 -05:00
Jonathan Clem 38e3ffe4c6 Add tests for the AsyncFunction 2020-02-27 17:27:49 -05:00
Jonathan Clem 6eefe48bc9 Update @actions NPM dependencies 2020-02-27 16:52:48 -05:00
Jonathan Clem 5363c89495 v0.6.0 2020-02-25 15:45:01 -05:00
Jonathan Clem b20057aecf Target es2018 2020-02-25 15:42:58 -05:00
Jonathan Clem ebc5283d9c Remove yarn.lock 2020-02-25 15:42:43 -05:00
Jonathan Clem f3c2f2ea28 Bump v0.5.0 2020-02-13 14:17:57 -05:00
Jonathan Clem 8e6ec0efea Add development docs 2020-02-13 14:17:08 -05:00
Jonathan Clem c98effd497 Add README content about github-token 2020-02-13 14:07:32 -05:00
Jonathan Clem e26865c60b Merge pull request #24 from joshmgross/master
Default to the GitHub token
2020-02-13 14:05:12 -05:00
Josh Gross 1d4576cfc1 Default to the GitHub token 2020-01-22 22:26:04 -05:00
Jonathan Clem 70e1324591 Merge pull request #22 from jcansdale/patch-1
Fix example context properties
2020-01-16 10:42:30 -05:00
Jamie Cansdale 45a1478a3c Fix other examples 2020-01-13 01:29:26 +00:00
Jamie Cansdale b57a417097 Use context.issue and context.repo 2020-01-13 01:25:26 +00:00
Jamie Cansdale 966982d0f8 Use fields on context.payload 2020-01-13 00:47:30 +00:00
Jonathan Clem 5bc9a17b5e Merge pull request #19 from francisfuzz/francisfuzz/husky
feat(build): use husky for pre-commit
2020-01-08 17:18:45 -05:00
Jonathan Clem aa2b350b20 Update index.js 2020-01-08 17:13:53 -05:00
Jonathan Clem 49479481d1 Revert dist/index.js to master 2020-01-08 17:13:33 -05:00
Jonathan Clem 173930380c Update index.js 2020-01-08 17:13:09 -05:00
francisfuzz 2df917a7ec reset dist/index.js back to 1daa763e63 2020-01-08 12:51:55 -08:00
francisfuzz e27277ca72 re-commit dist/index.js 2020-01-08 12:44:56 -08:00
francisfuzz ad75d095ea remove dist/index.js 2020-01-08 12:43:34 -08:00
Jonathan Clem f2f148bee6 Merge branch 'master' into francisfuzz/husky 2020-01-08 15:23:21 -05:00
Jonathan Clem 1daa763e63 Merge pull request #20 from actions/typescript
Use TypeScript
2020-01-08 15:22:37 -05:00
Jonathan Clem 2adb4f3620 Use TypeScript 2020-01-08 15:17:10 -05:00
francisfuzz 38e28a96bd feat(build): use husky for pre-commit 2020-01-08 12:14:39 -08:00
17 changed files with 21673 additions and 1054 deletions
+13
View File
@@ -0,0 +1,13 @@
root: true
parser: '@typescript-eslint/parser'
plugins: ['@typescript-eslint']
extends:
- eslint:recommended
- plugin:@typescript-eslint/eslint-recommended
- plugin:@typescript-eslint/recommended
- prettier/@typescript-eslint
rules:
# '@typescript-eslint/explicit-function-return-type': 0
'@typescript-eslint/no-use-before-define':
- 2
- functions: false
+19
View File
@@ -0,0 +1,19 @@
on:
push: {branches: master}
pull_request: {branches: master}
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with: {node-version: 13.x}
- uses: actions/cache@v1
with:
path: ~/.npm
key: ${{runner.os}}-npm-${{hashFiles('**/package-lock.json')}}
restore-keys: ${{runner.os}}-npm-
- run: npm ci
- run: npm run style:check
- run: npm test
+17
View File
@@ -0,0 +1,17 @@
on:
push: {branches: master}
jobs:
integration:
runs-on: ubuntu-latest
steps:
- id: output-set
uses: actions/github-script@master
with:
script: return core.getInput('input-value')
result-encoding: string
input-value: output
- run: |
if [[ "${{steps.output-set.outputs.result}}" != "output" ]]; then
exit 1
fi
+2 -1
View File
@@ -1 +1,2 @@
node_modules /node_modules/
!/.vscode/
+5
View File
@@ -0,0 +1,5 @@
arrowParens: avoid
bracketSpacing: false
semi: false
singleQuote: true
trailingComma: none
+10
View File
@@ -0,0 +1,10 @@
{
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true
},
"files.exclude": {
"**/dist": true,
"**/node_modules": true
}
}
+101 -32
View File
@@ -1,16 +1,18 @@
# github-script # github-script ![.github/workflows/integration.yml](https://github.com/actions/github-script/workflows/.github/workflows/integration.yml/badge.svg?event=push) ![.github/workflows/ci.yml](https://github.com/actions/github-script/workflows/.github/workflows/ci.yml/badge.svg?event=push)
This action makes it easy to quickly write a script in your workflow that This action makes it easy to quickly write a script in your workflow that
uses the GitHub API and the workflow run context. uses the GitHub API and the workflow run context.
In order to use this action, a `script` input is provided. The value of that In order to use this action, a `script` input is provided. The value of that
input should be the body of an asynchronous function call. Two arguments will input should be the body of an asynchronous function call. The following
be provided: arguments will be provided:
- `github` A pre-authenticated - `github` A pre-authenticated
[octokit/rest.js](https://github.com/octokit/rest.js) client [octokit/rest.js](https://github.com/octokit/rest.js) client
- `context` An object containing the [context of the workflow - `context` An object containing the [context of the workflow
run](https://github.com/actions/toolkit/tree/master/packages/github) run](https://github.com/actions/toolkit/tree/master/packages/github)
- `core` A reference to the [@actions/core](https://github.com/actions/toolkit/tree/master/packages/core) package
- `io` A reference to the [@actions/io](https://github.com/actions/toolkit/tree/master/packages/io) package
Since the `script` is just a function body, these values will already be Since the `script` is just a function body, these values will already be
defined, so you don't have to (see examples below). defined, so you don't have to (see examples below).
@@ -19,28 +21,71 @@ See [octokit/rest.js](https://octokit.github.io/rest.js/) for the API client
documentation. documentation.
**Note** This action is still a bit of an experiment—the API may change in **Note** This action is still a bit of an experiment—the API may change in
*future versions. 🙂 future versions. 🙂
## Development
See [development.md](/docs/development.md).
## Reading step results
The return value of the script will be in the step's outputs under the
"result" key.
```yaml
- uses: actions/github-script@v1
id: set-result
with:
script: return "Hello!"
result-encoding: string
- name: Get result
run: echo "${{steps.set-result.outputs.result}}"
```
See ["Result encoding"](#result-encoding) for details on how the encoding of
these outputs can be changed.
## Result encoding
By default, the JSON-encoded return value of the function is set as the "result" in the
output of a github-script step. For some workflows, string encoding is preferred. This option can be set using the
`result-encoding` input:
```yaml
- uses: actions/github-script@v1
id: my-script
with:
github-token: ${{secrets.GITHUB_TOKEN}}
result-encoding: string
script: return "I will be string (not JSON) encoded!"
```
## Examples ## Examples
Note that `github-token` is optional in this action, and the input is there
in case you need to use a non-default token.
By default, github-script will use the token provided to your workflow.
### Comment on an issue ### Comment on an issue
```yaml ```yaml
on: on:
issues: {types: opened} issues:
types: [opened]
jobs: jobs:
comment: comment:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/github-script@0.4.0 - uses: actions/github-script@v1
with: with:
github-token: ${{secrets.GITHUB_TOKEN}} github-token: ${{secrets.GITHUB_TOKEN}}
script: | script: |
github.issues.createComment({ github.issues.createComment({
issue_number: context.issue, issue_number: context.issue.number,
owner: context.owner, owner: context.repo.owner,
repo: context.repo, repo: context.repo.repo,
body: '👋 Thanks for reporting!' body: '👋 Thanks for reporting!'
}) })
``` ```
@@ -49,20 +94,21 @@ jobs:
```yaml ```yaml
on: on:
issues: {types: opened} issues:
types: [opened]
jobs: jobs:
apply-label: apply-label:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/github-script@0.4.0 - uses: actions/github-script@v1
with: with:
github-token: ${{secrets.GITHUB_TOKEN}} github-token: ${{secrets.GITHUB_TOKEN}}
script: | script: |
github.issues.addLabels({ github.issues.addLabels({
issue_number: context.issue, issue_number: context.issue.number,
owner: context.owner, owner: context.repo.owner,
repo: context.repo, repo: context.repo.repo,
labels: ['Triage'] labels: ['Triage']
}) })
``` ```
@@ -76,7 +122,7 @@ jobs:
welcome: welcome:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/github-script@0.4.0 - uses: actions/github-script@v1
with: with:
github-token: ${{secrets.GITHUB_TOKEN}} github-token: ${{secrets.GITHUB_TOKEN}}
script: | script: |
@@ -101,9 +147,9 @@ jobs:
} }
await github.issues.createComment({ await github.issues.createComment({
issue_number: context.issue, issue_number: context.issue.number,
owner: context.owner, owner: context.repo.owner,
repo: context.repo, repo: context.repo.repo,
body: 'Welcome, new contributor!' body: 'Welcome, new contributor!'
}) })
``` ```
@@ -114,14 +160,13 @@ You can use the `github` object to access the Octokit API. For
instance, `github.request` instance, `github.request`
```yaml ```yaml
on: on: pull_request
pull_request
jobs: jobs:
diff: diff:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/github-script@0.4.0 - uses: actions/github-script@v1
with: with:
github-token: ${{secrets.GITHUB_TOKEN}} github-token: ${{secrets.GITHUB_TOKEN}}
script: | script: |
@@ -133,18 +178,42 @@ jobs:
This will print the full diff object in the screen; `result.data` will This will print the full diff object in the screen; `result.data` will
contain the actual diff text. contain the actual diff text.
### Result encoding ### Run a separate file
By default, the JSON-encoded return value of the function is set as the "result" in the
output of a github-script step. For some workflows, string encoding is preferred. This option can be set using the
`result-encoding` input:
If you don't want to inline your entire script that you want to run, you can
use a separate JavaScript module in your repository like so:
```yaml ```yaml
- uses: actions/github-script@0.4.0 on: push
with:
github-token: ${{secrets.GITHUB_TOKEN}} jobs:
result-encoding: string echo-input:
script: | runs-on: ubuntu-latest
return "I will be string (not JSON) encoded!" steps:
- uses: @actions/checkout@v2
- uses: @actions/github-script@v1
with:
script: |
const path = require('path')
const scriptPath = path.resolve('./path/to/script.js')
console.log(require(scriptPath)({context}))
``` ```
And then export a function from your module:
```javascript
module.exports = ({context}) => {
return context.payload.client_payload.value
}
```
You can also use async functions in this manner, as long as you `await` it in
the inline script.
Note that because you can't `require` things like the GitHub context or
Actions Toolkit libraries, you'll want to pass them as arguments to your
external function.
Additionally, you'll want to use the [checkout
action](https://github.com/actions/checkout) to make sure your script file is
available.
+28
View File
@@ -0,0 +1,28 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import {callAsyncFunction} from '../src/async-function'
describe('callAsyncFunction', () => {
test('calls the function with its arguments', async () => {
const result = await callAsyncFunction({foo: 'bar'} as any, 'return foo')
expect(result).toEqual('bar')
})
test('throws on ReferenceError', async () => {
expect.assertions(1)
try {
await callAsyncFunction({} as any, 'proces')
} catch (err) {
expect(err).toBeInstanceOf(ReferenceError)
}
})
test('can access process', async () => {
await callAsyncFunction({} as any, 'process')
})
test('can access console', async () => {
await callAsyncFunction({} as any, 'console')
})
})
+2 -1
View File
@@ -10,7 +10,8 @@ inputs:
required: true required: true
github-token: github-token:
description: The GitHub token used to create an authenticated client description: The GitHub token used to create an authenticated client
required: true default: ${{ github.token }}
required: false
debug: debug:
description: Whether to tell the GitHub client to log details of its requests description: Whether to tell the GitHub client to log details of its requests
default: false default: false
+15382 -631
View File
File diff suppressed because one or more lines are too long
+28
View File
@@ -0,0 +1,28 @@
# Development
## How this action works
This action works by evaluating the user input as the body of an asynchronous
JavaScript function. See [main.ts](/src/main.ts) for details.
## Building
Before the action can be used, it needs to be compiled to JavaScript:
```shell
bash> npm run build
```
It also has a pre-commit hook configured via
[husky](https://www.npmjs.com/package/husky) that should run the build script
before each commit. Additionally, this hook formats code and lints it, as
well.
## Releasing
Releases are done manually, for now:
1. Ensure that the build is up to date with `npm run build`.
1. Bump the [package.json](/package.json#L3) and [package-lock.json](/package-lock.json#L3) version numbers and commit them.
1. Update documentation (including updated version numbers).
1. Tag master with the new version number and create a GitHub release.
+5964 -70
View File
File diff suppressed because it is too large Load Diff
+47 -10
View File
@@ -1,19 +1,56 @@
{ {
"name": "github-script", "name": "github-script",
"version": "0.4.0", "description": "A GitHub action for executing a simple script",
"private": true, "version": "1.1.0",
"main": "dist/index.js",
"scripts": {
"build": "ncc build src/main.js",
"precommit": "npm run build && git add dist/"
},
"author": "GitHub", "author": "GitHub",
"license": "MIT", "license": "MIT",
"main": "dist/index.js",
"private": true,
"scripts": {
"build": "ncc build src/main.ts",
"format:check": "prettier --check src __test__",
"format:write": "prettier --write src __test__",
"lint": "eslint src __test__",
"style:check": "run-p --continue-on-error --aggregate-output format:check lint",
"style:write": "run-p --continue-on-error --aggregate-output format:write lint",
"pre-commit": "run-s style:write test build",
"test": "jest"
},
"husky": {
"hooks": {
"pre-commit": "npm run pre-commit && git add dist/"
}
},
"jest": {
"preset": "ts-jest",
"testEnvironment": "node",
"globals": {
"ts-jest": {
"diagnostics": {
"ignoreCodes": [
"151001"
]
}
}
}
},
"dependencies": { "dependencies": {
"@actions/core": "^1.1.0", "@actions/core": "^1.2.4",
"@actions/github": "^1.1.0" "@actions/github": "^2.2.0",
"@actions/io": "^1.0.2"
}, },
"devDependencies": { "devDependencies": {
"@zeit/ncc": "^0.20.5" "@types/jest": "^25.1.4",
"@typescript-eslint/eslint-plugin": "^2.33.0",
"@typescript-eslint/parser": "^2.33.0",
"@zeit/ncc": "^0.22.0",
"eslint": "^7.0.0",
"eslint-config-prettier": "^6.11.0",
"husky": "^4.2.5",
"jest": "^25.1.0",
"npm-run-all": "^4.1.5",
"prettier": "^2.0.5",
"ts-jest": "^25.2.1",
"typescript": "^3.8.3"
} }
} }
+22
View File
@@ -0,0 +1,22 @@
import * as core from '@actions/core'
import {GitHub} from '@actions/github'
import {Context} from '@actions/github/lib/context'
import * as io from '@actions/io'
const AsyncFunction = Object.getPrototypeOf(async () => null).constructor
type AsyncFunctionArguments = {
context: Context
core: typeof core
github: GitHub
io: typeof io
require: NodeRequire
}
export function callAsyncFunction<T>(
args: AsyncFunctionArguments,
source: string
): Promise<T> {
const fn = new AsyncFunction(...Object.keys(args), source)
return fn(...Object.values(args))
}
+24 -10
View File
@@ -1,23 +1,36 @@
const core = require('@actions/core') import * as core from '@actions/core'
const {GitHub, context} = require('@actions/github') import {context, GitHub} from '@actions/github'
import * as io from '@actions/io'
import {callAsyncFunction} from './async-function'
process.on('unhandledRejection', handleError) process.on('unhandledRejection', handleError)
main().catch(handleError) main().catch(handleError)
async function main() { type Options = {
const AsyncFunction = Object.getPrototypeOf(async () => {}).constructor log?: Console
userAgent?: string
previews?: string[]
}
async function main(): Promise<void> {
const token = core.getInput('github-token', {required: true}) const token = core.getInput('github-token', {required: true})
const debug = core.getInput('debug') const debug = core.getInput('debug')
const userAgent = core.getInput('user-agent') const userAgent = core.getInput('user-agent')
const previews = core.getInput('previews') const previews = core.getInput('previews')
const opts = {}
const opts: Options = {}
if (debug === 'true') opts.log = console if (debug === 'true') opts.log = console
if (userAgent != null) opts.userAgent = userAgent if (userAgent != null) opts.userAgent = userAgent
if (previews != null) opts.previews = previews.split(',') if (previews != null) opts.previews = previews.split(',')
const client = new GitHub(token, opts)
const github = new GitHub(token, opts)
const script = core.getInput('script', {required: true}) const script = core.getInput('script', {required: true})
const fn = new AsyncFunction('require', 'github', 'context', script)
const result = await fn(require, client, context) // Using property/value shorthand on `require` (e.g. `{require}`) causes compilation errors.
const result = await callAsyncFunction(
{require: require, github, context, core, io},
script
)
let encoding = core.getInput('result-encoding') let encoding = core.getInput('result-encoding')
encoding = encoding ? encoding : 'json' encoding = encoding ? encoding : 'json'
@@ -38,7 +51,8 @@ async function main() {
core.setOutput('result', output) core.setOutput('result', output)
} }
function handleError(err) { // eslint-disable-next-line @typescript-eslint/no-explicit-any
function handleError(err: any): void {
console.error(err) console.error(err)
core.setFailed(err.message) core.setFailed(`Unhandled error: ${err}`)
} }
+9
View File
@@ -0,0 +1,9 @@
{
"compilerOptions": {
"target": "es2018",
"moduleResolution": "node",
"strict": true,
"forceConsistentCasingInFileNames": true
},
"exclude": ["__test__"]
}
-299
View File
@@ -1,299 +0,0 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@actions/core@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.1.0.tgz#25c3aff43a20f9c5a04e2a3439898a49ba8d3625"
integrity sha512-KKpo3xzo0Zsikni9tbOsEQkxZBGDsYSJZNkTvmo0gPSXrc98TBOcdTvKwwjitjkjHkreTggWdB1ACiAFVgsuzA==
"@actions/github@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@actions/github/-/github-1.1.0.tgz#06f34e6b0cf07eb2b3641de3e680dbfae6bcd400"
integrity sha512-cHf6PyoNMdei13jEdGPhKprIMFmjVVW/dnM5/9QmQDJ1ZTaGVyezUSCUIC/ySNLRvDUpeFwPYMdThSEJldSbUw==
dependencies:
"@octokit/graphql" "^2.0.1"
"@octokit/rest" "^16.15.0"
"@octokit/endpoint@^5.1.0":
version "5.3.2"
resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-5.3.2.tgz#2deda2d869cac9ba7f370287d55667be2a808d4b"
integrity sha512-gRjteEM9I6f4D8vtwU2iGUTn9RX/AJ0SVXiqBUEuYEWVGGAVjSXdT0oNmghH5lvQNWs8mwt6ZaultuG6yXivNw==
dependencies:
deepmerge "4.0.0"
is-plain-object "^3.0.0"
universal-user-agent "^3.0.0"
url-template "^2.0.8"
"@octokit/graphql@^2.0.1":
version "2.1.3"
resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-2.1.3.tgz#60c058a0ed5fa242eca6f938908d95fd1a2f4b92"
integrity sha512-XoXJqL2ondwdnMIW3wtqJWEwcBfKk37jO/rYkoxNPEVeLBDGsGO1TCWggrAlq3keGt/O+C/7VepXnukUxwt5vA==
dependencies:
"@octokit/request" "^5.0.0"
universal-user-agent "^2.0.3"
"@octokit/request-error@^1.0.1", "@octokit/request-error@^1.0.2":
version "1.0.4"
resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.0.4.tgz#15e1dc22123ba4a9a4391914d80ec1e5303a23be"
integrity sha512-L4JaJDXn8SGT+5G0uX79rZLv0MNJmfGa4vb4vy1NnpjSnWDLJRy6m90udGwvMmavwsStgbv2QNkPzzTCMmL+ig==
dependencies:
deprecation "^2.0.0"
once "^1.4.0"
"@octokit/request@^5.0.0":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.0.2.tgz#59a920451f24811c016ddc507adcc41aafb2dca5"
integrity sha512-z1BQr43g4kOL4ZrIVBMHwi68Yg9VbkRUyuAgqCp1rU3vbYa69+2gIld/+gHclw15bJWQnhqqyEb7h5a5EqgZ0A==
dependencies:
"@octokit/endpoint" "^5.1.0"
"@octokit/request-error" "^1.0.1"
deprecation "^2.0.0"
is-plain-object "^3.0.0"
node-fetch "^2.3.0"
once "^1.4.0"
universal-user-agent "^3.0.0"
"@octokit/rest@^16.15.0":
version "16.28.7"
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.28.7.tgz#a2c2db5b318da84144beba82d19c1a9dbdb1a1fa"
integrity sha512-cznFSLEhh22XD3XeqJw51OLSfyL2fcFKUO+v2Ep9MTAFfFLS1cK1Zwd1yEgQJmJoDnj4/vv3+fGGZweG+xsbIA==
dependencies:
"@octokit/request" "^5.0.0"
"@octokit/request-error" "^1.0.2"
atob-lite "^2.0.0"
before-after-hook "^2.0.0"
btoa-lite "^1.0.0"
deprecation "^2.0.0"
lodash.get "^4.4.2"
lodash.set "^4.3.2"
lodash.uniq "^4.5.0"
octokit-pagination-methods "^1.1.0"
once "^1.4.0"
universal-user-agent "^3.0.0"
url-template "^2.0.8"
atob-lite@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696"
integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=
before-after-hook@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635"
integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==
btoa-lite@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337"
integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc=
cross-spawn@^6.0.0:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
dependencies:
nice-try "^1.0.4"
path-key "^2.0.1"
semver "^5.5.0"
shebang-command "^1.2.0"
which "^1.2.9"
deepmerge@4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.0.0.tgz#3e3110ca29205f120d7cb064960a39c3d2087c09"
integrity sha512-YZ1rOP5+kHor4hMAH+HRQnBQHg+wvS1un1hAOuIcxcBy0hzcUf6Jg2a1w65kpoOUnurOfZbERwjI1TfZxNjcww==
deprecation@^2.0.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
end-of-stream@^1.1.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
dependencies:
once "^1.4.0"
execa@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
dependencies:
cross-spawn "^6.0.0"
get-stream "^4.0.0"
is-stream "^1.1.0"
npm-run-path "^2.0.0"
p-finally "^1.0.0"
signal-exit "^3.0.0"
strip-eof "^1.0.0"
get-stream@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
dependencies:
pump "^3.0.0"
is-plain-object@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928"
integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==
dependencies:
isobject "^4.0.0"
is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
isobject@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0"
integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==
lodash.get@^4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
lodash.set@^4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=
lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
macos-release@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f"
integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==
nice-try@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
node-fetch@^2.3.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
npm-run-path@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
dependencies:
path-key "^2.0.0"
octokit-pagination-methods@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4"
integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==
once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
os-name@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801"
integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==
dependencies:
macos-release "^2.2.0"
windows-release "^3.1.0"
p-finally@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
path-key@^2.0.0, path-key@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
pump@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
dependencies:
end-of-stream "^1.1.0"
once "^1.3.1"
semver@^5.5.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
dependencies:
shebang-regex "^1.0.0"
shebang-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
signal-exit@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
strip-eof@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
universal-user-agent@^2.0.3:
version "2.1.0"
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.1.0.tgz#5abfbcc036a1ba490cb941f8fd68c46d3669e8e4"
integrity sha512-8itiX7G05Tu3mGDTdNY2fB4KJ8MgZLS54RdG6PkkfwMAavrXu1mV/lls/GABx9O3Rw4PnTtasxrvbMQoBYY92Q==
dependencies:
os-name "^3.0.0"
universal-user-agent@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-3.0.0.tgz#4cc88d68097bffd7ac42e3b7c903e7481424b4b9"
integrity sha512-T3siHThqoj5X0benA5H0qcDnrKGXzU8TKoX15x/tQHw1hQBvIEBHjxQ2klizYsqBOO/Q+WuxoQUihadeeqDnoA==
dependencies:
os-name "^3.0.0"
url-template@^2.0.8:
version "2.0.8"
resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21"
integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE=
which@^1.2.9:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
dependencies:
isexe "^2.0.0"
windows-release@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f"
integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==
dependencies:
execa "^1.0.0"
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=