mirror of
https://github.com/crazy-max/ghaction-upx.git
synced 2026-04-14 10:32:59 -06:00
Compare commits
248 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c83f378efc | ||
|
|
ece6c7aefc | ||
|
|
ba752d785c | ||
|
|
4c1efe3556 | ||
|
|
4691e381bf | ||
|
|
d316ed7335 | ||
|
|
c4146ab44f | ||
|
|
99b83110e8 | ||
|
|
05b8d23b78 | ||
|
|
339ea5e81e | ||
|
|
8ed20ae6fd | ||
|
|
4b5f05bec4 | ||
|
|
37e3f51e7b | ||
|
|
1118c925fc | ||
|
|
22a759a2ac | ||
|
|
aed328ad51 | ||
|
|
e40426c154 | ||
|
|
1a040c51a1 | ||
|
|
aa792c6991 | ||
|
|
93c44e0fbf | ||
|
|
7364ee396a | ||
|
|
c2be7c0e51 | ||
|
|
490553544c | ||
|
|
0d2b39edbf | ||
|
|
920c832385 | ||
|
|
4e1017043f | ||
|
|
9839d94df1 | ||
|
|
431a9f4c97 | ||
|
|
7054f155b5 | ||
|
|
5c81813acf | ||
|
|
c0392600bd | ||
|
|
b3bfdb342f | ||
|
|
9d974f0bf5 | ||
|
|
02ec95e12a | ||
|
|
e90e22ee9e | ||
|
|
ebe27778d5 | ||
|
|
a2f9558717 | ||
|
|
9b113d69b3 | ||
|
|
5c2495d8c5 | ||
|
|
d8679b5aba | ||
|
|
208d1a4703 | ||
|
|
e4f8b1afe3 | ||
|
|
98a5b6dc55 | ||
|
|
db8cc9515a | ||
|
|
0611e9b059 | ||
|
|
9ae418490f | ||
|
|
c50a32206a | ||
|
|
bc957b5008 | ||
|
|
753df44ceb | ||
|
|
b80076a108 | ||
|
|
89befed9a1 | ||
|
|
9c4157adde | ||
|
|
3b6774bbf1 | ||
|
|
eae762b1a8 | ||
|
|
228e793ac6 | ||
|
|
303645cb72 | ||
|
|
768043258e | ||
|
|
05f1368902 | ||
|
|
d0b058af6b | ||
|
|
bc548a3f9e | ||
|
|
525b2b9d14 | ||
|
|
de21b8cbed | ||
|
|
b9b8f6c885 | ||
|
|
ff965ece8d | ||
|
|
5deb7f8ace | ||
|
|
922ae56856 | ||
|
|
c57ba98218 | ||
|
|
087f99ec8e | ||
|
|
e8855ae11b | ||
|
|
df365deb87 | ||
|
|
6cb7267ce1 | ||
|
|
3511e74605 | ||
|
|
8085c47593 | ||
|
|
cf0a26615e | ||
|
|
06e76b7e3d | ||
|
|
3c058fcaf8 | ||
|
|
390fee0372 | ||
|
|
d824723552 | ||
|
|
18c19a3a3c | ||
|
|
b4ff921d59 | ||
|
|
b263cf2a91 | ||
|
|
fc6941f5cb | ||
|
|
4b6254ec24 | ||
|
|
b51bbe71e0 | ||
|
|
8b9fc9539f | ||
|
|
04196a5976 | ||
|
|
3854409c84 | ||
|
|
2f2e4253d1 | ||
|
|
b3885dada4 | ||
|
|
910cc4de3a | ||
|
|
071b6f63ac | ||
|
|
9169abd346 | ||
|
|
487c5b1270 | ||
|
|
54d948a749 | ||
|
|
5f0334cb1b | ||
|
|
7f0c123988 | ||
|
|
279e766952 | ||
|
|
058ce2e91a | ||
|
|
a4c7e33c03 | ||
|
|
bd605356e8 | ||
|
|
6d946854f4 | ||
|
|
f073aa65b4 | ||
|
|
894c4caedf | ||
|
|
7ebe5ff18c | ||
|
|
44de3abeda | ||
|
|
e1028f1f17 | ||
|
|
e946ae938e | ||
|
|
e7e7b14f87 | ||
|
|
03bd05f834 | ||
|
|
abeeedd55f | ||
|
|
84fe304c84 | ||
|
|
bada1c6e0a | ||
|
|
a0b0b319be | ||
|
|
a7cbc445ae | ||
|
|
48041fd66e | ||
|
|
8252949326 | ||
|
|
0fc45e9126 | ||
|
|
9465f624dd | ||
|
|
9eba60dcc9 | ||
|
|
4fd68cb082 | ||
|
|
81a846ee13 | ||
|
|
6abbb7ec37 | ||
|
|
54c2561f69 | ||
|
|
d280f9562f | ||
|
|
4d946a7137 | ||
|
|
fbfc4f37fe | ||
|
|
ff4a15c5a4 | ||
|
|
392f94885d | ||
|
|
deed33da1f | ||
|
|
e74668b8fe | ||
|
|
89f782418b | ||
|
|
91dad0f873 | ||
|
|
d021f9b324 | ||
|
|
d3616beaf8 | ||
|
|
1d4b28a26b | ||
|
|
45272fece1 | ||
|
|
5ab3223647 | ||
|
|
349653b2d1 | ||
|
|
2409e442cb | ||
|
|
d91472faac | ||
|
|
fd0d6460ff | ||
|
|
d19e416e3c | ||
|
|
85eb57b388 | ||
|
|
71ca9e0465 | ||
|
|
db3a3050f2 | ||
|
|
e85fa95304 | ||
|
|
36e0037c79 | ||
|
|
82c927c412 | ||
|
|
da2853e8b5 | ||
|
|
1d17dec12c | ||
|
|
c619ac25e7 | ||
|
|
b8d61b28e9 | ||
|
|
217a1bd1f9 | ||
|
|
f7e908e5b9 | ||
|
|
84033c6664 | ||
|
|
15e7963e05 | ||
|
|
754ef232a0 | ||
|
|
dbf74e34eb | ||
|
|
918a9dd3cd | ||
|
|
48ab6ba97a | ||
|
|
24851354e2 | ||
|
|
97d457995a | ||
|
|
aa4e82eb0f | ||
|
|
34f1525686 | ||
|
|
ceda108afe | ||
|
|
7fdadc3d8b | ||
|
|
bc2a7f0205 | ||
|
|
76aba877ac | ||
|
|
d43ef3b8fc | ||
|
|
663f81ff55 | ||
|
|
0ecb9bbbf3 | ||
|
|
d9dbb9c3ca | ||
|
|
2034dbc765 | ||
|
|
2b3459b026 | ||
|
|
76c12355bd | ||
|
|
c544706a19 | ||
|
|
c26e09cbb4 | ||
|
|
4c84b78119 | ||
|
|
66ae810f53 | ||
|
|
6f73f46fce | ||
|
|
99ca5b010b | ||
|
|
04c1b0be04 | ||
|
|
ce00daae27 | ||
|
|
7648f29744 | ||
|
|
7d4b8f5604 | ||
|
|
a584dfa158 | ||
|
|
001bed2881 | ||
|
|
4cd391c02d | ||
|
|
39152071b7 | ||
|
|
cd7336ce6f | ||
|
|
9a5a78f329 | ||
|
|
503b2cafe4 | ||
|
|
81cdab3516 | ||
|
|
6a7ea9d3b5 | ||
|
|
f2cd5c8bcf | ||
|
|
d3d674826f | ||
|
|
18fa74d3c7 | ||
|
|
04f08f9455 | ||
|
|
809cb08e23 | ||
|
|
c4d364e37a | ||
|
|
eb67a7a701 | ||
|
|
4fce58bf0c | ||
|
|
461ecd9597 | ||
|
|
f8b60c9628 | ||
|
|
9b23a6fac7 | ||
|
|
f23c8215b7 | ||
|
|
745b8598ff | ||
|
|
b761847537 | ||
|
|
a4c77c24d7 | ||
|
|
54ced3d059 | ||
|
|
81c243439e | ||
|
|
ec1f8096e1 | ||
|
|
9f2ed58b4e | ||
|
|
b7511689c6 | ||
|
|
3ebfd4c3ac | ||
|
|
9e3f61b245 | ||
|
|
a81b371a71 | ||
|
|
acc3d0d5e3 | ||
|
|
1069732c84 | ||
|
|
d114a3cea9 | ||
|
|
ab164ca748 | ||
|
|
35ddca1ce9 | ||
|
|
a816ebd088 | ||
|
|
86ff19095b | ||
|
|
fa38cda44f | ||
|
|
3cedaab34e | ||
|
|
e5fb52be38 | ||
|
|
768453fe74 | ||
|
|
5b59beecb8 | ||
|
|
8ca2932d09 | ||
|
|
9f1bde9a57 | ||
|
|
325d0a4087 | ||
|
|
7070b31d6a | ||
|
|
4910783e91 | ||
|
|
1ebf61db85 | ||
|
|
925acc7207 | ||
|
|
228b9aebd5 | ||
|
|
32f88c4e79 | ||
|
|
4ef79548f1 | ||
|
|
d478341167 | ||
|
|
7a73864628 | ||
|
|
5d94edca26 | ||
|
|
056e68db2b | ||
|
|
806d622b77 | ||
|
|
701c9836f7 | ||
|
|
55283a30e8 | ||
|
|
cb13001a65 | ||
|
|
cf88c4c484 |
12
.dockerignore
Normal file
12
.dockerignore
Normal file
@@ -0,0 +1,12 @@
|
||||
/coverage
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -1,2 +1,4 @@
|
||||
/.yarn/releases/** binary
|
||||
/.yarn/plugins/** binary
|
||||
/dist/** linguist-generated=true
|
||||
/lib/** linguist-generated=true
|
||||
|
||||
20
.github/CONTRIBUTING.md
vendored
20
.github/CONTRIBUTING.md
vendored
@@ -2,18 +2,20 @@
|
||||
|
||||
Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great.
|
||||
|
||||
Contributions to this project are [released](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license) to the public under the [project's open source license](LICENSE).
|
||||
Contributions to this project are [released](https://docs.github.com/en/github/site-policy/github-terms-of-service#6-contributions-under-repository-license)
|
||||
to the public under the [project's open source license](LICENSE).
|
||||
|
||||
## Submitting a pull request
|
||||
|
||||
1. [Fork](https://github.com/crazy-max/ghaction-upx/fork) and clone the repository
|
||||
2. Configure and install the dependencies: `yarn install`
|
||||
3. Make sure the tests pass on your machine: `yarn run test`
|
||||
4. Create a new branch: `git checkout -b my-branch-name`
|
||||
5. Make your change, add tests, and make sure the tests still pass
|
||||
6. Run pre-checkin: `yarn run pre-checkin`
|
||||
7. Push to your fork and [submit a pull request](https://github.com/crazy-max/ghaction-upx/compare)
|
||||
8. Pat your self on the back and wait for your pull request to be reviewed and merged.
|
||||
3. Create a new branch: `git checkout -b my-branch-name`
|
||||
4. Make your changes
|
||||
5. Make sure the tests pass: `docker buildx bake test`
|
||||
6. Format code and build javascript artifacts: `docker buildx bake pre-checkin`
|
||||
7. Validate all code has correctly formatted and built: `docker buildx bake validate`
|
||||
8. Push to your fork and [submit a pull request](https://github.com/crazy-max/ghaction-upx/compare)
|
||||
9. Pat your self on the back and wait for your pull request to be reviewed and merged.
|
||||
|
||||
Here are a few things you can do that will increase the likelihood of your pull request being accepted:
|
||||
|
||||
@@ -26,5 +28,5 @@ Here are a few things you can do that will increase the likelihood of your pull
|
||||
## Resources
|
||||
|
||||
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
|
||||
- [Using Pull Requests](https://help.github.com/articles/about-pull-requests/)
|
||||
- [GitHub Help](https://help.github.com)
|
||||
- [Using Pull Requests](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests)
|
||||
- [GitHub Help](https://docs.github.com/en)
|
||||
|
||||
101
.github/ISSUE_TEMPLATE/bug.yml
vendored
Normal file
101
.github/ISSUE_TEMPLATE/bug.yml
vendored
Normal file
@@ -0,0 +1,101 @@
|
||||
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
|
||||
name: Bug Report
|
||||
description: Report a bug
|
||||
labels:
|
||||
- kind/bug
|
||||
- status/triage
|
||||
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Support guidelines
|
||||
description: Please read the support guidelines before proceeding.
|
||||
options:
|
||||
- label: I've read the [support guidelines](https://github.com/crazy-max/ghaction-upx/blob/master/.github/SUPPORT.md)
|
||||
required: true
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: I've found a bug and checked that ...
|
||||
description: |
|
||||
Make sure that your request fulfills all of the following requirements. If one requirement cannot be satisfied, explain in detail why.
|
||||
options:
|
||||
- label: ... the documentation does not mention anything about my problem
|
||||
- label: ... there are no open or closed issues that are related to my problem
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Description
|
||||
description: |
|
||||
Please provide a brief description of the bug in 1-2 sentences.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Expected behaviour
|
||||
description: |
|
||||
Please describe precisely what you'd expect to happen.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Actual behaviour
|
||||
description: |
|
||||
Please describe precisely what is actually happening.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: |
|
||||
Please describe the steps to reproduce the bug.
|
||||
placeholder: |
|
||||
1. ...
|
||||
2. ...
|
||||
3. ...
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Repository URL
|
||||
description: >
|
||||
Enter the URL of the repository where you are experiencing the
|
||||
issue. If your repository is private, provide a link to a minimal
|
||||
repository that reproduces the issue.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Workflow run URL
|
||||
description: >
|
||||
Enter the URL of the GitHub Action workflow run that fails (e.g.
|
||||
`https://github.com/<user>/<repo>/actions/runs/<id>`)
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: YAML workflow
|
||||
description: |
|
||||
Provide the YAML of the workflow that's causing the issue.
|
||||
Make sure to remove any sensitive information.
|
||||
render: yaml
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Workflow logs
|
||||
description: >
|
||||
[Attach](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/attaching-files)
|
||||
the [log file of your workflow run](https://docs.github.com/en/actions/managing-workflow-runs/using-workflow-run-logs#downloading-logs)
|
||||
and make sure to remove any sensitive information.
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional info
|
||||
description: |
|
||||
Please provide any additional information that seem useful.
|
||||
33
.github/ISSUE_TEMPLATE/bug_report.md
vendored
33
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,33 +0,0 @@
|
||||
---
|
||||
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.
|
||||
6
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
6
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: Questions and Discussions
|
||||
url: https://github.com/crazy-max/ghaction-upx/discussions/new
|
||||
about: Use Github Discussions to ask questions and/or open discussion topics.
|
||||
15
.github/ISSUE_TEMPLATE/feature.yml
vendored
Normal file
15
.github/ISSUE_TEMPLATE/feature.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
|
||||
name: Feature request
|
||||
description: Missing functionality? Come tell us about it!
|
||||
labels:
|
||||
- kind/enhancement
|
||||
- status/triage
|
||||
|
||||
body:
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: What is the feature you want to see?
|
||||
validations:
|
||||
required: true
|
||||
13
.github/dependabot.yml
vendored
13
.github/dependabot.yml
vendored
@@ -4,19 +4,16 @@ updates:
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "06:00"
|
||||
timezone: "Europe/Paris"
|
||||
labels:
|
||||
- ":game_die: dependencies"
|
||||
- ":robot: bot"
|
||||
- "kind/dependencies"
|
||||
- "bot"
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "06:00"
|
||||
timezone: "Europe/Paris"
|
||||
versioning-strategy: "increase"
|
||||
allow:
|
||||
- dependency-type: "production"
|
||||
labels:
|
||||
- ":game_die: dependencies"
|
||||
- ":robot: bot"
|
||||
- "kind/dependencies"
|
||||
- "bot"
|
||||
|
||||
BIN
.github/ghaction-upx.png
vendored
Normal file
BIN
.github/ghaction-upx.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.3 KiB |
118
.github/labels.yml
vendored
118
.github/labels.yml
vendored
@@ -1,77 +1,69 @@
|
||||
## more info https://github.com/crazy-max/ghaction-github-labeler
|
||||
- # automerge
|
||||
name: ":bell: automerge"
|
||||
color: "8f4fbc"
|
||||
description: ""
|
||||
- # bot
|
||||
name: ":robot: bot"
|
||||
-
|
||||
name: "bot"
|
||||
color: "69cde9"
|
||||
description: ""
|
||||
- # bug
|
||||
name: ":bug: bug"
|
||||
color: "b60205"
|
||||
description: ""
|
||||
- # dependencies
|
||||
name: ":game_die: dependencies"
|
||||
color: "0366d6"
|
||||
description: ""
|
||||
- # documentation
|
||||
name: ":memo: documentation"
|
||||
color: "c5def5"
|
||||
description: ""
|
||||
- # duplicate
|
||||
name: ":busts_in_silhouette: duplicate"
|
||||
color: "cccccc"
|
||||
description: ""
|
||||
- # enhancement
|
||||
name: ":sparkles: enhancement"
|
||||
color: "0054ca"
|
||||
description: ""
|
||||
- # feature request
|
||||
name: ":bulb: feature request"
|
||||
color: "0e8a16"
|
||||
description: ""
|
||||
- # feedback
|
||||
name: ":mega: feedback"
|
||||
color: "03a9f4"
|
||||
description: ""
|
||||
- # future maybe
|
||||
name: ":rocket: future maybe"
|
||||
color: "fef2c0"
|
||||
description: ""
|
||||
- # good first issue
|
||||
name: ":hatching_chick: good first issue"
|
||||
-
|
||||
name: "good first issue"
|
||||
color: "7057ff"
|
||||
description: ""
|
||||
- # help wanted
|
||||
name: ":pray: help wanted"
|
||||
-
|
||||
name: "help wanted"
|
||||
color: "4caf50"
|
||||
description: ""
|
||||
- # hold
|
||||
name: ":hand: hold"
|
||||
color: "24292f"
|
||||
-
|
||||
name: "area/ci"
|
||||
color: "ed9ca9"
|
||||
description: ""
|
||||
- # invalid
|
||||
name: ":no_entry_sign: invalid"
|
||||
-
|
||||
name: "kind/bug"
|
||||
color: "b60205"
|
||||
description: ""
|
||||
-
|
||||
name: "kind/dependencies"
|
||||
color: "0366d6"
|
||||
description: ""
|
||||
-
|
||||
name: "kind/docs"
|
||||
color: "c5def5"
|
||||
description: ""
|
||||
-
|
||||
name: "kind/duplicate"
|
||||
color: "cccccc"
|
||||
description: ""
|
||||
-
|
||||
name: "kind/enhancement"
|
||||
color: "0054ca"
|
||||
description: ""
|
||||
-
|
||||
name: "kind/invalid"
|
||||
color: "e6e6e6"
|
||||
description: ""
|
||||
- # maybe bug
|
||||
name: ":interrobang: maybe bug"
|
||||
color: "ff5722"
|
||||
description: ""
|
||||
- # needs more info
|
||||
name: ":thinking: needs more info"
|
||||
color: "795548"
|
||||
description: ""
|
||||
- # question
|
||||
name: ":question: question"
|
||||
color: "3f51b5"
|
||||
description: ""
|
||||
- # upstream
|
||||
name: ":eyes: upstream"
|
||||
-
|
||||
name: "kind/upstream"
|
||||
color: "fbca04"
|
||||
description: ""
|
||||
- # wontfix
|
||||
name: ":coffin: wontfix"
|
||||
-
|
||||
name: "kind/wontfix"
|
||||
color: "ffffff"
|
||||
description: ""
|
||||
-
|
||||
name: "status/automerge"
|
||||
color: "8f4fbc"
|
||||
description: ""
|
||||
-
|
||||
name: "status/needs-investigation"
|
||||
color: "e6625b"
|
||||
description: ""
|
||||
-
|
||||
name: "status/needs-more-info"
|
||||
color: "795548"
|
||||
description: ""
|
||||
-
|
||||
name: "status/stale"
|
||||
color: "237da0"
|
||||
description: ""
|
||||
-
|
||||
name: "status/triage"
|
||||
color: "dde4b7"
|
||||
description: ""
|
||||
|
||||
406
.github/upx-releases.json
vendored
Normal file
406
.github/upx-releases.json
vendored
Normal file
@@ -0,0 +1,406 @@
|
||||
{
|
||||
"latest": {
|
||||
"id": 274789817,
|
||||
"tag_name": "v5.1.0",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v5.1.0",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-riscv64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-win64.zip"
|
||||
]
|
||||
},
|
||||
"v5.1.0": {
|
||||
"id": 274789817,
|
||||
"tag_name": "v5.1.0",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v5.1.0",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-riscv64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v5.1.0/upx-5.1.0-win64.zip"
|
||||
]
|
||||
},
|
||||
"v5.0.2": {
|
||||
"id": 233751065,
|
||||
"tag_name": "v5.0.2",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v5.0.2",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-win64.zip"
|
||||
]
|
||||
},
|
||||
"v5.0.1": {
|
||||
"id": 216714091,
|
||||
"tag_name": "v5.0.1",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v5.0.1",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v5.0.1/upx-5.0.1-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.1/upx-5.0.1-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.1/upx-5.0.1-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.1/upx-5.0.1-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.1/upx-5.0.1-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.1/upx-5.0.1-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.1/upx-5.0.1-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.1/upx-5.0.1-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.1/upx-5.0.1-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.1/upx-5.0.1-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.1/upx-5.0.1-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.1/upx-5.0.1-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.1/upx-5.0.1-win64.zip"
|
||||
]
|
||||
},
|
||||
"v5.0.0": {
|
||||
"id": 201485424,
|
||||
"tag_name": "v5.0.0",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v5.0.0",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v5.0.0/upx-5.0.0-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.0/upx-5.0.0-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.0/upx-5.0.0-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.0/upx-5.0.0-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.0/upx-5.0.0-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.0/upx-5.0.0-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.0/upx-5.0.0-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.0/upx-5.0.0-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.0/upx-5.0.0-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.0/upx-5.0.0-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.0/upx-5.0.0-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.0/upx-5.0.0-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v5.0.0/upx-5.0.0-win64.zip"
|
||||
]
|
||||
},
|
||||
"v4.2.4": {
|
||||
"id": 154915740,
|
||||
"tag_name": "v4.2.4",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v4.2.4",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-win64.zip"
|
||||
]
|
||||
},
|
||||
"v4.2.3": {
|
||||
"id": 148738382,
|
||||
"tag_name": "v4.2.3",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v4.2.3",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v4.2.3/upx-4.2.3-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.3/upx-4.2.3-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.3/upx-4.2.3-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.3/upx-4.2.3-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.3/upx-4.2.3-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.3/upx-4.2.3-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.3/upx-4.2.3-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.3/upx-4.2.3-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.3/upx-4.2.3-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.3/upx-4.2.3-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.3/upx-4.2.3-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.3/upx-4.2.3-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.3/upx-4.2.3-win64.zip"
|
||||
]
|
||||
},
|
||||
"v4.2.2": {
|
||||
"id": 135721197,
|
||||
"tag_name": "v4.2.2",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v4.2.2",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v4.2.2/upx-4.2.2-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.2/upx-4.2.2-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.2/upx-4.2.2-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.2/upx-4.2.2-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.2/upx-4.2.2-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.2/upx-4.2.2-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.2/upx-4.2.2-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.2/upx-4.2.2-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.2/upx-4.2.2-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.2/upx-4.2.2-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.2/upx-4.2.2-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.2/upx-4.2.2-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.2/upx-4.2.2-win64.zip"
|
||||
]
|
||||
},
|
||||
"v4.2.1": {
|
||||
"id": 127511011,
|
||||
"tag_name": "v4.2.1",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v4.2.1",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.1/upx-4.2.1-win64.zip"
|
||||
]
|
||||
},
|
||||
"v4.2.0": {
|
||||
"id": 126740650,
|
||||
"tag_name": "v4.2.0",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v4.2.0",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-win64.zip"
|
||||
]
|
||||
},
|
||||
"v4.1.0": {
|
||||
"id": 115584145,
|
||||
"tag_name": "v4.1.0",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v4.1.0",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-win64.zip"
|
||||
]
|
||||
},
|
||||
"v4.0.2": {
|
||||
"id": 90665948,
|
||||
"tag_name": "v4.0.2",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v4.0.2",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-win64.zip"
|
||||
]
|
||||
},
|
||||
"v4.0.1": {
|
||||
"id": 83324543,
|
||||
"tag_name": "v4.0.1",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v4.0.1",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v4.0.1/upx-4.0.1-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.1/upx-4.0.1-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.1/upx-4.0.1-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.1/upx-4.0.1-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.1/upx-4.0.1-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.1/upx-4.0.1-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.1/upx-4.0.1-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.1/upx-4.0.1-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.1/upx-4.0.1-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.1/upx-4.0.1-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.1/upx-4.0.1-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.1/upx-4.0.1-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.1/upx-4.0.1-win64.zip"
|
||||
]
|
||||
},
|
||||
"v4.0.0": {
|
||||
"id": 81373677,
|
||||
"tag_name": "v4.0.0",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v4.0.0",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v4.0.0/upx-4.0.0-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.0/upx-4.0.0-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.0/upx-4.0.0-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.0/upx-4.0.0-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.0/upx-4.0.0-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.0/upx-4.0.0-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.0/upx-4.0.0-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.0/upx-4.0.0-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.0/upx-4.0.0-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.0/upx-4.0.0-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.0/upx-4.0.0-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.0/upx-4.0.0-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v4.0.0/upx-4.0.0-win64.zip"
|
||||
]
|
||||
},
|
||||
"v3.99": {
|
||||
"id": 81217748,
|
||||
"tag_name": "v3.99",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v3.99",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v3.99/upx-3.99-src.tar.xz"
|
||||
]
|
||||
},
|
||||
"v3.96": {
|
||||
"id": 23054413,
|
||||
"tag_name": "v3.96",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v3.96",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v3.96/upx-3.96-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.96/upx-3.96-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.96/upx-3.96-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.96/upx-3.96-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.96/upx-3.96-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.96/upx-3.96-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.96/upx-3.96-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.96/upx-3.96-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.96/upx-3.96-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.96/upx-3.96-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.96/upx-3.96-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.96/upx-3.96-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.96/upx-3.96-win64.zip"
|
||||
]
|
||||
},
|
||||
"v3.95": {
|
||||
"id": 12577195,
|
||||
"tag_name": "v3.95",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v3.95",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v3.95/upx-3.95-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.95/upx-3.95-arm64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.95/upx-3.95-arm_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.95/upx-3.95-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.95/upx-3.95-dos.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.95/upx-3.95-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.95/upx-3.95-mips_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.95/upx-3.95-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.95/upx-3.95-powerpc64le_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.95/upx-3.95-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.95/upx-3.95-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.95/upx-3.95-win32.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.95/upx-3.95-win64.zip"
|
||||
]
|
||||
},
|
||||
"v3.94": {
|
||||
"id": 6366171,
|
||||
"tag_name": "v3.94",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v3.94",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v3.94/upx-3.94-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.94/upx-3.94-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.94/upx-3.94-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.94/upx-3.94-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.94/upx-3.94-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.94/upx-3.94-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.94/upx394a.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.94/upx394d.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.94/upx394w.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.94/upx394wce.zip"
|
||||
]
|
||||
},
|
||||
"v3.93": {
|
||||
"id": 5296538,
|
||||
"tag_name": "v3.93",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v3.93",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v3.93/upx-3.93-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.93/upx-3.93-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.93/upx-3.93-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.93/upx-3.93-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.93/upx-3.93-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.93/upx-3.93-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.93/upx393a.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.93/upx393d.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.93/upx393w.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.93/upx393wce.zip"
|
||||
]
|
||||
},
|
||||
"v3.92": {
|
||||
"id": 4888235,
|
||||
"tag_name": "v3.92",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v3.92",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v3.92/upx-3.92-amd64_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.92/upx-3.92-armeb_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.92/upx-3.92-i386_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.92/upx-3.92-mipsel_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.92/upx-3.92-powerpc_linux.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.92/upx-3.92-src.tar.xz",
|
||||
"https://github.com/upx/upx/releases/download/v3.92/upx392a.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.92/upx392d.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.92/upx392w.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.92/upx392wce.zip"
|
||||
]
|
||||
},
|
||||
"v3.91": {
|
||||
"id": 4087014,
|
||||
"tag_name": "v3.91",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v3.91",
|
||||
"assets": [
|
||||
"https://github.com/upx/upx/releases/download/v3.91/upx-3.91-amd64_linux.tar.bz2",
|
||||
"https://github.com/upx/upx/releases/download/v3.91/upx-3.91-armeb_linux.tar.bz2",
|
||||
"https://github.com/upx/upx/releases/download/v3.91/upx-3.91-i386_linux.tar.bz2",
|
||||
"https://github.com/upx/upx/releases/download/v3.91/upx-3.91-mipsel_linux.tar.bz2",
|
||||
"https://github.com/upx/upx/releases/download/v3.91/upx-3.91-powerpc_linux.tar.bz2",
|
||||
"https://github.com/upx/upx/releases/download/v3.91/upx-3.91-src.tar.bz2",
|
||||
"https://github.com/upx/upx/releases/download/v3.91/upx391a.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.91/upx391d.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.91/upx391w.zip",
|
||||
"https://github.com/upx/upx/releases/download/v3.91/upx391wce.zip"
|
||||
]
|
||||
},
|
||||
"v3.00": {
|
||||
"id": 4258222,
|
||||
"tag_name": "v3.00",
|
||||
"html_url": "https://github.com/upx/upx/releases/tag/v3.00",
|
||||
"assets": []
|
||||
}
|
||||
}
|
||||
77
.github/workflows/ci.yml
vendored
77
.github/workflows/ci.yml
vendored
@@ -1,16 +1,25 @@
|
||||
name: ci
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 10 * * *' # everyday at 10am
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- releases/v*
|
||||
- cron: '0 10 * * *'
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- releases/v*
|
||||
- 'master'
|
||||
- 'releases/v*'
|
||||
tags:
|
||||
- 'v*'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '.github/upx-releases.json'
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
@@ -24,33 +33,55 @@ jobs:
|
||||
version:
|
||||
- latest
|
||||
- v3.95
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
file: https://github.com/crazy-max/firefox-history-merger/releases/download/2.4.0/firefox-history-merger-linux-amd64
|
||||
- os: windows-latest
|
||||
file: https://github.com/crazy-max/firefox-history-merger/releases/download/2.4.0/firefox-history-merger-windows-4.0-amd64.exe
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v2.3.3
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Download file
|
||||
id: download
|
||||
name: Download files
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir ./bin
|
||||
if [ "${{ matrix.os }}" == "windows-latest" ]; then
|
||||
curl -sSLk ${{ matrix.file }} -o ./bin/firefox-history-merger.exe
|
||||
echo ::set-output name=filename::./bin/firefox-history-merger.exe
|
||||
if [ "${{ matrix.os }}" = "windows-latest" ]; then
|
||||
curl -sSLk https://github.com/crazy-max/firefox-history-merger/releases/download/2.4.0/firefox-history-merger-windows-4.0-386.exe -o ./bin/firefox-history-merger-windows-4.0-386.exe
|
||||
curl -sSLk https://github.com/crazy-max/firefox-history-merger/releases/download/2.4.0/firefox-history-merger-windows-4.0-amd64.exe -o ./bin/firefox-history-merger-windows-4.0-amd64.exe
|
||||
else
|
||||
curl -sSLk ${{ matrix.file }} -o ./bin/firefox-history-merger
|
||||
chmod +x ./bin/firefox-history-merger
|
||||
echo ::set-output name=filename::./bin/firefox-history-merger
|
||||
curl -sSLk https://github.com/crazy-max/firefox-history-merger/releases/download/2.4.0/firefox-history-merger-linux-386 -o ./bin/firefox-history-merger-linux-386
|
||||
curl -sSLk https://github.com/crazy-max/firefox-history-merger/releases/download/2.4.0/firefox-history-merger-linux-amd64 -o ./bin/firefox-history-merger-linux-amd64
|
||||
fi
|
||||
shell: bash
|
||||
chmod +x ./bin/firefox-history-merger*
|
||||
-
|
||||
name: UPX
|
||||
uses: ./
|
||||
with:
|
||||
version: ${{ matrix.version }}
|
||||
file: ${{ steps.download.outputs.filename }}
|
||||
files: |
|
||||
./bin/firefox-history-merger*
|
||||
args: -fq
|
||||
|
||||
install-only:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- windows-latest
|
||||
version:
|
||||
- latest
|
||||
- v4.0.2
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: UPX
|
||||
uses: ./
|
||||
with:
|
||||
version: ${{ matrix.version }}
|
||||
install-only: true
|
||||
-
|
||||
name: Verify
|
||||
run: |
|
||||
which upx
|
||||
upx --version
|
||||
|
||||
23
.github/workflows/labels.yml
vendored
23
.github/workflows/labels.yml
vendored
@@ -1,5 +1,13 @@
|
||||
name: labels
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
@@ -7,14 +15,25 @@ on:
|
||||
paths:
|
||||
- '.github/labels.yml'
|
||||
- '.github/workflows/labels.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/labels.yml'
|
||||
- '.github/workflows/labels.yml'
|
||||
|
||||
jobs:
|
||||
labeler:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
# same as global permissions
|
||||
contents: read
|
||||
# required to update labels
|
||||
issues: write
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v2.3.3
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Run Labeler
|
||||
uses: crazy-max/ghaction-github-labeler@v3.1.0
|
||||
uses: crazy-max/ghaction-github-labeler@v5
|
||||
with:
|
||||
dry-run: ${{ github.event_name == 'pull_request' }}
|
||||
|
||||
30
.github/workflows/pre-checkin.yml
vendored
30
.github/workflows/pre-checkin.yml
vendored
@@ -1,30 +0,0 @@
|
||||
name: pre-checkin
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
|
||||
jobs:
|
||||
pre-checkin:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v2.3.3
|
||||
-
|
||||
name: Install
|
||||
run: yarn install
|
||||
-
|
||||
name: Pre-checkin
|
||||
run: yarn run pre-checkin
|
||||
-
|
||||
name: Check for uncommitted changes
|
||||
run: |
|
||||
if [[ `git status --porcelain` ]]; then
|
||||
git status --porcelain
|
||||
echo "::warning::Found changes. Please run 'yarn run pre-checkin' and push"
|
||||
fi
|
||||
39
.github/workflows/test.yml
vendored
39
.github/workflows/test.yml
vendored
@@ -1,39 +1,38 @@
|
||||
name: test
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- releases/v*
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
- 'master'
|
||||
- 'releases/v*'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
- '.github/upx-releases.json'
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- windows-latest
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v2.3.3
|
||||
-
|
||||
name: Install
|
||||
run: yarn install
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Test
|
||||
run: yarn run test
|
||||
uses: docker/bake-action@v6
|
||||
with:
|
||||
source: .
|
||||
targets: test
|
||||
-
|
||||
name: Upload coverage
|
||||
uses: codecov/codecov-action@v1.0.13
|
||||
if: success()
|
||||
uses: codecov/codecov-action@v5
|
||||
with:
|
||||
files: ./coverage/clover.xml
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
file: ./coverage/clover.xml
|
||||
|
||||
66
.github/workflows/upx-releases-json.yml
vendored
Normal file
66
.github/workflows/upx-releases-json.yml
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
name: upx-releases-json
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 */12 * * *'
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '.github/upx-releases.json'
|
||||
|
||||
jobs:
|
||||
generate:
|
||||
uses: crazy-max/.github/.github/workflows/releases-json.yml@fa6141aedf23596fb8bdcceab9cce8dadaa31bd9
|
||||
with:
|
||||
repository: upx/upx
|
||||
artifact_name: upx-releases-json
|
||||
filename: upx-releases.json
|
||||
secrets: inherit
|
||||
|
||||
open-pr:
|
||||
runs-on: ubuntu-22.04
|
||||
if: github.event_name != 'pull_request'
|
||||
permissions:
|
||||
# required to create PR
|
||||
contents: write
|
||||
pull-requests: write
|
||||
needs:
|
||||
- generate
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Download
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: upx-releases-json
|
||||
path: .github
|
||||
-
|
||||
name: Commit changes
|
||||
run: |
|
||||
git add -A .
|
||||
-
|
||||
name: Create PR
|
||||
uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # v7.0.5
|
||||
with:
|
||||
base: master
|
||||
branch: bot/upx-releases-json
|
||||
commit-message: "update .github/upx-releases.json"
|
||||
signoff: true
|
||||
delete-branch: true
|
||||
title: "Update `.github/upx-releases.json`"
|
||||
body: |
|
||||
Update `.github/upx-releases.json` to keep in sync with [https://github.com/upx/upx](https://github.com/upx/upx).
|
||||
draft: false
|
||||
49
.github/workflows/validate.yml
vendored
Normal file
49
.github/workflows/validate.yml
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
name: validate
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
- 'releases/v*'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '.github/upx-releases.json'
|
||||
|
||||
jobs:
|
||||
prepare:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
targets: ${{ steps.generate.outputs.targets }}
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: List targets
|
||||
id: generate
|
||||
uses: docker/bake-action/subaction/list-targets@v6
|
||||
with:
|
||||
target: validate
|
||||
|
||||
validate:
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- prepare
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
target: ${{ fromJson(needs.prepare.outputs.targets) }}
|
||||
steps:
|
||||
-
|
||||
name: Validate
|
||||
uses: docker/bake-action@v6
|
||||
with:
|
||||
targets: ${{ matrix.target }}
|
||||
71
.gitignore
vendored
71
.gitignore
vendored
@@ -1,12 +1,5 @@
|
||||
/.dev
|
||||
node_modules/
|
||||
lib
|
||||
# https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
|
||||
|
||||
# Jetbrains
|
||||
/.idea
|
||||
/*.iml
|
||||
|
||||
# Rest of the file pulled from https://github.com/github/gitignore/blob/master/Node.gitignore
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
@@ -14,6 +7,7 @@ npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
@@ -24,34 +18,14 @@ pids
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# TypeScript v1 declaration files
|
||||
typings/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
@@ -61,36 +35,19 @@ typings/
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
# dotenv environment variable files
|
||||
.env
|
||||
.env.test
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.env.local
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
|
||||
# next.js build output
|
||||
.next
|
||||
|
||||
# nuxt.js build output
|
||||
.nuxt
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
|
||||
6
.prettierignore
Normal file
6
.prettierignore
Normal file
@@ -0,0 +1,6 @@
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# yarn v2
|
||||
.yarn/
|
||||
@@ -6,6 +6,5 @@
|
||||
"singleQuote": true,
|
||||
"trailingComma": "none",
|
||||
"bracketSpacing": false,
|
||||
"arrowParens": "avoid",
|
||||
"parser": "typescript"
|
||||
"arrowParens": "avoid"
|
||||
}
|
||||
|
||||
17
.yarnrc.yml
Normal file
17
.yarnrc.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
# https://yarnpkg.com/configuration/yarnrc
|
||||
|
||||
compressionLevel: mixed
|
||||
enableGlobalCache: false
|
||||
enableHardenedMode: true
|
||||
|
||||
logFilters:
|
||||
- code: YN0013
|
||||
level: discard
|
||||
- code: YN0019
|
||||
level: discard
|
||||
- code: YN0076
|
||||
level: discard
|
||||
- code: YN0086
|
||||
level: discard
|
||||
|
||||
nodeLinker: node-modules
|
||||
32
CHANGELOG.md
32
CHANGELOG.md
@@ -1,32 +0,0 @@
|
||||
# Changelog
|
||||
|
||||
## 1.3.3 (2020/10/01)
|
||||
|
||||
* Fix CVE-2020-15228
|
||||
|
||||
## 1.3.2 (2020/05/11)
|
||||
|
||||
* Update README
|
||||
|
||||
## 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
|
||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 CrazyMax
|
||||
Copyright (c) 2020-2026 CrazyMax
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
76
README.md
76
README.md
@@ -1,6 +1,6 @@
|
||||
[](https://github.com/crazy-max/ghaction-upx/releases/latest)
|
||||
[](https://github.com/marketplace/actions/upx-github-action)
|
||||
[](https://github.com/crazy-max/ghaction-upx/actions?workflow=test)
|
||||
[](https://github.com/crazy-max/ghaction-upx/actions?workflow=test)
|
||||
[](https://codecov.io/gh/crazy-max/ghaction-upx)
|
||||
[](https://github.com/sponsors/crazy-max)
|
||||
[](https://www.paypal.me/crazyws)
|
||||
@@ -9,14 +9,15 @@
|
||||
|
||||
GitHub Action for [UPX](https://github.com/upx/upx), the Ultimate Packer for eXecutables.
|
||||
|
||||

|
||||
|
||||
___
|
||||
|
||||
* [Usage](#usage)
|
||||
* [Customizing](#customizing)
|
||||
* [inputs](#inputs)
|
||||
* [Keep up-to-date with GitHub Dependabot](#keep-up-to-date-with-github-dependabot)
|
||||
* [Limitation](#limitation)
|
||||
* [How can I help?](#how-can-i-help)
|
||||
* [Contributing](#contributing)
|
||||
* [License](#license)
|
||||
|
||||
## Usage
|
||||
@@ -25,7 +26,6 @@ ___
|
||||
name: upx
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
|
||||
jobs:
|
||||
@@ -34,51 +34,65 @@ jobs:
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Run UPX
|
||||
uses: crazy-max/ghaction-upx@v1
|
||||
uses: crazy-max/ghaction-upx@v3
|
||||
with:
|
||||
version: latest
|
||||
file: ./bin/mybinary
|
||||
files: |
|
||||
./bin/*.exe
|
||||
args: -fq
|
||||
```
|
||||
|
||||
If you just want to install UPX:
|
||||
|
||||
```yaml
|
||||
name: upx
|
||||
|
||||
on:
|
||||
push:
|
||||
|
||||
jobs:
|
||||
upx:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Install UPX
|
||||
uses: crazy-max/ghaction-upx@v3
|
||||
with:
|
||||
install-only: true
|
||||
-
|
||||
name: UPX version
|
||||
run: upx --version
|
||||
```
|
||||
|
||||
## Customizing
|
||||
|
||||
### inputs
|
||||
|
||||
Following inputs can be used as `step.with` keys
|
||||
The following inputs can be used as `step.with` keys
|
||||
|
||||
| Name | Type | Default | Description |
|
||||
|---------------|---------|-----------|---------------------------------|
|
||||
| `version` | String | `latest` | UPX version. Example: `v3.95` |
|
||||
| `file` | String | | File to compress (**required**) |
|
||||
| `args` | String | | Arguments to pass to UPX |
|
||||
|
||||
## Keep up-to-date with GitHub Dependabot
|
||||
|
||||
Since [Dependabot](https://docs.github.com/en/github/administering-a-repository/keeping-your-actions-up-to-date-with-github-dependabot)
|
||||
has [native GitHub Actions support](https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates#package-ecosystem),
|
||||
to enable it on your GitHub repo all you need to do is add the `.github/dependabot.yml` file:
|
||||
|
||||
```yaml
|
||||
version: 2
|
||||
updates:
|
||||
# Maintain dependencies for GitHub Actions
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
```
|
||||
| Name | Type | Default | Description |
|
||||
|----------------|--------|----------|------------------------------------------------------------|
|
||||
| `version` | String | `latest` | UPX version. Example: `v3.95` |
|
||||
| `files` | String | | Newline-delimited list of path globs for files to compress |
|
||||
| `args` | String | | Arguments to pass to UPX |
|
||||
| `install-only` | String | `false` | Just install UPX |
|
||||
|
||||
## Limitation
|
||||
|
||||
This action is only available for Linux and Windows [virtual environments](https://help.github.com/en/articles/virtual-environments-for-github-actions#supported-virtual-environments-and-hardware-resources).
|
||||
|
||||
## How can I help?
|
||||
## Contributing
|
||||
|
||||
All kinds of contributions are welcome :raised_hands:! The most basic way to show your support is to star :star2: the project, or to raise issues :speech_balloon: You can also support this project by [**becoming a sponsor on GitHub**](https://github.com/sponsors/crazy-max) :clap: or by making a [Paypal donation](https://www.paypal.me/crazyws) to ensure this journey continues indefinitely! :rocket:
|
||||
Want to contribute? Awesome! The most basic way to show your support is to star
|
||||
the project, or to raise issues. You can also support this project by [**becoming a sponsor on GitHub**](https://github.com/sponsors/crazy-max)
|
||||
or by making a [PayPal donation](https://www.paypal.me/crazyws) to ensure this
|
||||
journey continues indefinitely!
|
||||
|
||||
Thanks again for your support, it is much appreciated! :pray:
|
||||
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
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');
|
||||
});
|
||||
});
|
||||
@@ -1,16 +0,0 @@
|
||||
import fs = require('fs');
|
||||
import * as installer from '../src/installer';
|
||||
|
||||
describe('installer', () => {
|
||||
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);
|
||||
});
|
||||
17
action.yml
17
action.yml
@@ -11,13 +11,22 @@ inputs:
|
||||
description: 'UPX version. Example: 3.95'
|
||||
default: 'latest'
|
||||
required: false
|
||||
file:
|
||||
description: 'File to compress'
|
||||
required: true
|
||||
files:
|
||||
description: 'Newline-delimited list of path globs for files to compress'
|
||||
required: false
|
||||
args:
|
||||
description: 'Arguments to pass to UPX'
|
||||
required: false
|
||||
file:
|
||||
deprecationMessage: 'file is deprecated. Please use files input instead.'
|
||||
description: 'File to compress'
|
||||
required: false
|
||||
install-only:
|
||||
description: 'Just install upx'
|
||||
default: 'false'
|
||||
required: false
|
||||
|
||||
|
||||
runs:
|
||||
using: 'node12'
|
||||
using: 'node24'
|
||||
main: 'dist/index.js'
|
||||
|
||||
9
codecov.yml
Normal file
9
codecov.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
comment: false
|
||||
|
||||
coverage:
|
||||
status:
|
||||
patch: false
|
||||
project: false
|
||||
|
||||
github_checks:
|
||||
annotations: false
|
||||
91
dev.Dockerfile
Normal file
91
dev.Dockerfile
Normal file
@@ -0,0 +1,91 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
ARG NODE_VERSION=24
|
||||
|
||||
FROM node:${NODE_VERSION}-alpine AS base
|
||||
RUN apk add --no-cache cpio findutils git rsync
|
||||
WORKDIR /src
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache <<EOT
|
||||
set -e
|
||||
corepack enable
|
||||
yarn --version
|
||||
yarn config set --home enableTelemetry 0
|
||||
EOT
|
||||
|
||||
FROM base AS deps
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules \
|
||||
yarn install && mkdir /vendor && cp yarn.lock /vendor
|
||||
|
||||
FROM scratch AS vendor-update
|
||||
COPY --from=deps /vendor /
|
||||
|
||||
FROM deps AS vendor-validate
|
||||
RUN --mount=type=bind,target=.,rw <<EOT
|
||||
set -e
|
||||
git add -A
|
||||
cp -rf /vendor/* .
|
||||
if [ -n "$(git status --porcelain -- yarn.lock)" ]; then
|
||||
echo >&2 'ERROR: Vendor result differs. Please vendor your package with "docker buildx bake vendor-update"'
|
||||
git status --porcelain -- yarn.lock
|
||||
exit 1
|
||||
fi
|
||||
EOT
|
||||
|
||||
FROM deps AS build
|
||||
RUN --mount=target=/context \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules <<EOT
|
||||
set -e
|
||||
rsync -a /context/. .
|
||||
rm -rf dist
|
||||
yarn run build
|
||||
mkdir /out
|
||||
cp -r dist /out
|
||||
EOT
|
||||
|
||||
FROM scratch AS build-update
|
||||
COPY --from=build /out /
|
||||
|
||||
FROM build AS build-validate
|
||||
RUN --mount=target=/context \
|
||||
--mount=target=.,type=tmpfs <<EOT
|
||||
set -e
|
||||
rsync -a /context/. .
|
||||
git add -A
|
||||
rm -rf dist
|
||||
cp -rf /out/* .
|
||||
if [ -n "$(git status --porcelain -- dist)" ]; then
|
||||
echo >&2 'ERROR: Build result differs. Please build first with "docker buildx bake build"'
|
||||
git status --porcelain -- dist
|
||||
exit 1
|
||||
fi
|
||||
EOT
|
||||
|
||||
FROM deps AS format
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules \
|
||||
yarn run format && mkdir /out && find . -name '*.ts' -not -path './node_modules/*' -not -path './.yarn/*' | cpio -pdm /out
|
||||
|
||||
FROM scratch AS format-update
|
||||
COPY --from=format /out /
|
||||
|
||||
FROM deps AS lint
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules \
|
||||
yarn run lint
|
||||
|
||||
FROM deps AS test
|
||||
ENV RUNNER_TEMP=/tmp/github_runner
|
||||
ENV RUNNER_TOOL_CACHE=/tmp/github_tool_cache
|
||||
RUN --mount=type=bind,target=.,rw \
|
||||
--mount=type=cache,target=/src/.yarn/cache \
|
||||
--mount=type=cache,target=/src/node_modules \
|
||||
yarn run test --coverage --coverage.reportsDirectory=/tmp/coverage
|
||||
|
||||
FROM scratch AS test-coverage
|
||||
COPY --from=test /tmp/coverage /
|
||||
5285
dist/index.js
generated
vendored
5285
dist/index.js
generated
vendored
File diff suppressed because one or more lines are too long
1
dist/index.js.map
generated
vendored
Normal file
1
dist/index.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
207
dist/licenses.txt
generated
vendored
Normal file
207
dist/licenses.txt
generated
vendored
Normal file
@@ -0,0 +1,207 @@
|
||||
@actions/core
|
||||
MIT
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright 2019 GitHub
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
@actions/exec
|
||||
MIT
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright 2019 GitHub
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
@actions/http-client
|
||||
MIT
|
||||
Actions Http Client for Node.js
|
||||
|
||||
Copyright (c) GitHub, Inc.
|
||||
|
||||
All rights reserved.
|
||||
|
||||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
||||
associated documentation files (the "Software"), to deal in the Software without restriction,
|
||||
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
@actions/io
|
||||
MIT
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright 2019 GitHub
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
@actions/tool-cache
|
||||
MIT
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright 2019 GitHub
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
glob
|
||||
BlueOak-1.0.0
|
||||
All packages under `src/` are licensed according to the terms in
|
||||
their respective `LICENSE` or `LICENSE.md` files.
|
||||
|
||||
The remainder of this project is licensed under the Blue Oak
|
||||
Model License, as follows:
|
||||
|
||||
-----
|
||||
|
||||
# Blue Oak Model License
|
||||
|
||||
Version 1.0.0
|
||||
|
||||
## Purpose
|
||||
|
||||
This license gives everyone as much permission to work with
|
||||
this software as possible, while protecting contributors
|
||||
from liability.
|
||||
|
||||
## Acceptance
|
||||
|
||||
In order to receive this license, you must agree to its
|
||||
rules. The rules of this license are both obligations
|
||||
under that agreement and conditions to your license.
|
||||
You must not do anything with this software that triggers
|
||||
a rule that you cannot or will not follow.
|
||||
|
||||
## Copyright
|
||||
|
||||
Each contributor licenses you to do everything with this
|
||||
software that would otherwise infringe that contributor's
|
||||
copyright in it.
|
||||
|
||||
## Notices
|
||||
|
||||
You must ensure that everyone who gets a copy of
|
||||
any part of this software from you, with or without
|
||||
changes, also gets the text of this license or a link to
|
||||
<https://blueoakcouncil.org/license/1.0.0>.
|
||||
|
||||
## Excuse
|
||||
|
||||
If anyone notifies you in writing that you have not
|
||||
complied with [Notices](#notices), you can keep your
|
||||
license by taking all practical steps to comply within 30
|
||||
days after the notice. If you do not do so, your license
|
||||
ends immediately.
|
||||
|
||||
## Patent
|
||||
|
||||
Each contributor licenses you to do everything with this
|
||||
software that would otherwise infringe any patent claims
|
||||
they can license or become able to license.
|
||||
|
||||
## Reliability
|
||||
|
||||
No contributor can revoke this license.
|
||||
|
||||
## No Liability
|
||||
|
||||
***As far as the law allows, this software comes as is,
|
||||
without any warranty or condition, and no contributor
|
||||
will be liable to anyone for any damages related to this
|
||||
software or this license, under any kind of legal claim.***
|
||||
|
||||
|
||||
semver
|
||||
ISC
|
||||
The ISC License
|
||||
|
||||
Copyright (c) Isaac Z. Schlueter and Contributors
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
|
||||
tunnel
|
||||
MIT
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2012 Koichi Kobayashi
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
undici
|
||||
MIT
|
||||
MIT License
|
||||
|
||||
Copyright (c) Matteo Collina and Undici contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
3
dist/package.json
generated
vendored
Normal file
3
dist/package.json
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
||||
1
dist/sourcemap-register.cjs
generated
vendored
Normal file
1
dist/sourcemap-register.cjs
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
61
docker-bake.hcl
Normal file
61
docker-bake.hcl
Normal file
@@ -0,0 +1,61 @@
|
||||
target "_common" {
|
||||
args = {
|
||||
BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1
|
||||
}
|
||||
}
|
||||
|
||||
group "default" {
|
||||
targets = ["build"]
|
||||
}
|
||||
|
||||
group "pre-checkin" {
|
||||
targets = ["vendor-update", "format", "build"]
|
||||
}
|
||||
|
||||
group "validate" {
|
||||
targets = ["lint", "build-validate", "vendor-validate"]
|
||||
}
|
||||
|
||||
target "build" {
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "build-update"
|
||||
output = ["."]
|
||||
}
|
||||
|
||||
target "build-validate" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "build-validate"
|
||||
output = ["type=cacheonly"]
|
||||
}
|
||||
|
||||
target "format" {
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "format-update"
|
||||
output = ["."]
|
||||
}
|
||||
|
||||
target "lint" {
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "lint"
|
||||
output = ["type=cacheonly"]
|
||||
}
|
||||
|
||||
target "vendor-update" {
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "vendor-update"
|
||||
output = ["."]
|
||||
}
|
||||
|
||||
target "vendor-validate" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "vendor-validate"
|
||||
output = ["type=cacheonly"]
|
||||
}
|
||||
|
||||
target "test" {
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "test-coverage"
|
||||
output = ["./coverage"]
|
||||
}
|
||||
52
eslint.config.mjs
Normal file
52
eslint.config.mjs
Normal file
@@ -0,0 +1,52 @@
|
||||
import {defineConfig} from 'eslint/config';
|
||||
import js from '@eslint/js';
|
||||
import tseslint from '@typescript-eslint/eslint-plugin';
|
||||
import vitest from '@vitest/eslint-plugin';
|
||||
import globals from 'globals';
|
||||
import eslintConfigPrettier from 'eslint-config-prettier/flat';
|
||||
import eslintPluginPrettier from 'eslint-plugin-prettier';
|
||||
|
||||
export default defineConfig([
|
||||
{
|
||||
ignores: ['.yarn/**/*', 'coverage/**/*', 'dist/**/*']
|
||||
},
|
||||
js.configs.recommended,
|
||||
...tseslint.configs['flat/recommended'],
|
||||
eslintConfigPrettier,
|
||||
{
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
files: ['tests/**'],
|
||||
...vitest.configs.recommended,
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node,
|
||||
...vitest.environments.env.globals
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
...vitest.configs.recommended.rules,
|
||||
'vitest/no-conditional-expect': 'error',
|
||||
'vitest/no-disabled-tests': 0
|
||||
}
|
||||
},
|
||||
{
|
||||
plugins: {
|
||||
prettier: eslintPluginPrettier
|
||||
},
|
||||
rules: {
|
||||
'prettier/prettier': 'error',
|
||||
'@typescript-eslint/no-require-imports': [
|
||||
'error',
|
||||
{
|
||||
allowAsImport: true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]);
|
||||
@@ -1,11 +0,0 @@
|
||||
module.exports = {
|
||||
clearMocks: true,
|
||||
moduleFileExtensions: ['js', 'ts'],
|
||||
testEnvironment: 'node',
|
||||
testMatch: ['**/*.test.ts'],
|
||||
testRunner: 'jest-circus/runner',
|
||||
transform: {
|
||||
'^.+\\.ts$': 'ts-jest'
|
||||
},
|
||||
verbose: false
|
||||
}
|
||||
47
package.json
47
package.json
@@ -1,13 +1,14 @@
|
||||
{
|
||||
"name": "upx-github-action",
|
||||
"description": "GitHub Action for UPX, the Ultimate Packer for eXecutables",
|
||||
"main": "lib/main.js",
|
||||
"type": "module",
|
||||
"main": "src/main.ts",
|
||||
"scripts": {
|
||||
"build": "tsc && ncc build",
|
||||
"test": "jest --coverage",
|
||||
"format": "prettier --write **/*.ts",
|
||||
"format-check": "prettier --check **/*.ts",
|
||||
"pre-checkin": "yarn run format && yarn run build"
|
||||
"build": "ncc build src/main.ts --source-map --minify --license licenses.txt",
|
||||
"lint": "eslint --max-warnings=0 .",
|
||||
"format": "eslint --fix .",
|
||||
"test": "vitest run",
|
||||
"all": "yarn run build && yarn run format && yarn test"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -19,22 +20,28 @@
|
||||
],
|
||||
"author": "CrazyMax",
|
||||
"license": "MIT",
|
||||
"packageManager": "yarn@4.12.0",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.2.6",
|
||||
"@actions/exec": "^1.0.4",
|
||||
"@actions/http-client": "^1.0.8",
|
||||
"@actions/tool-cache": "^1.6.0"
|
||||
"@actions/core": "^3.0.0",
|
||||
"@actions/exec": "^3.0.0",
|
||||
"@actions/http-client": "^4.0.0",
|
||||
"@actions/tool-cache": "^4.0.0",
|
||||
"glob": "^13.0.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^26.0.14",
|
||||
"@types/node": "^14.11.2",
|
||||
"@vercel/ncc": "^0.24.1",
|
||||
"jest": "^26.4.2",
|
||||
"jest-circus": "^26.4.2",
|
||||
"jest-runtime": "^26.4.2",
|
||||
"prettier": "^2.1.2",
|
||||
"ts-jest": "^26.4.1",
|
||||
"typescript": "^4.0.3",
|
||||
"typescript-formatter": "^7.2.2"
|
||||
"@eslint/js": "^9.39.3",
|
||||
"@types/node": "^24.11.0",
|
||||
"@typescript-eslint/eslint-plugin": "^8.56.1",
|
||||
"@typescript-eslint/parser": "^8.56.1",
|
||||
"@vercel/ncc": "^0.38.4",
|
||||
"@vitest/coverage-v8": "^4.0.18",
|
||||
"@vitest/eslint-plugin": "^1.6.9",
|
||||
"eslint": "^9.39.3",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-prettier": "^5.5.5",
|
||||
"globals": "^17.3.0",
|
||||
"prettier": "^3.8.1",
|
||||
"typescript": "^5.9.3",
|
||||
"vitest": "^4.0.18"
|
||||
}
|
||||
}
|
||||
|
||||
44
src/context.ts
Normal file
44
src/context.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import {lstatSync} from 'fs';
|
||||
import * as glob from 'glob';
|
||||
import * as core from '@actions/core';
|
||||
|
||||
export interface Inputs {
|
||||
version: string;
|
||||
files: string[];
|
||||
args: string;
|
||||
installOnly: boolean;
|
||||
}
|
||||
|
||||
export async function getInputs(): Promise<Inputs> {
|
||||
return {
|
||||
version: core.getInput('version') || 'latest',
|
||||
files: getInputList(core.getInput('files') || core.getInput('file'), true),
|
||||
args: core.getInput('args'),
|
||||
installOnly: core.getBooleanInput('install-only')
|
||||
};
|
||||
}
|
||||
|
||||
export function getInputList(items: string, ignoreComma?: boolean): string[] {
|
||||
if (items == '') {
|
||||
return [];
|
||||
}
|
||||
return items
|
||||
.split(/\r?\n/)
|
||||
.filter(x => x)
|
||||
.reduce<string[]>(
|
||||
(acc, line) => acc.concat(!ignoreComma ? line.split(',').filter(x => x) : line).map(pat => pat.trim()),
|
||||
[]
|
||||
);
|
||||
}
|
||||
|
||||
export const asyncForEach = async (array, callback) => {
|
||||
for (let index = 0; index < array.length; index++) {
|
||||
await callback(array[index], index, array);
|
||||
}
|
||||
};
|
||||
|
||||
export const resolvePaths = (patterns: string[]): string[] => {
|
||||
return patterns.reduce((acc: string[], pattern: string): string[] => {
|
||||
return acc.concat(glob.sync(pattern).filter(path => lstatSync(path).isFile()));
|
||||
}, []);
|
||||
};
|
||||
@@ -1,12 +0,0 @@
|
||||
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;
|
||||
};
|
||||
@@ -1,52 +1,92 @@
|
||||
import * as os from 'os';
|
||||
import * as path from 'path';
|
||||
import * as util from 'util';
|
||||
import * as github from './github';
|
||||
import * as core from '@actions/core';
|
||||
import * as httpm from '@actions/http-client';
|
||||
import * as tc from '@actions/tool-cache';
|
||||
|
||||
const osPlat: string = os.platform();
|
||||
const osArch: string = os.arch();
|
||||
|
||||
export async function getUPX(version: string): Promise<string> {
|
||||
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/, '');
|
||||
export interface GitHubRelease {
|
||||
id: number;
|
||||
tag_name: string;
|
||||
html_url: string;
|
||||
assets: Array<string>;
|
||||
}
|
||||
|
||||
export const getRelease = async (version: string): Promise<GitHubRelease> => {
|
||||
const url = `https://raw.githubusercontent.com/crazy-max/ghaction-upx/master/.github/upx-releases.json`;
|
||||
const http: httpm.HttpClient = new httpm.HttpClient('ghaction-upx');
|
||||
const resp: httpm.HttpClientResponse = await http.get(url);
|
||||
const body = await resp.readBody();
|
||||
const statusCode = resp.message.statusCode || 500;
|
||||
if (statusCode >= 400) {
|
||||
throw new Error(`Failed to get UPX release ${version} from ${url} with status code ${statusCode}: ${body}`);
|
||||
}
|
||||
const releases = <Record<string, GitHubRelease>>JSON.parse(body);
|
||||
if (!releases[version]) {
|
||||
throw new Error(`Cannot find UPX release ${version} in ${url}`);
|
||||
}
|
||||
return releases[version];
|
||||
};
|
||||
|
||||
export async function getUPX(version: string): Promise<string> {
|
||||
const release: GitHubRelease = await getRelease(version);
|
||||
const semver: string = release.tag_name.replace(/^v/, '');
|
||||
core.info(`UPX ${semver} found`);
|
||||
|
||||
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}...`);
|
||||
const downloadPath: string = await tc.downloadTool(downloadUrl);
|
||||
core.debug(`Downloaded to ${downloadPath}`);
|
||||
core.startGroup(`Downloading ${downloadUrl}...`);
|
||||
|
||||
const downloadPath: string = await tc.downloadTool(downloadUrl);
|
||||
core.info(`Downloaded to ${downloadPath}`);
|
||||
|
||||
core.info('📦 Extracting UPX...');
|
||||
let extPath: string;
|
||||
if (osPlat == 'win32') {
|
||||
extPath = await tc.extractZip(downloadPath);
|
||||
} else {
|
||||
extPath = await tc.extractTar(downloadPath, undefined, 'x');
|
||||
}
|
||||
core.debug(`Extracted to ${extPath}`);
|
||||
core.info(`Extracted to ${extPath}`);
|
||||
|
||||
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}`);
|
||||
core.endGroup();
|
||||
|
||||
return exePath;
|
||||
}
|
||||
|
||||
function getName(version: string): string {
|
||||
let platform: string = '';
|
||||
if (osPlat == 'win32') {
|
||||
platform = osArch == 'x64' ? 'win64' : 'win32';
|
||||
} else if (osPlat == 'linux') {
|
||||
platform = osArch == 'x64' ? 'amd64_linux' : 'i386_linux';
|
||||
let platform: string;
|
||||
switch (osArch) {
|
||||
case 'x64': {
|
||||
platform = osPlat === 'win32' ? 'win64' : 'amd64_' + osPlat;
|
||||
break;
|
||||
}
|
||||
case 'x32': {
|
||||
platform = osPlat === 'win32' ? 'win32' : 'i386_' + osPlat;
|
||||
break;
|
||||
}
|
||||
case 'arm': {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const arm_version = (process.config.variables as any).arm_version;
|
||||
if (arm_version === '7') {
|
||||
platform = 'armeb_' + osPlat;
|
||||
} else {
|
||||
platform = 'arm_' + osPlat;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
platform = osArch + '_' + osPlat;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return util.format('upx-%s-%s', version, platform);
|
||||
}
|
||||
|
||||
30
src/main.ts
30
src/main.ts
@@ -1,9 +1,11 @@
|
||||
import * as fs from 'fs';
|
||||
import * as os from 'os';
|
||||
import * as installer from './installer';
|
||||
import * as path from 'path';
|
||||
import * as core from '@actions/core';
|
||||
import * as exec from '@actions/exec';
|
||||
|
||||
import * as context from './context.js';
|
||||
import * as installer from './installer.js';
|
||||
|
||||
async function run(): Promise<void> {
|
||||
try {
|
||||
if (os.platform() == 'darwin') {
|
||||
@@ -11,19 +13,27 @@ async function run(): Promise<void> {
|
||||
return;
|
||||
}
|
||||
|
||||
const version = core.getInput('version') || 'latest';
|
||||
const file = core.getInput('file', {required: true});
|
||||
const args = core.getInput('args');
|
||||
const inputs: context.Inputs = await context.getInputs();
|
||||
const upx = await installer.getUPX(inputs.version);
|
||||
|
||||
if (!fs.existsSync(file)) {
|
||||
core.setFailed(`File to compress not found: ${file}`);
|
||||
if (inputs.installOnly) {
|
||||
const dir = path.dirname(upx);
|
||||
core.addPath(dir);
|
||||
core.debug(`Added ${dir} to PATH`);
|
||||
return;
|
||||
}
|
||||
|
||||
const upx = await installer.getUPX(version);
|
||||
const files: string[] = context.resolvePaths(inputs.files);
|
||||
if (files.length == 0) {
|
||||
core.warning(`No files were found. Please check the 'files' input.`);
|
||||
return;
|
||||
}
|
||||
|
||||
core.info('🏃 Running UPX...');
|
||||
await exec.exec(`${upx} ${args} ${file}`);
|
||||
await context.asyncForEach(files, async filepath => {
|
||||
core.startGroup(`Compressing ${filepath}...`);
|
||||
await exec.exec(`${upx} ${inputs.args} ${filepath}`);
|
||||
core.endGroup();
|
||||
});
|
||||
} catch (error) {
|
||||
core.setFailed(error.message);
|
||||
}
|
||||
|
||||
81
tests/context.test.ts
Normal file
81
tests/context.test.ts
Normal file
@@ -0,0 +1,81 @@
|
||||
import {describe, expect, it} from 'vitest';
|
||||
import * as path from 'path';
|
||||
import * as core from '@actions/core';
|
||||
|
||||
import * as context from '../src/context.js';
|
||||
|
||||
describe('getInputList', () => {
|
||||
it('handles single line correctly', async () => {
|
||||
setInput('foo', 'bar');
|
||||
const res = context.getInputList(core.getInput('foo'));
|
||||
expect(res).toEqual(['bar']);
|
||||
});
|
||||
it('handles multiple lines correctly', async () => {
|
||||
setInput('foo', 'bar\nbaz');
|
||||
const res = context.getInputList(core.getInput('foo'));
|
||||
expect(res).toEqual(['bar', 'baz']);
|
||||
});
|
||||
it('remove empty lines correctly', async () => {
|
||||
setInput('foo', 'bar\n\nbaz');
|
||||
const res = context.getInputList(core.getInput('foo'));
|
||||
expect(res).toEqual(['bar', 'baz']);
|
||||
});
|
||||
it('handles comma correctly', async () => {
|
||||
setInput('foo', 'bar,baz');
|
||||
const res = context.getInputList(core.getInput('foo'));
|
||||
expect(res).toEqual(['bar', 'baz']);
|
||||
});
|
||||
it('remove empty result correctly', async () => {
|
||||
setInput('foo', 'bar,baz,');
|
||||
const res = context.getInputList(core.getInput('foo'));
|
||||
expect(res).toEqual(['bar', 'baz']);
|
||||
});
|
||||
it('handles different new lines correctly', async () => {
|
||||
setInput('foo', 'bar\r\nbaz');
|
||||
const res = context.getInputList(core.getInput('foo'));
|
||||
expect(res).toEqual(['bar', 'baz']);
|
||||
});
|
||||
it('handles different new lines and comma correctly', async () => {
|
||||
setInput('foo', 'bar\r\nbaz,bat');
|
||||
const res = context.getInputList(core.getInput('foo'));
|
||||
expect(res).toEqual(['bar', 'baz', 'bat']);
|
||||
});
|
||||
it('handles multiple lines and ignoring comma correctly', async () => {
|
||||
setInput('files', './bin/binary.exe\n./bin/binary2.exe');
|
||||
const res = context.getInputList(core.getInput('files'), true);
|
||||
expect(res).toEqual(['./bin/binary.exe', './bin/binary2.exe']);
|
||||
});
|
||||
it('handles different new lines and ignoring comma correctly', async () => {
|
||||
setInput('driver-opts', './bin/binary.exe\r\n./bin/binary2.exe');
|
||||
const res = context.getInputList(core.getInput('files'), true);
|
||||
expect(res).toEqual(['./bin/binary.exe', './bin/binary2.exe']);
|
||||
});
|
||||
});
|
||||
|
||||
describe('asyncForEach', () => {
|
||||
it('executes async tasks sequentially', async () => {
|
||||
const testValues = [1, 2, 3, 4, 5];
|
||||
const results: number[] = [];
|
||||
await context.asyncForEach(testValues, async value => {
|
||||
results.push(value);
|
||||
});
|
||||
expect(results).toEqual(testValues);
|
||||
});
|
||||
});
|
||||
|
||||
describe('resolvePaths', () => {
|
||||
it('resolve files given a set of paths', async () => {
|
||||
expect(
|
||||
context.resolvePaths([path.join(__dirname, 'fixtures/data/**/*').split(path.sep).join(path.posix.sep)])
|
||||
).toEqual([path.join(__dirname, 'fixtures/data/foo/bar.txt').split(path.sep).join(path.posix.sep)]);
|
||||
});
|
||||
});
|
||||
|
||||
// See: https://github.com/actions/toolkit/blob/master/packages/core/src/core.ts#L67
|
||||
function getInputName(name: string): string {
|
||||
return `INPUT_${name.replace(/ /g, '_').toUpperCase()}`;
|
||||
}
|
||||
|
||||
function setInput(name: string, value: string): void {
|
||||
process.env[getInputName(name)] = value;
|
||||
}
|
||||
1
tests/fixtures/data/foo/bar.txt
vendored
Normal file
1
tests/fixtures/data/foo/bar.txt
vendored
Normal file
@@ -0,0 +1 @@
|
||||
scan me
|
||||
40
tests/installer.test.ts
Normal file
40
tests/installer.test.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import {describe, expect, it} from 'vitest';
|
||||
import * as fs from 'fs';
|
||||
|
||||
import * as installer from '../src/installer.js';
|
||||
|
||||
describe('getRelease', () => {
|
||||
it('returns latest UPX GitHub release', async () => {
|
||||
const release = await installer.getRelease('latest');
|
||||
expect(release).not.toBeNull();
|
||||
expect(release?.tag_name).not.toEqual('');
|
||||
});
|
||||
|
||||
it('returns v3.95 UPX GitHub release', async () => {
|
||||
const release = await installer.getRelease('v3.95');
|
||||
expect(release).not.toBeNull();
|
||||
expect(release?.id).toEqual(12577195);
|
||||
expect(release?.tag_name).toEqual('v3.95');
|
||||
expect(release?.html_url).toEqual('https://github.com/upx/upx/releases/tag/v3.95');
|
||||
});
|
||||
|
||||
it('unknown release', () => {
|
||||
return expect(installer.getRelease('foo')).rejects.toThrow(
|
||||
new Error(
|
||||
'Cannot find UPX release foo in https://raw.githubusercontent.com/crazy-max/ghaction-upx/master/.github/upx-releases.json'
|
||||
)
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('installer', () => {
|
||||
it('acquires v3.95 version of UPX', async () => {
|
||||
const upx = await installer.getUPX('v3.95');
|
||||
expect(fs.existsSync(upx)).toBe(true);
|
||||
}, 100000);
|
||||
|
||||
it('acquires latest version of UPX', async () => {
|
||||
const upx = await installer.getUPX('latest');
|
||||
expect(fs.existsSync(upx)).toBe(true);
|
||||
}, 100000);
|
||||
});
|
||||
@@ -1,17 +1,15 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es6",
|
||||
"module": "commonjs",
|
||||
"lib": [
|
||||
"es6"
|
||||
],
|
||||
"module": "nodenext",
|
||||
"moduleResolution": "nodenext",
|
||||
"esModuleInterop": true,
|
||||
"newLine": "lf",
|
||||
"outDir": "./lib",
|
||||
"rootDir": "./src",
|
||||
"strict": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"noImplicitAny": false,
|
||||
"esModuleInterop": true,
|
||||
"sourceMap": true
|
||||
"resolveJsonModule": true,
|
||||
"useUnknownInCatchVariables": false
|
||||
},
|
||||
"exclude": ["node_modules", "**/*.test.ts"]
|
||||
"include": ["src/**/*.ts"]
|
||||
}
|
||||
|
||||
16
vitest.config.ts
Normal file
16
vitest.config.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import {defineConfig} from 'vitest/config';
|
||||
|
||||
export default defineConfig({
|
||||
test: {
|
||||
environment: 'node',
|
||||
setupFiles: ['./vitest.setup.ts'],
|
||||
include: ['tests/**/*.test.ts'],
|
||||
coverage: {
|
||||
provider: 'v8',
|
||||
reporter: ['text', 'clover', 'lcov'],
|
||||
reportsDirectory: 'coverage',
|
||||
include: ['src/**/*.ts'],
|
||||
exclude: ['src/main.ts']
|
||||
}
|
||||
}
|
||||
});
|
||||
11
vitest.setup.ts
Normal file
11
vitest.setup.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import * as fs from 'node:fs';
|
||||
import * as os from 'node:os';
|
||||
import * as path from 'node:path';
|
||||
|
||||
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ghaction-upx-'));
|
||||
|
||||
process.env = Object.assign({}, process.env, {
|
||||
TEMP: tmpDir,
|
||||
RUNNER_TEMP: path.join(tmpDir, 'runner-temp'),
|
||||
RUNNER_TOOL_CACHE: path.join(tmpDir, 'runner-tool-cache')
|
||||
});
|
||||
Reference in New Issue
Block a user