mirror of
https://github.com/crazy-max/ghaction-upx.git
synced 2024-11-22 02:16:09 -07:00
Merge pull request #192 from crazy-max/fix-dl
check latest and tagged releases using releases-json
This commit is contained in:
commit
76c12355bd
|
@ -1,16 +0,0 @@
|
||||||
import {describe, expect, it} from '@jest/globals';
|
|
||||||
import * as github from '../src/github';
|
|
||||||
|
|
||||||
describe('github', () => {
|
|
||||||
it('returns latest UPX GitHub release', async () => {
|
|
||||||
const release = await github.getRelease('latest');
|
|
||||||
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');
|
|
||||||
expect(release).not.toBeNull();
|
|
||||||
expect(release?.tag_name).toEqual('v3.96');
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -2,6 +2,30 @@ import {describe, expect, it} from '@jest/globals';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as installer from '../src/installer';
|
import * as installer from '../src/installer';
|
||||||
|
|
||||||
|
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', async () => {
|
||||||
|
await expect(installer.getRelease('foo')).rejects.toThrowError(
|
||||||
|
new Error(
|
||||||
|
'Cannot find UPX release foo in https://raw.githubusercontent.com/crazy-max/ghaction-upx/master/.github/upx-releases.json'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('installer', () => {
|
describe('installer', () => {
|
||||||
it('acquires v3.95 version of UPX', async () => {
|
it('acquires v3.95 version of UPX', async () => {
|
||||||
const upx = await installer.getUPX('v3.95');
|
const upx = await installer.getUPX('v3.95');
|
||||||
|
|
2
dist/index.js
generated
vendored
2
dist/index.js
generated
vendored
File diff suppressed because one or more lines are too long
2
dist/index.js.map
generated
vendored
2
dist/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
|
@ -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 = `https://github.com/upx/upx/releases/${version}`;
|
|
||||||
const http: httpm.HttpClient = new httpm.HttpClient('ghaction-upx');
|
|
||||||
return (await http.getJson<GitHubRelease>(url)).result;
|
|
||||||
};
|
|
|
@ -1,22 +1,40 @@
|
||||||
import * as os from 'os';
|
import * as os from 'os';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as util from 'util';
|
import * as util from 'util';
|
||||||
import * as github from './github';
|
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
|
import * as httpm from '@actions/http-client';
|
||||||
import * as tc from '@actions/tool-cache';
|
import * as tc from '@actions/tool-cache';
|
||||||
|
|
||||||
const osPlat: string = os.platform();
|
const osPlat: string = os.platform();
|
||||||
const osArch: string = os.arch();
|
const osArch: string = os.arch();
|
||||||
|
|
||||||
export async function getUPX(version: string): Promise<string> {
|
export interface GitHubRelease {
|
||||||
core.startGroup(`Checking UPX ${version} release...`);
|
id: number;
|
||||||
const release: github.GitHubRelease | null = await github.getRelease(version);
|
tag_name: string;
|
||||||
if (!release) {
|
html_url: string;
|
||||||
throw new Error(`Cannot find UPX ${version} release`);
|
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/, '');
|
const semver: string = release.tag_name.replace(/^v/, '');
|
||||||
core.info(`UPX ${semver} found`);
|
core.info(`UPX ${semver} found`);
|
||||||
core.endGroup();
|
|
||||||
|
|
||||||
const filename = util.format('%s.%s', getName(semver), osPlat == 'win32' ? 'zip' : 'tar.xz');
|
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);
|
const downloadUrl = util.format('https://github.com/upx/upx/releases/download/v%s/%s', semver, filename);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user