feat: implement (optional) semver parsing of version (#213)
This commit is contained in:
parent
de0cc32957
commit
62b67a060c
|
@ -3,7 +3,6 @@ import * as git from '../src/git';
|
||||||
describe('git', () => {
|
describe('git', () => {
|
||||||
it('returns git tag', async () => {
|
it('returns git tag', async () => {
|
||||||
const tag: string = await git.getTag();
|
const tag: string = await git.getTag();
|
||||||
console.log(tag);
|
|
||||||
expect(tag).not.toEqual('');
|
expect(tag).not.toEqual('');
|
||||||
});
|
});
|
||||||
it('checks if tag is dirty', async () => {
|
it('checks if tag is dirty', async () => {
|
||||||
|
@ -11,7 +10,6 @@ describe('git', () => {
|
||||||
});
|
});
|
||||||
it('returns short commit', async () => {
|
it('returns short commit', async () => {
|
||||||
const commit: string = await git.getShortCommit();
|
const commit: string = await git.getShortCommit();
|
||||||
console.log(commit);
|
|
||||||
expect(commit).not.toEqual('');
|
expect(commit).not.toEqual('');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,14 +3,17 @@ import * as github from '../src/github';
|
||||||
describe('github', () => {
|
describe('github', () => {
|
||||||
it('returns latest GoReleaser GitHub release', async () => {
|
it('returns latest GoReleaser GitHub release', async () => {
|
||||||
const release = await github.getRelease('latest');
|
const release = await github.getRelease('latest');
|
||||||
console.log(release);
|
|
||||||
expect(release).not.toBeNull();
|
expect(release).not.toBeNull();
|
||||||
expect(release?.tag_name).not.toEqual('');
|
expect(release?.tag_name).not.toEqual('');
|
||||||
});
|
});
|
||||||
it('returns v0.117.0 GoReleaser GitHub release', async () => {
|
it('returns v0.117.0 GoReleaser GitHub release', async () => {
|
||||||
const release = await github.getRelease('v0.117.0');
|
const release = await github.getRelease('v0.117.0');
|
||||||
console.log(release);
|
|
||||||
expect(release).not.toBeNull();
|
expect(release).not.toBeNull();
|
||||||
expect(release?.tag_name).toEqual('v0.117.0');
|
expect(release?.tag_name).toEqual('v0.117.0');
|
||||||
});
|
});
|
||||||
|
it('returns v0.132.1 GoReleaser GitHub release', async () => {
|
||||||
|
const release = await github.getRelease('~> 0.132');
|
||||||
|
expect(release).not.toBeNull();
|
||||||
|
expect(release?.tag_name).toEqual('v0.132.1');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -4,13 +4,11 @@ import * as installer from '../src/installer';
|
||||||
describe('installer', () => {
|
describe('installer', () => {
|
||||||
it('acquires v0.117.0 version of GoReleaser', async () => {
|
it('acquires v0.117.0 version of GoReleaser', async () => {
|
||||||
const goreleaser = await installer.getGoReleaser('v0.117.0');
|
const goreleaser = await installer.getGoReleaser('v0.117.0');
|
||||||
console.log(goreleaser);
|
|
||||||
expect(fs.existsSync(goreleaser)).toBe(true);
|
expect(fs.existsSync(goreleaser)).toBe(true);
|
||||||
}, 100000);
|
}, 100000);
|
||||||
|
|
||||||
it('acquires latest version of GoReleaser', async () => {
|
it('acquires latest version of GoReleaser', async () => {
|
||||||
const goreleaser = await installer.getGoReleaser('latest');
|
const goreleaser = await installer.getGoReleaser('latest');
|
||||||
console.log(goreleaser);
|
|
||||||
expect(fs.existsSync(goreleaser)).toBe(true);
|
expect(fs.existsSync(goreleaser)).toBe(true);
|
||||||
}, 100000);
|
}, 100000);
|
||||||
});
|
});
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,10 +1,14 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
clearMocks: true,
|
clearMocks: true,
|
||||||
moduleFileExtensions: ['js', 'ts'],
|
moduleFileExtensions: ['js', 'ts'],
|
||||||
setupFiles: ["dotenv/config"],
|
setupFiles: [
|
||||||
|
"dotenv/config",
|
||||||
|
"<rootDir>/src/test_setup.ts"
|
||||||
|
],
|
||||||
testEnvironment: 'node',
|
testEnvironment: 'node',
|
||||||
testMatch: ['**/*.test.ts'],
|
testMatch: ['**/*.test.ts'],
|
||||||
testRunner: 'jest-circus/runner',
|
testRunner: 'jest-circus/runner',
|
||||||
|
testTimeout: 10000,
|
||||||
transform: {
|
transform: {
|
||||||
'^.+\\.ts$': 'ts-jest'
|
'^.+\\.ts$': 'ts-jest'
|
||||||
},
|
},
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
"jest-circus": "^26.0.1",
|
"jest-circus": "^26.0.1",
|
||||||
"jest-runtime": "^26.0.1",
|
"jest-runtime": "^26.0.1",
|
||||||
"prettier": "^2.0.5",
|
"prettier": "^2.0.5",
|
||||||
|
"tmp": "^0.2.1",
|
||||||
"ts-jest": "^26.1.0",
|
"ts-jest": "^26.1.0",
|
||||||
"typescript": "^3.9.5",
|
"typescript": "^3.9.5",
|
||||||
"typescript-formatter": "^7.2.2"
|
"typescript-formatter": "^7.2.2"
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
import * as httpm from '@actions/http-client';
|
import * as httpm from '@actions/http-client';
|
||||||
|
import * as core from '@actions/core';
|
||||||
|
import * as semver from 'semver';
|
||||||
|
|
||||||
export interface GitHubRelease {
|
export interface GitHubRelease {
|
||||||
id: number;
|
id: number;
|
||||||
|
@ -6,7 +8,36 @@ export interface GitHubRelease {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getRelease = async (version: string): Promise<GitHubRelease | null> => {
|
export const getRelease = async (version: string): Promise<GitHubRelease | null> => {
|
||||||
const url: string = `https://github.com/goreleaser/goreleaser/releases/${version}`;
|
const resolvedVersion: string = (await resolveVersion(version)) || version;
|
||||||
|
const url: string = `https://github.com/goreleaser/goreleaser/releases/${resolvedVersion}`;
|
||||||
const http: httpm.HttpClient = new httpm.HttpClient('goreleaser-action');
|
const http: httpm.HttpClient = new httpm.HttpClient('goreleaser-action');
|
||||||
return (await http.getJson<GitHubRelease>(url)).result;
|
return (await http.getJson<GitHubRelease>(url)).result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const resolveVersion = async (version: string): Promise<string | null> => {
|
||||||
|
const allTags: Array<string> | null = await getAllTags();
|
||||||
|
if (!allTags) {
|
||||||
|
throw new Error(`Cannot find GoReleaser tags`);
|
||||||
|
}
|
||||||
|
core.debug(`Found ${allTags.length} tags in total`);
|
||||||
|
|
||||||
|
return semver.maxSatisfying(allTags, version);
|
||||||
|
};
|
||||||
|
|
||||||
|
interface GitHubTag {
|
||||||
|
tag_name: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAllTags = async (): Promise<Array<string>> => {
|
||||||
|
const http: httpm.HttpClient = new httpm.HttpClient('goreleaser-action');
|
||||||
|
const url: string = `https://goreleaser.com/static/releases.json`;
|
||||||
|
const getTags = http.getJson<Array<GitHubTag>>(url);
|
||||||
|
|
||||||
|
return getTags.then(response => {
|
||||||
|
if (response.result == null) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
return response.result.map(obj => obj.tag_name);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
import tmp = require('tmp');
|
||||||
|
|
||||||
|
tmp.setGracefulCleanup();
|
||||||
|
const tmpdir = tmp.dirSync({template: 'goreleaser-XXXXXX'});
|
||||||
|
process.env = Object.assign(process.env, {
|
||||||
|
RUNNER_TEMP: tmpdir.name,
|
||||||
|
RUNNER_TOOL_CACHE: tmpdir.name,
|
||||||
|
GITHUB_ACTION: '1'
|
||||||
|
});
|
|
@ -3381,6 +3381,13 @@ throat@^5.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"
|
resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"
|
||||||
integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==
|
integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==
|
||||||
|
|
||||||
|
tmp@^0.2.1:
|
||||||
|
version "0.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
|
||||||
|
integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
|
||||||
|
dependencies:
|
||||||
|
rimraf "^3.0.0"
|
||||||
|
|
||||||
tmpl@1.0.x:
|
tmpl@1.0.x:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
|
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
|
||||||
|
|
Loading…
Reference in New Issue