Compare commits

...

44 Commits

Author SHA1 Message Date
CrazyMax
e163ff0d2e Update CHANGELOG 2020-05-07 12:25:58 +02:00
crazy-max
3b3d2b898d Update generated content 2020-05-07 10:14:00 +00:00
CrazyMax
88a78e2f11 Fix github release tag 2020-05-07 12:13:21 +02:00
crazy-max
6837697d11 Update generated content 2020-05-07 10:11:56 +00:00
CrazyMax
5cc6b8eb5b Cleanup code and tests 2020-05-07 12:11:19 +02:00
crazy-max
f1338960fb Update generated content 2020-05-06 22:18:14 +00:00
CrazyMax
0569f84afe Cleanup local paths from extra fields 2020-05-07 00:17:38 +02:00
CrazyMax
4258956a57 Cleanup workflows 2020-05-06 23:55:10 +02:00
CrazyMax
ce8d5a88dc Update CHANGELOG 2020-05-06 22:24:05 +02:00
CrazyMax
798798f112 Fix test 2020-05-06 22:17:52 +02:00
crazy-max
93bb242097 Update generated content 2020-05-06 20:15:40 +00:00
CrazyMax
6395a3aa2f Use native tools 2020-05-06 22:14:50 +02:00
CrazyMax
232b78f307 Update CHANGELOG 2020-05-06 21:20:51 +02:00
crazy-max
3a9e38d798 Update generated content 2020-05-06 19:18:40 +00:00
CrazyMax
9e29288823 Add Codecov 2020-05-06 21:17:47 +02:00
CrazyMax
5fb44a383c Update workflows 2020-05-06 21:14:42 +02:00
CrazyMax
a77f62c7b2 Fix package json 2020-05-06 21:14:31 +02:00
crazy-max
4016520b1a Update generated content 2020-05-06 00:06:06 +00:00
dependabot[bot]
43e96ba7c7 Bump @actions/core from 1.2.3 to 1.2.4 (#93)
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.2.3 to 1.2.4.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/master/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-05-06 02:05:12 +02:00
CrazyMax
84be82804b Add CHANGELOG 2020-05-01 03:40:13 +02:00
CrazyMax
1d77879094 Uneeded 2020-05-01 03:40:08 +02:00
CrazyMax
a49a31ec57 Add bug report and support doc 2020-04-30 19:18:14 +02:00
CrazyMax
4e207aef79 Bump deps 2020-04-30 11:12:18 +02:00
crazy-max
13cfa21ed2 Update generated content 2020-04-30 08:45:51 +00:00
dependabot[bot]
cf7c59718e Bump @actions/exec from 1.0.3 to 1.0.4 (#87)
Bumps [@actions/exec](https://github.com/actions/toolkit/tree/HEAD/packages/exec) from 1.0.3 to 1.0.4.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/master/packages/exec/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/exec)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-30 10:45:10 +02:00
crazy-max
3bb5082440 Update generated content 2020-04-30 08:24:59 +00:00
dependabot[bot]
2cca363863 Bump jest-runtime from 25.4.0 to 25.5.0 (#88)
Bumps [jest-runtime](https://github.com/facebook/jest/tree/HEAD/packages/jest-runtime) from 25.4.0 to 25.5.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v25.5.0/packages/jest-runtime)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-30 10:24:17 +02:00
dependabot[bot]
74f8aad623 Bump jest from 25.4.0 to 25.5.0 (#85)
Bumps [jest](https://github.com/facebook/jest) from 25.4.0 to 25.5.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.4.0...v25.5.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-30 10:20:22 +02:00
dependabot[bot]
179c8d1999 Bump @types/node from 13.13.2 to 13.13.4 (#84)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.13.2 to 13.13.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-27 23:09:42 +02:00
crazy-max
07776888af Update generated content 2020-04-24 16:04:07 +00:00
dependabot[bot]
8109f2b0b1 Bump @actions/tool-cache from 1.3.3 to 1.3.4 (#83)
Bumps [@actions/tool-cache](https://github.com/actions/toolkit/tree/HEAD/packages/tool-cache) from 1.3.3 to 1.3.4.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/master/packages/tool-cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/tool-cache)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-24 18:03:23 +02:00
dependabot[bot]
ff1f7b6f02 Bump @types/node from 13.13.1 to 13.13.2 (#82)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.13.1 to 13.13.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-22 18:16:02 +02:00
dependabot[bot]
70b04fa8cc Bump prettier from 2.0.4 to 2.0.5 (#81)
Bumps [prettier](https://github.com/prettier/prettier) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.0.4...2.0.5)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-22 18:13:14 +02:00
dependabot[bot]
a29487bfda Bump @types/node from 13.13.0 to 13.13.1 (#80)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.13.0 to 13.13.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-21 09:58:37 +02:00
dependabot[bot]
ccf18cffd8 Bump ts-jest from 25.3.1 to 25.4.0 (#79)
Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 25.3.1 to 25.4.0.
- [Release notes](https://github.com/kulshekhar/ts-jest/releases)
- [Changelog](https://github.com/kulshekhar/ts-jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kulshekhar/ts-jest/compare/v25.3.1...v25.4.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-20 13:18:08 +02:00
dependabot[bot]
85281740bf Bump jest-circus from 25.3.0 to 25.4.0 (#77)
Bumps [jest-circus](https://github.com/facebook/jest/tree/HEAD/packages/jest-circus) from 25.3.0 to 25.4.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v25.4.0/packages/jest-circus)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-20 13:17:38 +02:00
dependabot[bot]
05a76fdd78 Bump jest from 25.3.0 to 25.4.0 (#78)
Bumps [jest](https://github.com/facebook/jest) from 25.3.0 to 25.4.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.3.0...v25.4.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-20 10:22:38 +02:00
dependabot[bot]
8028365153 Bump jest-runtime from 25.3.0 to 25.4.0 (#75)
Bumps [jest-runtime](https://github.com/facebook/jest/tree/HEAD/packages/jest-runtime) from 25.3.0 to 25.4.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v25.4.0/packages/jest-runtime)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-20 10:14:40 +02:00
dependabot[bot]
b72f85285f Bump @types/node from 13.11.1 to 13.13.0 (#76)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.11.1 to 13.13.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-20 10:10:24 +02:00
CrazyMax
7030d1d220 Fix lint workflow 2020-04-18 07:30:19 +02:00
dependabot[bot]
a6aa6e0fc3 Bump jest from 25.2.7 to 25.3.0 (#73)
Bumps [jest](https://github.com/facebook/jest) from 25.2.7 to 25.3.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.2.7...v25.3.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-10 04:08:20 +02:00
dependabot[bot]
d6d7f82212 Bump jest-circus from 25.2.7 to 25.3.0 (#74)
Bumps [jest-circus](https://github.com/facebook/jest/tree/HEAD/packages/jest-circus) from 25.2.7 to 25.3.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v25.3.0/packages/jest-circus)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-10 04:02:13 +02:00
dependabot[bot]
70f3e1534a Bump @types/node from 13.11.0 to 13.11.1 (#72)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.11.0 to 13.11.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-10 03:59:32 +02:00
dependabot[bot]
2840f8db19 Bump jest-runtime from 25.2.7 to 25.3.0 (#71)
Bumps [jest-runtime](https://github.com/facebook/jest/tree/HEAD/packages/jest-runtime) from 25.2.7 to 25.3.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v25.3.0/packages/jest-runtime)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-10 03:57:13 +02:00
21 changed files with 2448 additions and 25816 deletions

33
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,33 @@
---
name: Bug report
about: Create a report to help us improve
---
### Behaviour
#### Steps to reproduce this issue
1.
2.
3.
#### Expected behaviour
> Tell me what should happen
#### Actual behaviour
> Tell me what happens instead
### Configuration
* Repository URL (if public):
* Build URL (if public):
```yml
# paste your YAML workflow file here and remove sensitive data
```
### Logs
> Download the [log file of your build](https://help.github.com/en/actions/configuring-and-managing-workflows/managing-a-workflow-run#downloading-logs) and [attach it](https://help.github.com/en/github/managing-your-work-on-github/file-attachments-on-issues-and-pull-requests) to this issue.

29
.github/SUPPORT.md vendored Normal file
View File

@@ -0,0 +1,29 @@
# Support [![](https://isitmaintained.com/badge/resolution/crazy-max/ghaction-upx.svg)](https://isitmaintained.com/project/crazy-max/ghaction-upx)
## Reporting an issue
Please do a search in [open issues](https://github.com/crazy-max/ghaction-upx/issues?utf8=%E2%9C%93&q=) to see if the issue or feature request has already been filed.
If you find your issue already exists, make relevant comments and add your [reaction](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments). Use a reaction in place of a "+1" comment.
:+1: - upvote
:-1: - downvote
If you cannot find an existing issue that describes your bug or feature, submit an issue using the guidelines below.
## Writing good bug reports and feature requests
File a single issue per problem and feature request.
* Do not enumerate multiple bugs or feature requests in the same issue.
* Do not add your issue as a comment to an existing issue unless it's for the identical input. Many issues look similar, but have different causes.
The more information you can provide, the more likely someone will be successful reproducing the issue and finding a fix.
You are now ready to [create a new issue](https://github.com/crazy-max/ghaction-upx/issues/new/choose)!
## Closure policy
* Issues that don't have the information requested above (when applicable) will be closed immediately and the poster directed to the support guidelines.
* Issues that go a week without a response from original poster are subject to closure at my discretion.

View File

@@ -27,7 +27,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v1
uses: actions/checkout@v2
-
name: Download file
id: download

View File

@@ -15,11 +15,11 @@ jobs:
-
# https://github.com/actions/checkout
name: Checkout
uses: actions/checkout@v1
uses: actions/checkout@v2
-
# https://github.com/crazy-max/ghaction-github-labeler
name: Run Labeler
if: success()
uses: crazy-max/ghaction-github-labeler@v1
uses: crazy-max/ghaction-github-labeler@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -13,7 +13,11 @@ jobs:
-
# https://github.com/actions/checkout
name: Checkout
uses: actions/checkout@v1
uses: actions/checkout@v2
-
# https://github.com/actions/setup-node
name: Set up Node
uses: actions/setup-node@v1
-
name: Setup TS
run: npm install tslint typescript -g

View File

@@ -12,11 +12,7 @@ jobs:
-
# https://github.com/actions/checkout
name: Checkout
uses: actions/checkout@v1
-
# https://github.com/actions/checkout/issues/6
name: Fix detached HEAD
run: git checkout ${GITHUB_REF#refs/heads/}
uses: actions/checkout@v2
-
name: Build
run: |

View File

@@ -21,18 +21,18 @@ jobs:
-
# https://github.com/actions/checkout
name: Checkout
uses: actions/checkout@v1
-
name: Build
run: |
npm install
npm run build
uses: actions/checkout@v2
-
name: Install
run: npm ci
-
name: Build
run: npm run build
run: npm install
-
name: Test
run: npm run test
-
# https://github.com/codecov/codecov-action
name: Upload coverage
uses: codecov/codecov-action@v1
if: success()
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage/clover.xml

24
CHANGELOG.md Normal file
View File

@@ -0,0 +1,24 @@
# Changelog
## 1.3.1 (2020/05/07)
* Code cleanup
## 1.3.0 (2020/05/06)
* Use native tools
* Add Codecov
* Update deps
## 1.2.0 (2020/04/09)
* Use ncc and clean workflows
* Update deps
## 1.1.0 (2020/01/17)
* Update deps
## 1.0.0 (2020/01/17)
* Initial version

View File

@@ -1,7 +1,7 @@
[![GitHub release](https://img.shields.io/github/release/crazy-max/ghaction-upx.svg?style=flat-square)](https://github.com/crazy-max/ghaction-upx/releases/latest)
[![GitHub marketplace](https://img.shields.io/badge/marketplace-upx--github--action-blue?logo=github&style=flat-square)](https://github.com/marketplace/actions/upx-github-action)
[![Release workflow](https://github.com/crazy-max/ghaction-upx/workflows/release/badge.svg)](https://github.com/crazy-max/ghaction-upx/actions?workflow=release)
[![Test workflow](https://github.com/crazy-max/ghaction-upx/workflows/test/badge.svg)](https://github.com/crazy-max/ghaction-upx/actions?workflow=test)
[![Test workflow](https://img.shields.io/github/workflow/status/crazy-max/ghaction-upx/test?label=test&logo=github&style=flat-square)](https://github.com/crazy-max/ghaction-upx/actions?workflow=test)
[![Codecov](https://img.shields.io/codecov/c/github/crazy-max/ghaction-upx?logo=codecov&style=flat-square)](https://codecov.io/gh/crazy-max/ghaction-upx)
[![Become a sponsor](https://img.shields.io/badge/sponsor-crazy--max-181717.svg?logo=github&style=flat-square)](https://github.com/sponsors/crazy-max)
[![Paypal Donate](https://img.shields.io/badge/donate-paypal-00457c.svg?logo=paypal&style=flat-square)](https://www.paypal.me/crazyws)
@@ -11,8 +11,6 @@ GitHub Action for [UPX](https://github.com/upx/upx), the Ultimate Packer for eXe
## Usage
Below is a simple snippet to use this action. A [live example](https://github.com/crazy-max/ghaction-upx/actions) is also available for this repository.
```yaml
name: upx
@@ -26,7 +24,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v1
uses: actions/checkout@v2
-
name: Run UPX
uses: crazy-max/ghaction-upx@v1
@@ -44,7 +42,7 @@ Following inputs can be used as `step.with` keys
| Name | Type | Default | Description |
|---------------|---------|-----------|-------------------------------|
| `version` | String | `latest` | UPX version. Example: `3.95` |
| `version` | String | `latest` | UPX version. Example: `v3.95` |
| `file` | String | | File to compress |
| `args` | String | | Arguments to pass to UPX |

17
__tests__/github.test.ts Normal file
View File

@@ -0,0 +1,17 @@
import * as github from '../src/github';
describe('github', () => {
it('returns latest UPX GitHub release', async () => {
const release = await github.getRelease('latest');
console.log(release);
expect(release).not.toBeNull();
expect(release?.tag_name).not.toEqual('');
});
it('returns v3.96 GoReleaser GitHub release', async () => {
const release = await github.getRelease('v3.96');
console.log(release);
expect(release).not.toBeNull();
expect(release?.tag_name).toEqual('v3.96');
});
});

View File

@@ -2,13 +2,15 @@ import fs = require('fs');
import * as installer from '../src/installer';
describe('installer', () => {
it('acquires 3.95 version of UPX', async () => {
const upx = await installer.getUPX('3.95');
it('acquires v3.95 version of UPX', async () => {
const upx = await installer.getUPX('v3.95');
console.log(upx);
expect(fs.existsSync(upx)).toBe(true);
}, 100000);
it('acquires latest version of UPX', async () => {
const upx = await installer.getUPX('latest');
console.log(upx);
expect(fs.existsSync(upx)).toBe(true);
}, 100000);
});

24173
dist/index.js generated vendored

File diff suppressed because one or more lines are too long

View File

@@ -7,5 +7,5 @@ module.exports = {
transform: {
'^.+\\.ts$': 'ts-jest'
},
verbose: true
}
verbose: false
}

83
lib/installer.js generated
View File

@@ -1,83 +0,0 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const download = __importStar(require("download"));
const fs = __importStar(require("fs"));
const os = __importStar(require("os"));
const path = __importStar(require("path"));
const util = __importStar(require("util"));
const restm = __importStar(require("typed-rest-client/RestClient"));
const core = __importStar(require("@actions/core"));
const tc = __importStar(require("@actions/tool-cache"));
let osPlat = os.platform();
let osArch = os.arch();
function getUPX(version) {
return __awaiter(this, void 0, void 0, function* () {
const selected = yield determineVersion(version);
if (selected) {
version = selected;
}
core.info(`✅ UPX version found: ${version}`);
const tmpdir = fs.mkdtempSync(path.join(os.tmpdir(), 'upx-'));
const fileName = getFileName(version);
const downloadUrl = util.format('https://github.com/upx/upx/releases/download/v%s/%s', version, fileName);
core.info(`⬇️ Downloading ${downloadUrl}...`);
yield download.default(downloadUrl, tmpdir, { filename: fileName });
core.info('📦 Extracting UPX...');
let extPath = tmpdir;
if (osPlat == 'win32') {
extPath = yield tc.extractZip(`${tmpdir}/${fileName}`);
}
else {
extPath = yield tc.extractTar(`${tmpdir}/${fileName}`, undefined, 'x');
}
return path.join(extPath, getFileNameWithoutExt(version), osPlat == 'win32' ? 'upx.exe' : 'upx');
});
}
exports.getUPX = getUPX;
function getFileName(version) {
const ext = osPlat == 'win32' ? 'zip' : 'tar.xz';
return util.format('%s.%s', getFileNameWithoutExt(version), ext);
}
function getFileNameWithoutExt(version) {
let platform = '';
if (osPlat == 'win32') {
platform = osArch == 'x64' ? 'win64' : 'win32';
}
else if (osPlat == 'linux') {
platform = osArch == 'x64' ? 'amd64_linux' : 'i386_linux';
}
return util.format('upx-%s-%s', version, platform);
}
function determineVersion(version) {
return __awaiter(this, void 0, void 0, function* () {
let rest = new restm.RestClient('ghaction-upx', 'https://github.com', undefined, {
headers: {
Accept: 'application/json'
}
});
if (version !== 'latest') {
version = `v${version}`;
}
let res = yield rest.get(`/upx/upx/releases/${version}`);
if (res.statusCode != 200 || res.result === null) {
throw new Error(`Cannot find UPX ${version} release (http ${res.statusCode})`);
}
return res.result.tag_name.replace(/^v/, '');
});
}

49
lib/main.js generated
View File

@@ -1,49 +0,0 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const installer = __importStar(require("./installer"));
const fs = __importStar(require("fs"));
const os = __importStar(require("os"));
const core = __importStar(require("@actions/core"));
const exec = __importStar(require("@actions/exec"));
function run(silent) {
return __awaiter(this, void 0, void 0, function* () {
try {
if (os.platform() == 'darwin') {
core.setFailed('Not supported on darwin platform');
return;
}
const version = core.getInput('version') || 'latest';
const file = core.getInput('file', { required: true });
const args = core.getInput('args');
const upx = yield installer.getUPX(version);
if (!fs.existsSync(file)) {
core.setFailed(`⛔ File to compress not found: ${file}`);
}
console.log('🏃 Running UPX...');
yield exec.exec(`${upx} ${args} ${file}`, undefined, {
silent: silent
});
}
catch (error) {
core.setFailed(error.message);
}
});
}
exports.run = run;
run();

3666
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -2,15 +2,13 @@
"name": "upx-github-action",
"description": "GitHub Action for UPX, the Ultimate Packer for eXecutables",
"main": "lib/main.js",
"directories": {
"lib": "lib"
},
"scripts": {
"build": "tsc && ncc build",
"test": "jest",
"test": "jest --coverage",
"format": "prettier --write **/*.ts",
"format-check": "prettier --check **/*.ts",
"pre-checkin": "npm run format && npm run build"
"cleanup-paths": "removeNPMAbsolutePaths ./ --force --fields _where _args",
"pre-checkin": "npm run format && npm run cleanup-paths && npm run build"
},
"repository": {
"type": "git",
@@ -23,22 +21,21 @@
"author": "CrazyMax",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.2.3",
"@actions/exec": "^1.0.3",
"@actions/tool-cache": "^1.3.3",
"download": "^8.0.0",
"typed-rest-client": "^1.7.3"
"@actions/core": "^1.2.4",
"@actions/exec": "^1.0.4",
"@actions/http-client": "^1.0.8",
"@actions/tool-cache": "^1.3.4"
},
"devDependencies": {
"@types/jest": "^25.2.1",
"@types/node": "^13.11.0",
"@types/download": "^6.2.4",
"@types/node": "^13.13.5",
"@zeit/ncc": "^0.22.1",
"jest": "^25.2.7",
"jest-circus": "^25.2.7",
"jest-runtime": "^25.2.7",
"prettier": "^2.0.4",
"ts-jest": "^25.3.1",
"jest": "^25.5.4",
"jest-circus": "^25.5.4",
"jest-runtime": "^25.5.4",
"prettier": "^2.0.5",
"removeNPMAbsolutePaths": "^2.0.0",
"ts-jest": "^25.5.0",
"typescript": "^3.8.3",
"typescript-formatter": "^7.2.2"
}

12
src/github.ts Normal file
View File

@@ -0,0 +1,12 @@
import * as httpm from '@actions/http-client';
export interface GitHubRelease {
id: number;
tag_name: string;
}
export const getRelease = async (version: string): Promise<GitHubRelease | null> => {
const url: string = `https://github.com/upx/upx/releases/${version}`;
const http: httpm.HttpClient = new httpm.HttpClient('ghaction-upx');
return (await http.getJson<GitHubRelease>(url)).result;
};

View File

@@ -1,46 +1,47 @@
import * as download from 'download';
import * as fs from 'fs';
import * as os from 'os';
import * as path from 'path';
import * as util from 'util';
import * as restm from 'typed-rest-client/RestClient';
import * as github from './github';
import * as core from '@actions/core';
import * as tc from '@actions/tool-cache';
let osPlat: string = os.platform();
let osArch: string = os.arch();
const osPlat: string = os.platform();
const osArch: string = os.arch();
export async function getUPX(version: string): Promise<string> {
const selected = await determineVersion(version);
if (selected) {
version = selected;
const release: github.GitHubRelease | null = await github.getRelease(version);
if (!release) {
throw new Error(`Cannot find UPX ${version} release`);
}
const semver: string = release.tag_name.replace(/^v/, '');
core.info(`✅ UPX version found: ${version}`);
const tmpdir = fs.mkdtempSync(path.join(os.tmpdir(), 'upx-'));
const fileName = getFileName(version);
const downloadUrl = util.format('https://github.com/upx/upx/releases/download/v%s/%s', version, fileName);
core.info(`✅ UPX version found: ${semver}`);
const filename = util.format('%s.%s', getName(semver), osPlat == 'win32' ? 'zip' : 'tar.xz');
const downloadUrl = util.format('https://github.com/upx/upx/releases/download/v%s/%s', semver, filename);
core.info(`⬇️ Downloading ${downloadUrl}...`);
await download.default(downloadUrl, tmpdir, {filename: fileName});
const downloadPath: string = await tc.downloadTool(downloadUrl);
core.debug(`Downloaded to ${downloadPath}`);
core.info('📦 Extracting UPX...');
let extPath: string = tmpdir;
let extPath: string;
if (osPlat == 'win32') {
extPath = await tc.extractZip(`${tmpdir}/${fileName}`);
extPath = await tc.extractZip(downloadPath);
} else {
extPath = await tc.extractTar(`${tmpdir}/${fileName}`, undefined, 'x');
extPath = await tc.extractTar(downloadPath, undefined, 'x');
}
core.debug(`Extracted to ${extPath}`);
return path.join(extPath, getFileNameWithoutExt(version), osPlat == 'win32' ? 'upx.exe' : 'upx');
const cachePath: string = await tc.cacheDir(extPath, 'ghaction-upx', semver);
core.debug(`Cached to ${cachePath}`);
const exePath: string = path.join(cachePath, getName(semver), osPlat == 'win32' ? 'upx.exe' : 'upx');
core.debug(`Exe path is ${exePath}`);
return exePath;
}
function getFileName(version: string): string {
const ext: string = osPlat == 'win32' ? 'zip' : 'tar.xz';
return util.format('%s.%s', getFileNameWithoutExt(version), ext);
}
function getFileNameWithoutExt(version: string): string {
function getName(version: string): string {
let platform: string = '';
if (osPlat == 'win32') {
platform = osArch == 'x64' ? 'win64' : 'win32';
@@ -49,26 +50,3 @@ function getFileNameWithoutExt(version: string): string {
}
return util.format('upx-%s-%s', version, platform);
}
interface GitHubRelease {
tag_name: string;
}
async function determineVersion(version: string): Promise<string> {
let rest: restm.RestClient = new restm.RestClient('ghaction-upx', 'https://github.com', undefined, {
headers: {
Accept: 'application/json'
}
});
if (version !== 'latest') {
version = `v${version}`;
}
let res: restm.IRestResponse<GitHubRelease> = await rest.get<GitHubRelease>(`/upx/upx/releases/${version}`);
if (res.statusCode != 200 || res.result === null) {
throw new Error(`Cannot find UPX ${version} release (http ${res.statusCode})`);
}
return res.result.tag_name.replace(/^v/, '');
}

View File

@@ -1,10 +1,10 @@
import * as installer from './installer';
import * as fs from 'fs';
import * as os from 'os';
import * as installer from './installer';
import * as core from '@actions/core';
import * as exec from '@actions/exec';
export async function run(silent?: boolean) {
async function run(): Promise<void> {
try {
if (os.platform() == 'darwin') {
core.setFailed('Not supported on darwin platform');
@@ -14,16 +14,16 @@ export async function run(silent?: boolean) {
const version = core.getInput('version') || 'latest';
const file = core.getInput('file', {required: true});
const args = core.getInput('args');
const upx = await installer.getUPX(version);
if (!fs.existsSync(file)) {
core.setFailed(`File to compress not found: ${file}`);
core.setFailed(`File to compress not found: ${file}`);
return;
}
console.log('🏃 Running UPX...');
await exec.exec(`${upx} ${args} ${file}`, undefined, {
silent: silent
});
const upx = await installer.getUPX(version);
core.info('🏃 Running UPX...');
await exec.exec(`${upx} ${args} ${file}`);
} catch (error) {
core.setFailed(error.message);
}

View File

@@ -10,7 +10,8 @@
"rootDir": "./src",
"strict": true,
"noImplicitAny": false,
"esModuleInterop": true
"esModuleInterop": true,
"sourceMap": true
},
"exclude": ["node_modules", "**/*.test.ts"]
}