mirror of
https://github.com/actions/javascript-action.git
synced 2025-12-10 20:56:57 +00:00
Co-authored-by: Frieder Bluemle <frieder.bluemle@gmail.com>
This commit is contained in:
1
.eslintignore
Normal file
1
.eslintignore
Normal file
@@ -0,0 +1 @@
|
||||
dist/
|
||||
@@ -15,4 +15,4 @@
|
||||
},
|
||||
"rules": {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
2
.github/dependabot.yml
vendored
2
.github/dependabot.yml
vendored
@@ -6,4 +6,4 @@ updates:
|
||||
directory: "/"
|
||||
# Check the npm registry for updates every day (weekdays)
|
||||
schedule:
|
||||
interval: "daily"
|
||||
interval: "daily"
|
||||
|
||||
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
||||
- run: npm ci
|
||||
- run: npm test
|
||||
|
||||
# test action works running from the graph
|
||||
# test action works running from the graph
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,7 +1,9 @@
|
||||
node_modules/
|
||||
|
||||
# Editors
|
||||
.vscode
|
||||
.vscode/
|
||||
.idea/
|
||||
*.iml
|
||||
|
||||
# Logs
|
||||
logs
|
||||
|
||||
26
README.md
26
README.md
@@ -1,13 +1,12 @@
|
||||
# Create a JavaScript Action
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/actions/javascript-action/actions"><img alt="javscript-action status" src="https://github.com/actions/javascript-action/workflows/units-test/badge.svg"></a>
|
||||
</p>
|
||||
|
||||
# Create a JavaScript Action
|
||||
|
||||
Use this template to bootstrap the creation of a JavaScript action.:rocket:
|
||||
|
||||
This template includes tests, linting, a validation workflow, publishing, and versioning guidance.
|
||||
This template includes tests, linting, a validation workflow, publishing, and versioning guidance.
|
||||
|
||||
If you are new, there's also a simpler introduction. See the [Hello World JavaScript Action](https://github.com/actions/hello-world-javascript-action)
|
||||
|
||||
@@ -17,12 +16,14 @@ Click the `Use this Template` and provide the new repo details for your action
|
||||
|
||||
## Code in Main
|
||||
|
||||
Install the dependencies
|
||||
Install the dependencies
|
||||
|
||||
```bash
|
||||
$ npm install
|
||||
npm install
|
||||
```
|
||||
|
||||
Run the tests :heavy_check_mark:
|
||||
Run the tests :heavy_check_mark:
|
||||
|
||||
```bash
|
||||
$ npm test
|
||||
|
||||
@@ -30,7 +31,6 @@ $ npm test
|
||||
✓ throws invalid number (3ms)
|
||||
✓ wait 500 ms (504ms)
|
||||
✓ test runs (95ms)
|
||||
|
||||
...
|
||||
```
|
||||
|
||||
@@ -51,9 +51,9 @@ const core = require('@actions/core');
|
||||
...
|
||||
|
||||
async function run() {
|
||||
try {
|
||||
try {
|
||||
...
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
core.setFailed(error.message);
|
||||
}
|
||||
@@ -89,15 +89,15 @@ Users shouldn't consume the action from master since that would be latest code a
|
||||
Checkin to the v1 release branch
|
||||
|
||||
```bash
|
||||
$ git checkout -b v1
|
||||
$ git commit -a -m "v1 release"
|
||||
git checkout -b v1
|
||||
git commit -a -m "v1 release"
|
||||
```
|
||||
|
||||
```bash
|
||||
$ git push origin v1
|
||||
git push origin v1
|
||||
```
|
||||
|
||||
Your action is now published! :rocket:
|
||||
Your action is now published! :rocket:
|
||||
|
||||
See the [versioning documentation](https://github.com/actions/toolkit/blob/master/docs/action-versioning.md)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ inputs:
|
||||
required: true
|
||||
default: '1000'
|
||||
outputs:
|
||||
time: # output will be available to future steps
|
||||
time: # output will be available to future steps
|
||||
description: 'The message to output'
|
||||
runs:
|
||||
using: 'node12'
|
||||
|
||||
24
dist/index.js
vendored
24
dist/index.js
vendored
@@ -65,22 +65,21 @@ const wait = __webpack_require__(949);
|
||||
|
||||
// most @actions toolkit packages have async methods
|
||||
async function run() {
|
||||
try {
|
||||
try {
|
||||
const ms = core.getInput('milliseconds');
|
||||
core.info(`Waiting ${ms} milliseconds ...`)
|
||||
core.info(`Waiting ${ms} milliseconds ...`);
|
||||
|
||||
core.debug((new Date()).toTimeString()) // debug is only output if you set the secret `ACTIONS_RUNNER_DEBUG` to true
|
||||
core.debug((new Date()).toTimeString()); // debug is only output if you set the secret `ACTIONS_RUNNER_DEBUG` to true
|
||||
await wait(parseInt(ms));
|
||||
core.info((new Date()).toTimeString())
|
||||
core.info((new Date()).toTimeString());
|
||||
|
||||
core.setOutput('time', new Date().toTimeString());
|
||||
}
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
core.setFailed(error.message);
|
||||
}
|
||||
}
|
||||
|
||||
run()
|
||||
run();
|
||||
|
||||
|
||||
/***/ }),
|
||||
@@ -352,15 +351,14 @@ module.exports = require("path");
|
||||
/***/ 949:
|
||||
/***/ (function(module) {
|
||||
|
||||
let wait = function(milliseconds) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (typeof(milliseconds) !== 'number') {
|
||||
throw new Error('milleseconds not a number');
|
||||
let wait = function (milliseconds) {
|
||||
return new Promise((resolve) => {
|
||||
if (typeof milliseconds !== 'number') {
|
||||
throw new Error('milliseconds not a number');
|
||||
}
|
||||
|
||||
setTimeout(() => resolve("done!"), milliseconds)
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = wait;
|
||||
|
||||
|
||||
13
index.js
13
index.js
@@ -4,19 +4,18 @@ const wait = require('./wait');
|
||||
|
||||
// most @actions toolkit packages have async methods
|
||||
async function run() {
|
||||
try {
|
||||
try {
|
||||
const ms = core.getInput('milliseconds');
|
||||
core.info(`Waiting ${ms} milliseconds ...`)
|
||||
core.info(`Waiting ${ms} milliseconds ...`);
|
||||
|
||||
core.debug((new Date()).toTimeString()) // debug is only output if you set the secret `ACTIONS_RUNNER_DEBUG` to true
|
||||
core.debug((new Date()).toTimeString()); // debug is only output if you set the secret `ACTIONS_RUNNER_DEBUG` to true
|
||||
await wait(parseInt(ms));
|
||||
core.info((new Date()).toTimeString())
|
||||
core.info((new Date()).toTimeString());
|
||||
|
||||
core.setOutput('time', new Date().toTimeString());
|
||||
}
|
||||
catch (error) {
|
||||
} catch (error) {
|
||||
core.setFailed(error.message);
|
||||
}
|
||||
}
|
||||
|
||||
run()
|
||||
run();
|
||||
|
||||
@@ -3,21 +3,21 @@ const process = require('process');
|
||||
const cp = require('child_process');
|
||||
const path = require('path');
|
||||
|
||||
test('throws invalid number', async() => {
|
||||
await expect(wait('foo')).rejects.toThrow('milleseconds not a number');
|
||||
test('throws invalid number', async () => {
|
||||
await expect(wait('foo')).rejects.toThrow('milliseconds not a number');
|
||||
});
|
||||
|
||||
test('wait 500 ms', async() => {
|
||||
const start = new Date();
|
||||
await wait(500);
|
||||
const end = new Date();
|
||||
var delta = Math.abs(end - start);
|
||||
expect(delta).toBeGreaterThan(450);
|
||||
test('wait 500 ms', async () => {
|
||||
const start = new Date();
|
||||
await wait(500);
|
||||
const end = new Date();
|
||||
var delta = Math.abs(end - start);
|
||||
expect(delta).toBeGreaterThan(450);
|
||||
});
|
||||
|
||||
// shows how the runner will run a javascript action with env / stdout protocol
|
||||
test('test runs', () => {
|
||||
process.env['INPUT_MILLISECONDS'] = 500;
|
||||
const ip = path.join(__dirname, 'index.js');
|
||||
console.log(cp.execSync(`node ${ip}`, { env: process.env }).toString());
|
||||
process.env['INPUT_MILLISECONDS'] = 500;
|
||||
const ip = path.join(__dirname, 'index.js');
|
||||
console.log(cp.execSync(`node ${ip}`, {env: process.env}).toString());
|
||||
})
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"description": "JavaScript Action Template",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"lint": "eslint index.js",
|
||||
"lint": "eslint .",
|
||||
"prepare": "ncc build index.js -o dist --source-map",
|
||||
"test": "jest",
|
||||
"all": "npm run lint && npm run prepare && npm run test"
|
||||
|
||||
11
wait.js
11
wait.js
@@ -1,11 +1,10 @@
|
||||
let wait = function(milliseconds) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (typeof(milliseconds) !== 'number') {
|
||||
throw new Error('milleseconds not a number');
|
||||
let wait = function (milliseconds) {
|
||||
return new Promise((resolve) => {
|
||||
if (typeof milliseconds !== 'number') {
|
||||
throw new Error('milliseconds not a number');
|
||||
}
|
||||
|
||||
setTimeout(() => resolve("done!"), milliseconds)
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = wait;
|
||||
|
||||
Reference in New Issue
Block a user