Skip to content

Commit 4d3a534

Browse files
authored
Merge pull request #10 from gregoranders/development
0.0.6 Release
2 parents 4550aed + 53475a3 commit 4d3a534

File tree

7 files changed

+61
-63
lines changed

7 files changed

+61
-63
lines changed

README.md

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ This action uploads an asset to a release, so your workflow can access it.
1010
[![License][license-image]][license-url]
1111
[![Issues][issues-image]][issues-url]
1212

13-
1413
[![Master Build][master-build-image]][master-url] [![Master Coverage][master-coveralls-image]][master-coveralls-url] [![Master Version][master-version-image]][master-version-url]
1514

1615
[![Development Build][development-build-image]][development-url] [![Development Coverage][development-coveralls-image]][development-coveralls-url] [![Development Version][development-version-image]][development-version-url]
@@ -20,14 +19,15 @@ This action uploads an asset to a release, so your workflow can access it.
2019
[![Main Language](https://img.shields.io/github/languages/top/gregoranders/nodejs-upload-asset)][code-metric-url] [![Languages](https://img.shields.io/github/languages/count/gregoranders/nodejs-upload-asset)][code-metric-url] [![Code Size](https://img.shields.io/github/languages/code-size/gregoranders/nodejs-upload-asset)][code-metric-url] [![Repo-Size](https://img.shields.io/github/repo-size/gregoranders/nodejs-upload-asset)][code-metric-url]
2120

2221
## Usage
22+
2323
```YML
2424
...
2525
- name: nodejs project information
2626
id: projectinfo
27-
uses: gregoranders/nodejs-project-info@v0.0.5
27+
uses: gregoranders/nodejs-project-info@v0.0.6
2828
- name: create release
2929
id: createrelease
30-
uses: gregoranders/nodejs-create-release@v0.0.5
30+
uses: gregoranders/nodejs-create-release@v0.0.6
3131
env:
3232
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3333
with:
@@ -36,21 +36,22 @@ This action uploads an asset to a release, so your workflow can access it.
3636
target: ${{ github.ref }}
3737
- name: upload asset
3838
id: uploadasset
39-
uses: gregoranders/nodejs-upload-asset@v0.0.5
39+
uses: gregoranders/nodejs-upload-asset@v0.0.6
4040
env:
4141
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4242
with:
43-
url: ${{ steps.createrelease.outputs.upload_url }}
43+
id: ${{ steps.createrelease.outputs.id }}
4444
path: package.json
4545
name: '${{ steps.projectinfo.outputs.name }} - ${{ steps.projectinfo.outputs.version }}'
4646
...
4747
```
4848

4949
#### Inputs/Outputs
50+
5051
```YML
5152
inputs:
52-
url:
53-
description: 'Release Asset Upload Url'
53+
id:
54+
description: 'Release Id'
5455
required: true
5556
path:
5657
description: 'Release Asset Path'
@@ -73,11 +74,13 @@ outputs:
7374
## Development
7475
7576
### Clone repository
77+
7678
```SH
7779
git clone https://github.com/gregoranders/nodejs-upload-asset
7880
```
7981

8082
### Install dependencies
83+
8184
```SH
8285
npm install
8386
```
@@ -91,16 +94,19 @@ npm run build
9194
### Testing
9295

9396
#### Test using [Jest](https://jestjs.io/)
97+
9498
```SH
9599
npm test
96100
```
97101

98102
### Run
103+
99104
```SH
100105
npm start
101106
```
102107

103108
### Clear
109+
104110
```SH
105111
npm run clear
106112
```
@@ -110,38 +116,27 @@ npm run clear
110116
[development-url]: https://github.com/gregoranders/nodejs-upload-asset/tree/development
111117
[repository-url]: https://github.com/gregoranders/nodejs-upload-asset
112118
[code-metric-url]: https://github.com/gregoranders/nodejs-upload-asset/search?l=TypeScript
113-
114119
[travis-url]: https://travis-ci.org/gregoranders/nodejs-upload-asset
115120
[travis-image]: https://travis-ci.org/gregoranders/nodejs-upload-asset.svg?branch=master
116-
117121
[daviddm-url]: https://david-dm.org/gregoranders/nodejs-upload-asset
118122
[daviddm-image]: https://david-dm.org/gregoranders/nodejs-upload-asset.svg?branch=master
119-
120123
[license-url]: https://github.com/gregoranders/nodejs-upload-asset/blob/master/LICENSE
121124
[license-image]: https://img.shields.io/github/license/gregoranders/nodejs-upload-asset.svg
122-
123125
[master-version-url]: https://github.com/gregoranders/nodejs-upload-asset/blob/master/package.json
124126
[master-version-image]: https://img.shields.io/github/package-json/v/gregoranders/nodejs-upload-asset/master
125-
126127
[development-version-url]: https://github.com/gregoranders/nodejs-upload-asset/blob/development/package.json
127128
[development-version-image]: https://img.shields.io/github/package-json/v/gregoranders/nodejs-upload-asset/development
128-
129129
[issues-url]: https://github.com/gregoranders/nodejs-upload-asset/issues
130130
[issues-image]: https://img.shields.io/github/issues-raw/gregoranders/nodejs-upload-asset.svg
131-
132131
[master-build-image]: https://github.com/gregoranders/nodejs-upload-asset/workflows/Master%20CI/badge.svg
133132
[development-build-image]: https://github.com/gregoranders/nodejs-upload-asset/workflows/Development%20CI/badge.svg
134-
135133
[master-coveralls-url]: https://coveralls.io/github/gregoranders/nodejs-upload-asset?branch=master
136134
[master-coveralls-image]: https://img.shields.io/coveralls/github/gregoranders/nodejs-upload-asset/master
137135
[development-coveralls-image]: https://img.shields.io/coveralls/github/gregoranders/nodejs-upload-asset/development
138136
[development-coveralls-url]: https://coveralls.io/github/gregoranders/nodejs-upload-asset?branch=development
139-
140137
[code-maintainability-url]: https://codeclimate.com/github/gregoranders/nodejs-upload-asset/maintainability
141138
[code-maintainability-image]: https://img.shields.io/codeclimate/maintainability/gregoranders/nodejs-upload-asset
142-
143139
[code-issues-url]: https://codeclimate.com/github/gregoranders/nodejs-upload-asset/maintainability
144140
[code-issues-image]: https://img.shields.io/codeclimate/issues/gregoranders/nodejs-upload-asset
145-
146141
[code-tech-debt-url]: https://codeclimate.com/github/gregoranders/nodejs-upload-asset/maintainability
147142
[code-tech-debt-image]: https://img.shields.io/codeclimate/tech-debt/gregoranders/nodejs-upload-asset

action.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ name: 'NodeJS Upload Asset'
22
description: 'Upload asset'
33
author: 'Gregor Anders <gregor.ander@gmail.com>'
44
inputs:
5-
url:
6-
description: 'Release Asset Upload Url'
5+
id:
6+
description: 'Release ID'
77
required: true
88
path:
99
description: 'Release Asset Path'

dist/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "nodejs-upload-asset",
3-
"version": "0.0.5",
3+
"version": "0.0.6",
44
"description": "NodeJS Upload Asset",
55
"main": "./dist/index.js",
66
"scripts": {
@@ -62,25 +62,25 @@
6262
},
6363
"homepage": "https://gregoranders.github.io/nodejs-upload-asset/",
6464
"dependencies": {
65-
"@actions/core": "1.2.3",
66-
"@actions/github": "2.1.1"
65+
"@actions/core": "1.2.4",
66+
"@actions/github": "3.0.0"
6767
},
6868
"devDependencies": {
69-
"@types/jest": "25.2.1",
70-
"@types/mime": "2.0.1",
71-
"@zeit/ncc": "0.22.1",
72-
"@typescript-eslint/eslint-plugin": "2.28.0",
73-
"@typescript-eslint/parser": "2.28.0",
74-
"eslint": "6.8.0",
75-
"eslint-config-prettier": "6.10.1",
69+
"@types/jest": "25.2.3",
70+
"@types/mime": "2.0.2",
71+
"@zeit/ncc": "0.22.3",
72+
"@typescript-eslint/eslint-plugin": "3.1.0",
73+
"@typescript-eslint/parser": "3.1.0",
74+
"eslint": "7.2.0",
75+
"eslint-config-prettier": "6.11.0",
7676
"eslint-plugin-prettier": "3.1.3",
7777
"husky": "4.2.5",
78-
"jest": "25.4.0",
79-
"prettier": "2.0.4",
80-
"mime": "2.4.4",
78+
"jest": "26.0.1",
79+
"prettier": "2.0.5",
80+
"mime": "2.4.6",
8181
"rimraf": "3.0.2",
82-
"ts-jest": "25.4.0",
83-
"ts-node": "8.8.2",
84-
"typescript": "3.8.3"
82+
"ts-jest": "26.1.0",
83+
"ts-node": "8.10.2",
84+
"typescript": "3.9.5"
8585
}
8686
}

src/action.spec.ts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
/* eslint-disable @typescript-eslint/camelcase */
21
import { clearTestEnvironment, uploadReleaseAssetMock, setInput, setOutputMock } from './testUtils';
32

43
import { run as testSubject } from './action';
@@ -9,31 +8,31 @@ describe('nodejs-upload-asset', () => {
98
Reflect.deleteProperty(process.env, 'GITHUB_TOKEN');
109
});
1110

12-
it('no url provided', async () => {
11+
it('no id provided', async () => {
1312
setInput('path', 'bar');
14-
return expect(testSubject()).rejects.toStrictEqual(Error('Input required and not supplied: url'));
13+
return expect(testSubject()).rejects.toStrictEqual(Error('Input required and not supplied: id'));
1514
});
1615

1716
it('no path provided', async () => {
18-
setInput('url', 'foo');
17+
setInput('id', '1');
1918
return expect(testSubject()).rejects.toStrictEqual(Error('Input required and not supplied: path'));
2019
});
2120

2221
it('missing GITHUB_TOKEN', async () => {
23-
setInput('url', 'foo');
22+
setInput('id', '1');
2423
setInput('path', 'bar');
2524
return expect(testSubject()).resolves.toHaveCoreError(/Missing GITHUB_TOKEN/);
2625
});
2726

2827
it('invalid path', async () => {
29-
setInput('url', 'foo');
28+
setInput('id', '1');
3029
setInput('path', 'bar');
3130
process.env.GITHUB_TOKEN = 'abcd';
3231
return expect(testSubject()).resolves.toHaveCoreError(/lstat/);
3332
});
3433

3534
it('valid input and GITHUB_TOKEN - upload', async () => {
36-
setInput('url', 'foo');
35+
setInput('id', '1');
3736
setInput('path', '.editorconfig');
3837
process.env.GITHUB_TOKEN = 'abcd';
3938
uploadReleaseAssetMock.mockReturnValue({
@@ -45,7 +44,6 @@ describe('nodejs-upload-asset', () => {
4544
return testSubject().then(() => {
4645
expect(uploadReleaseAssetMock).toHaveBeenCalledNthWith(1, {
4746
name: '.editorconfig',
48-
url: 'foo',
4947
});
5048
expect(setOutputMock).toHaveBeenCalledTimes(2);
5149
expect(setOutputMock).toHaveCoreOutput('id', '1');
@@ -54,7 +52,7 @@ describe('nodejs-upload-asset', () => {
5452
});
5553

5654
it('valid input and GITHUB_TOKEN - upload - custom mime type', async () => {
57-
setInput('url', 'foo');
55+
setInput('id', '1');
5856
setInput('path', 'package.json');
5957
setInput('mime', 'application/json');
6058
process.env.GITHUB_TOKEN = 'abcd';
@@ -67,7 +65,6 @@ describe('nodejs-upload-asset', () => {
6765
return testSubject().then(() => {
6866
expect(uploadReleaseAssetMock).toHaveBeenCalledNthWith(1, {
6967
name: 'package.json',
70-
url: 'foo',
7168
});
7269
expect(setOutputMock).toHaveBeenCalledTimes(2);
7370
expect(setOutputMock).toHaveCoreOutput('id', '1');

src/action.ts

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
import * as core from '@actions/core';
2-
import { GitHub } from '@actions/github';
2+
import { context, getOctokit } from '@actions/github';
3+
import { RestEndpointMethodTypes } from '@octokit/plugin-rest-endpoint-methods/dist-types/';
34

45
import * as fs from 'fs';
56
import { getType } from 'mime';
67
import { basename, resolve } from 'path';
78

8-
import { Octokit } from '@octokit/rest';
9-
10-
type ReposUploadReleaseAssetParams = Octokit.ReposUploadReleaseAssetParams;
9+
type GitHub = ReturnType<typeof getOctokit>;
10+
type ReposUploadReleaseAssetParams = RestEndpointMethodTypes['repos']['uploadReleaseAsset']['parameters'];
1111

1212
const uploadAsset = async (client: GitHub, params: ReposUploadReleaseAssetParams) => {
1313
core.startGroup(`Uploading asset ${params.name} to release ${params.url}`);
14-
// tslint:disable-next-line: no-any
15-
const response = (await client.repos.uploadReleaseAsset(params)) as any;
14+
const response = await client.repos.uploadReleaseAsset(params);
1615
core.info(`Release asset ${response.data.name} created [id: ${response.data.id}]`);
1716
core.endGroup();
1817
return response.data;
@@ -26,40 +25,47 @@ const prepareHeaders = (fullPathChecked: string, mime: string) => {
2625
};
2726

2827
const prepareParams = (
29-
data: Buffer,
28+
data: string,
3029
headers: { 'content-length': number; 'content-type': string },
3130
label: string,
3231
name: string,
33-
url: string,
34-
): Octokit.ReposUploadReleaseAssetParams => {
32+
release_id: string,
33+
owner: string,
34+
repo: string,
35+
) => {
3536
return {
3637
data,
3738
headers,
3839
label,
3940
name,
40-
url,
41+
release_id: parseInt(release_id),
42+
owner,
43+
repo,
4144
};
4245
};
4346

44-
export const run = async () => {
47+
export const run = async (): Promise<void> => {
4548
const path = core.getInput('path', { required: true });
4649

4750
const name = core.getInput('name', { required: false }) || basename(path);
4851
const label = core.getInput('label', { required: false });
49-
const url = core.getInput('url', { required: true });
52+
const id = core.getInput('id', { required: true });
5053
const mime = core.getInput('mime', { required: false });
5154

5255
try {
5356
if (!process.env.GITHUB_TOKEN) {
5457
throw Error('Missing GITHUB_TOKEN');
5558
}
5659

57-
const github = new GitHub(process.env.GITHUB_TOKEN);
60+
const github = getOctokit(process.env.GITHUB_TOKEN);
5861
const fullPathChecked: fs.PathLike = resolve(fs.realpathSync(path));
5962
const headers = prepareHeaders(fullPathChecked, mime);
60-
const data = fs.readFileSync(fullPathChecked);
63+
const data = fs.readFileSync(fullPathChecked).toString('binary');
6164

62-
const asset = await uploadAsset(github, prepareParams(data, headers, label, name, url));
65+
const asset = await uploadAsset(
66+
github,
67+
prepareParams(data, headers, label, name, id, context.repo.owner, context.repo.repo),
68+
);
6369

6470
core.setOutput('id', asset.id.toString());
6571
core.setOutput('url', asset.browser_download_url);

src/testUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export const uploadReleaseAssetMock = jest.fn();
4040

4141
const githubMock = jest.mock('@actions/github', () => {
4242
return {
43-
GitHub: jest.fn().mockImplementation(() => {
43+
getOctokit: jest.fn().mockImplementation(() => {
4444
return {
4545
repos: {
4646
uploadReleaseAsset: uploadReleaseAssetMock,

0 commit comments

Comments
 (0)