mirror of
https://github.com/actions/github-script.git
synced 2025-12-08 16:16:21 +00:00
Compare commits
38 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a3e7071a34 | ||
|
|
3858e71d11 | ||
|
|
2b34a689ec | ||
|
|
85e88a66ea | ||
|
|
5cbb702e24 | ||
|
|
1ef7fd09ca | ||
|
|
a49bf6b2cd | ||
|
|
95fb649573 | ||
|
|
2923e50f29 | ||
|
|
b616178d6d | ||
|
|
c758586ea1 | ||
|
|
256da4ea4d | ||
|
|
5ee517dae8 | ||
|
|
fb7e8f7c67 | ||
|
|
4a93ad9f9e | ||
|
|
19e7914023 | ||
|
|
3ede58996d | ||
|
|
01f87b6c01 | ||
|
|
b0e12e725b | ||
|
|
7e12bd7395 | ||
|
|
7e8659dcd4 | ||
|
|
d37f92ff11 | ||
|
|
1f8fc98741 | ||
|
|
f57c84a8e8 | ||
|
|
ade5cea985 | ||
|
|
c1c139b0ab | ||
|
|
3ca4cd5a00 | ||
|
|
83c92d6511 | ||
|
|
c416f56b51 | ||
|
|
75e3a5b35d | ||
|
|
e853490b13 | ||
|
|
f4e5d39c2a | ||
|
|
ddba1b195d | ||
|
|
59cb74c2ee | ||
|
|
5467f2a1ed | ||
|
|
c72dc00003 | ||
|
|
bb407510e7 | ||
|
|
3673bc4c4f |
42
.github/workflows/integration.yml
vendored
42
.github/workflows/integration.yml
vendored
@@ -2,13 +2,15 @@ name: Integration
|
||||
|
||||
on:
|
||||
push: {branches: main}
|
||||
pull_request: {branches: main}
|
||||
|
||||
jobs:
|
||||
integration:
|
||||
test-return:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- id: output-set
|
||||
uses: actions/github-script@main
|
||||
uses: ./
|
||||
with:
|
||||
script: return core.getInput('input-value')
|
||||
result-encoding: string
|
||||
@@ -17,3 +19,39 @@ jobs:
|
||||
if [[ "${{steps.output-set.outputs.result}}" != "output" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
test-relative-require:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- id: output-set
|
||||
uses: ./
|
||||
with:
|
||||
script: return require('./package.json').name
|
||||
result-encoding: string
|
||||
input-value: output
|
||||
- run: |
|
||||
if [[ "${{steps.output-set.outputs.result}}" != "github-script" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
test-npm-require:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/cache@v1
|
||||
with:
|
||||
path: ~/.npm
|
||||
key: ${{runner.os}}-npm-${{hashFiles('**/package-lock.json')}}
|
||||
restore-keys: ${{runner.os}}-npm-
|
||||
- run: npm ci
|
||||
- id: output-set
|
||||
uses: ./
|
||||
with:
|
||||
script: return require('@actions/core/package.json').name
|
||||
result-encoding: string
|
||||
input-value: output
|
||||
- run: |
|
||||
if [[ "${{steps.output-set.outputs.result}}" != "@actions/core" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
2
.licenses/npm/@actions/core.dep.yml
generated
2
.licenses/npm/@actions/core.dep.yml
generated
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "@actions/core"
|
||||
version: 1.2.6
|
||||
version: 1.2.7
|
||||
type: npm
|
||||
summary: Actions core lib
|
||||
homepage: https://github.com/actions/toolkit/tree/main/packages/core
|
||||
|
||||
77
README.md
77
README.md
@@ -12,12 +12,18 @@ input should be the body of an asynchronous function call. The following
|
||||
arguments will be provided:
|
||||
|
||||
- `github` A pre-authenticated
|
||||
[octokit/core.js](https://github.com/octokit/core.js#readme) client with REST endpoints and pagination plugins
|
||||
[octokit/rest.js](https://octokit.github.io/rest.js) client with pagination plugins
|
||||
- `context` An object containing the [context of the workflow
|
||||
run](https://github.com/actions/toolkit/blob/main/packages/github/src/context.ts)
|
||||
- `core` A reference to the [@actions/core](https://github.com/actions/toolkit/tree/main/packages/core) package
|
||||
- `glob` A reference to the [@actions/glob](https://github.com/actions/toolkit/tree/main/packages/glob) package
|
||||
- `io` A reference to the [@actions/io](https://github.com/actions/toolkit/tree/main/packages/io) package
|
||||
- `require` A proxy wrapper around the normal Node.js `require` to enable
|
||||
requiring relative paths (relative to the current working directory) and
|
||||
requiring npm packages installed in the current working directory. If for
|
||||
some reason you need the non-wrapped `require`, there is an escape hatch
|
||||
available: `__original_require__` is the original value of `require` without
|
||||
our wrapping applied.
|
||||
|
||||
Since the `script` is just a function body, these values will already be
|
||||
defined, so you don't have to (see examples below).
|
||||
@@ -38,7 +44,7 @@ The return value of the script will be in the step's outputs under the
|
||||
"result" key.
|
||||
|
||||
```yaml
|
||||
- uses: actions/github-script@v3
|
||||
- uses: actions/github-script@v4
|
||||
id: set-result
|
||||
with:
|
||||
script: return "Hello!"
|
||||
@@ -57,7 +63,7 @@ output of a github-script step. For some workflows, string encoding is preferred
|
||||
`result-encoding` input:
|
||||
|
||||
```yaml
|
||||
- uses: actions/github-script@v3
|
||||
- uses: actions/github-script@v4
|
||||
id: my-script
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
@@ -76,7 +82,7 @@ By default, github-script will use the token provided to your workflow.
|
||||
|
||||
```yaml
|
||||
- name: View context attributes
|
||||
uses: actions/github-script@v3
|
||||
uses: actions/github-script@v4
|
||||
with:
|
||||
script: console.log(context)
|
||||
```
|
||||
@@ -92,7 +98,7 @@ jobs:
|
||||
comment:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/github-script@v3
|
||||
- uses: actions/github-script@v4
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
@@ -115,7 +121,7 @@ jobs:
|
||||
apply-label:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/github-script@v3
|
||||
- uses: actions/github-script@v4
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
@@ -136,7 +142,7 @@ jobs:
|
||||
welcome:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/github-script@v3
|
||||
- uses: actions/github-script@v4
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
@@ -180,7 +186,7 @@ jobs:
|
||||
diff:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/github-script@v3
|
||||
- uses: actions/github-script@v4
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
@@ -205,7 +211,7 @@ jobs:
|
||||
list-issues:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/github-script@v3
|
||||
- uses: actions/github-script@v4
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
@@ -240,15 +246,13 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/github-script@v3
|
||||
- uses: actions/github-script@v4
|
||||
with:
|
||||
script: |
|
||||
const script = require(`${process.env.GITHUB_WORKSPACE}/path/to/script.js`)
|
||||
const script = require('./path/to/script.js')
|
||||
console.log(script({github, context}))
|
||||
```
|
||||
|
||||
_Note that the script path given to `require()` must be an **absolute path** in this case, hence using [`GITHUB_WORKSPACE`](https://docs.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables)._
|
||||
|
||||
And then export a function from your module:
|
||||
|
||||
```javascript
|
||||
@@ -257,9 +261,6 @@ module.exports = ({github, context}) => {
|
||||
}
|
||||
```
|
||||
|
||||
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.
|
||||
@@ -268,6 +269,44 @@ Additionally, you'll want to use the [checkout
|
||||
action](https://github.com/actions/checkout) to make sure your script file is
|
||||
available.
|
||||
|
||||
### Run a separate file with an async function
|
||||
|
||||
You can also use async functions in this manner, as long as you `await` it in
|
||||
the inline script.
|
||||
|
||||
In your workflow:
|
||||
|
||||
```yaml
|
||||
on: push
|
||||
|
||||
jobs:
|
||||
echo-input:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/github-script@v4
|
||||
env:
|
||||
SHA: '${{env.parentSHA}}'
|
||||
with:
|
||||
script: |
|
||||
const script = require('./path/to/script.js')
|
||||
await script({github, context, core})
|
||||
```
|
||||
|
||||
And then export an async function from your module:
|
||||
|
||||
```javascript
|
||||
module.exports = async ({github, context, core}) => {
|
||||
const {SHA} = process.env
|
||||
const commit = await github.repos.getCommit({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
ref: `${SHA}`
|
||||
})
|
||||
core.exportVariable('author', commit.data.commit.author.email)
|
||||
}
|
||||
```
|
||||
|
||||
### Use npm packages
|
||||
|
||||
Like importing your own files above, you can also use installed modules:
|
||||
@@ -286,10 +325,10 @@ jobs:
|
||||
- run: npm ci
|
||||
# or one-off:
|
||||
- run: npm install execa
|
||||
- uses: actions/github-script@v3
|
||||
- uses: actions/github-script@v4
|
||||
with:
|
||||
script: |
|
||||
const execa = require(`${process.env.GITHUB_WORKSPACE}/node_modules/execa`)
|
||||
const execa = require('execa')
|
||||
|
||||
const { stdout } = await execa('echo', ['hello', 'world'])
|
||||
|
||||
@@ -307,7 +346,7 @@ jobs:
|
||||
echo-input:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/github-script@v3
|
||||
- uses: actions/github-script@v4
|
||||
env:
|
||||
FIRST_NAME: Mona
|
||||
LAST_NAME: Octocat
|
||||
|
||||
203
dist/index.js
vendored
203
dist/index.js
vendored
@@ -40,7 +40,7 @@ module.exports =
|
||||
/******/ // the startup function
|
||||
/******/ function startup() {
|
||||
/******/ // Load entry module and return exports
|
||||
/******/ return __webpack_require__(720);
|
||||
/******/ return __webpack_require__(272);
|
||||
/******/ };
|
||||
/******/ // initialize runtime
|
||||
/******/ runtime(__webpack_require__);
|
||||
@@ -1667,6 +1667,7 @@ exports.getInput = getInput;
|
||||
*/
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
function setOutput(name, value) {
|
||||
process.stdout.write(os.EOL);
|
||||
command_1.issueCommand('set-output', { name }, value);
|
||||
}
|
||||
exports.setOutput = setOutput;
|
||||
@@ -2424,6 +2425,114 @@ exports.request = request;
|
||||
//# sourceMappingURL=index.js.map
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 272:
|
||||
/***/ (function(__unusedmodule, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
|
||||
// EXTERNAL MODULE: ./node_modules/@actions/core/lib/core.js
|
||||
var core = __webpack_require__(186);
|
||||
|
||||
// EXTERNAL MODULE: ./node_modules/@actions/github/lib/github.js
|
||||
var lib_github = __webpack_require__(438);
|
||||
|
||||
// EXTERNAL MODULE: ./node_modules/@actions/glob/lib/glob.js
|
||||
var glob = __webpack_require__(90);
|
||||
|
||||
// EXTERNAL MODULE: ./node_modules/@actions/io/lib/io.js
|
||||
var io = __webpack_require__(436);
|
||||
|
||||
// CONCATENATED MODULE: ./src/async-function.ts
|
||||
const AsyncFunction = Object.getPrototypeOf(async () => null).constructor;
|
||||
function callAsyncFunction(args, source) {
|
||||
const fn = new AsyncFunction(...Object.keys(args), source);
|
||||
return fn(...Object.values(args));
|
||||
}
|
||||
|
||||
// EXTERNAL MODULE: external "path"
|
||||
var external_path_ = __webpack_require__(622);
|
||||
|
||||
// CONCATENATED MODULE: ./src/wrap-require.ts
|
||||
|
||||
const wrapRequire = new Proxy(require, {
|
||||
apply: (target, thisArg, [moduleID]) => {
|
||||
if (moduleID.startsWith('.')) {
|
||||
moduleID = Object(external_path_.resolve)(moduleID);
|
||||
return target.apply(thisArg, [moduleID]);
|
||||
}
|
||||
const modulePath = target.resolve.apply(thisArg, [
|
||||
moduleID,
|
||||
{
|
||||
// Webpack does not have an escape hatch for getting the actual
|
||||
// module, other than `eval`.
|
||||
paths: [process.cwd()]
|
||||
}
|
||||
]);
|
||||
return target.apply(thisArg, [modulePath]);
|
||||
},
|
||||
get: (target, prop, receiver) => {
|
||||
Reflect.get(target, prop, receiver);
|
||||
}
|
||||
});
|
||||
|
||||
// CONCATENATED MODULE: ./src/main.ts
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
process.on('unhandledRejection', handleError);
|
||||
main().catch(handleError);
|
||||
async function main() {
|
||||
const token = Object(core.getInput)('github-token', { required: true });
|
||||
const debug = Object(core.getInput)('debug');
|
||||
const userAgent = Object(core.getInput)('user-agent');
|
||||
const previews = Object(core.getInput)('previews');
|
||||
const opts = {};
|
||||
if (debug === 'true')
|
||||
opts.log = console;
|
||||
if (userAgent != null)
|
||||
opts.userAgent = userAgent;
|
||||
if (previews != null)
|
||||
opts.previews = previews.split(',');
|
||||
const github = Object(lib_github.getOctokit)(token, opts);
|
||||
const script = Object(core.getInput)('script', { required: true });
|
||||
// Using property/value shorthand on `require` (e.g. `{require}`) causes compilation errors.
|
||||
const result = await callAsyncFunction({
|
||||
require: wrapRequire,
|
||||
__original_require__: require,
|
||||
github,
|
||||
context: lib_github.context,
|
||||
core: core,
|
||||
glob: glob,
|
||||
io: io
|
||||
}, script);
|
||||
let encoding = Object(core.getInput)('result-encoding');
|
||||
encoding = encoding ? encoding : 'json';
|
||||
let output;
|
||||
switch (encoding) {
|
||||
case 'json':
|
||||
output = JSON.stringify(result);
|
||||
break;
|
||||
case 'string':
|
||||
output = String(result);
|
||||
break;
|
||||
default:
|
||||
throw new Error('"result-encoding" must be either "string" or "json"');
|
||||
}
|
||||
Object(core.setOutput)('result', output);
|
||||
}
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
function handleError(err) {
|
||||
console.error(err);
|
||||
Object(core.setFailed)(`Unhandled error: ${err}`);
|
||||
}
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 278:
|
||||
@@ -6094,79 +6203,6 @@ function issueCommand(command, message) {
|
||||
exports.issueCommand = issueCommand;
|
||||
//# sourceMappingURL=file-command.js.map
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 720:
|
||||
/***/ (function(__unusedmodule, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
|
||||
// EXTERNAL MODULE: ./node_modules/@actions/core/lib/core.js
|
||||
var core = __webpack_require__(186);
|
||||
|
||||
// EXTERNAL MODULE: ./node_modules/@actions/github/lib/github.js
|
||||
var lib_github = __webpack_require__(438);
|
||||
|
||||
// EXTERNAL MODULE: ./node_modules/@actions/glob/lib/glob.js
|
||||
var glob = __webpack_require__(90);
|
||||
|
||||
// EXTERNAL MODULE: ./node_modules/@actions/io/lib/io.js
|
||||
var io = __webpack_require__(436);
|
||||
|
||||
// CONCATENATED MODULE: ./src/async-function.ts
|
||||
const AsyncFunction = Object.getPrototypeOf(async () => null).constructor;
|
||||
function callAsyncFunction(args, source) {
|
||||
const fn = new AsyncFunction(...Object.keys(args), source);
|
||||
return fn(...Object.values(args));
|
||||
}
|
||||
|
||||
// CONCATENATED MODULE: ./src/main.ts
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
process.on('unhandledRejection', handleError);
|
||||
main().catch(handleError);
|
||||
async function main() {
|
||||
const token = Object(core.getInput)('github-token', { required: true });
|
||||
const debug = Object(core.getInput)('debug');
|
||||
const userAgent = Object(core.getInput)('user-agent');
|
||||
const previews = Object(core.getInput)('previews');
|
||||
const opts = {};
|
||||
if (debug === 'true')
|
||||
opts.log = console;
|
||||
if (userAgent != null)
|
||||
opts.userAgent = userAgent;
|
||||
if (previews != null)
|
||||
opts.previews = previews.split(',');
|
||||
const github = Object(lib_github.getOctokit)(token, opts);
|
||||
const script = Object(core.getInput)('script', { required: true });
|
||||
// Using property/value shorthand on `require` (e.g. `{require}`) causes compilation errors.
|
||||
const result = await callAsyncFunction({ require: __webpack_require__(875), github, context: lib_github.context, core: core, glob: glob, io: io }, script);
|
||||
let encoding = Object(core.getInput)('result-encoding');
|
||||
encoding = encoding ? encoding : 'json';
|
||||
let output;
|
||||
switch (encoding) {
|
||||
case 'json':
|
||||
output = JSON.stringify(result);
|
||||
break;
|
||||
case 'string':
|
||||
output = String(result);
|
||||
break;
|
||||
default:
|
||||
throw new Error('"result-encoding" must be either "string" or "json"');
|
||||
}
|
||||
Object(core.setOutput)('result', output);
|
||||
}
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
function handleError(err) {
|
||||
console.error(err);
|
||||
Object(core.setFailed)(`Unhandled error: ${err}`);
|
||||
}
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 747:
|
||||
@@ -6901,25 +6937,6 @@ function expand(str, isTop) {
|
||||
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 875:
|
||||
/***/ (function(module) {
|
||||
|
||||
function webpackEmptyContext(req) {
|
||||
if (typeof req === 'number' && __webpack_require__.m[req])
|
||||
return __webpack_require__(req);
|
||||
try { return require(req) }
|
||||
catch (e) { if (e.code !== 'MODULE_NOT_FOUND') throw e }
|
||||
var e = new Error("Cannot find module '" + req + "'");
|
||||
e.code = 'MODULE_NOT_FOUND';
|
||||
throw e;
|
||||
}
|
||||
webpackEmptyContext.keys = function() { return []; };
|
||||
webpackEmptyContext.resolve = webpackEmptyContext;
|
||||
module.exports = webpackEmptyContext;
|
||||
webpackEmptyContext.id = 875;
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 877:
|
||||
|
||||
18
package-lock.json
generated
18
package-lock.json
generated
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"name": "github-script",
|
||||
"version": "3.1.1",
|
||||
"version": "4.0.2",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"version": "3.1.1",
|
||||
"version": "4.0.2",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.2.6",
|
||||
"@actions/core": "^1.2.7",
|
||||
"@actions/github": "^4.0.0",
|
||||
"@actions/glob": "^0.1.1",
|
||||
"@actions/io": "^1.0.2",
|
||||
@@ -32,9 +32,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/core": {
|
||||
"version": "1.2.6",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.6.tgz",
|
||||
"integrity": "sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA=="
|
||||
"version": "1.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.7.tgz",
|
||||
"integrity": "sha512-kzLFD5BgEvq6ubcxdgPbRKGD2Qrgya/5j+wh4LZzqT915I0V3rED+MvjH6NXghbvk1MXknpNNQ3uKjXSEN00Ig=="
|
||||
},
|
||||
"node_modules/@actions/github": {
|
||||
"version": "4.0.0",
|
||||
@@ -9083,9 +9083,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/core": {
|
||||
"version": "1.2.6",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.6.tgz",
|
||||
"integrity": "sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA=="
|
||||
"version": "1.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.7.tgz",
|
||||
"integrity": "sha512-kzLFD5BgEvq6ubcxdgPbRKGD2Qrgya/5j+wh4LZzqT915I0V3rED+MvjH6NXghbvk1MXknpNNQ3uKjXSEN00Ig=="
|
||||
},
|
||||
"@actions/github": {
|
||||
"version": "4.0.0",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "github-script",
|
||||
"description": "A GitHub action for executing a simple script",
|
||||
"version": "3.1.1",
|
||||
"version": "4.0.2",
|
||||
"author": "GitHub",
|
||||
"license": "MIT",
|
||||
"main": "dist/index.js",
|
||||
@@ -35,7 +35,7 @@
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.2.6",
|
||||
"@actions/core": "^1.2.7",
|
||||
"@actions/github": "^4.0.0",
|
||||
"@actions/glob": "^0.1.1",
|
||||
"@actions/io": "^1.0.2",
|
||||
|
||||
@@ -13,6 +13,7 @@ type AsyncFunctionArguments = {
|
||||
glob: typeof glob
|
||||
io: typeof io
|
||||
require: NodeRequire
|
||||
__original_require__: NodeRequire
|
||||
}
|
||||
|
||||
export function callAsyncFunction<T>(
|
||||
|
||||
11
src/main.ts
11
src/main.ts
@@ -3,6 +3,7 @@ import {context, getOctokit} from '@actions/github'
|
||||
import * as glob from '@actions/glob'
|
||||
import * as io from '@actions/io'
|
||||
import {callAsyncFunction} from './async-function'
|
||||
import {wrapRequire} from './wrap-require'
|
||||
|
||||
process.on('unhandledRejection', handleError)
|
||||
main().catch(handleError)
|
||||
@@ -29,7 +30,15 @@ async function main(): Promise<void> {
|
||||
|
||||
// Using property/value shorthand on `require` (e.g. `{require}`) causes compilation errors.
|
||||
const result = await callAsyncFunction(
|
||||
{require: require, github, context, core, glob, io},
|
||||
{
|
||||
require: wrapRequire,
|
||||
__original_require__: __non_webpack_require__,
|
||||
github,
|
||||
context,
|
||||
core,
|
||||
glob,
|
||||
io
|
||||
},
|
||||
script
|
||||
)
|
||||
|
||||
|
||||
25
src/wrap-require.ts
Normal file
25
src/wrap-require.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import * as path from 'path'
|
||||
|
||||
export const wrapRequire = new Proxy(__non_webpack_require__, {
|
||||
apply: (target, thisArg, [moduleID]) => {
|
||||
if (moduleID.startsWith('.')) {
|
||||
moduleID = path.resolve(moduleID)
|
||||
return target.apply(thisArg, [moduleID])
|
||||
}
|
||||
|
||||
const modulePath = target.resolve.apply(thisArg, [
|
||||
moduleID,
|
||||
{
|
||||
// Webpack does not have an escape hatch for getting the actual
|
||||
// module, other than `eval`.
|
||||
paths: [process.cwd()]
|
||||
}
|
||||
])
|
||||
|
||||
return target.apply(thisArg, [modulePath])
|
||||
},
|
||||
|
||||
get: (target, prop, receiver) => {
|
||||
Reflect.get(target, prop, receiver)
|
||||
}
|
||||
})
|
||||
1
types/non-webpack-require.ts
Normal file
1
types/non-webpack-require.ts
Normal file
@@ -0,0 +1 @@
|
||||
declare const __non_webpack_require__: NodeRequire
|
||||
Reference in New Issue
Block a user