1 Commits
main ... v4.2.0

Author SHA1 Message Date
aef5ea64d0 切换源 2023-10-23 02:31:04 +08:00
3 changed files with 105 additions and 4 deletions

View File

@@ -142,7 +142,7 @@ describe('setup-go', () => {
os.platform = 'darwin';
os.arch = 'x64';
const match = await im.getInfoFromManifest('1.9.7', true, 'mocktoken');
const match = await im.getInfoFromManifest('1.21', true, 'mocktoken');
expect(match).toBeDefined();
expect(match!.resolvedVersion).toBe('1.9.7');
expect(match!.type).toBe('manifest');

43
dist/setup/index.js vendored
View File

@@ -61385,7 +61385,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.resolveStableVersionInput = exports.parseGoVersionFile = exports.makeSemver = exports.getVersionsDist = exports.findMatch = exports.getInfoFromManifest = exports.getManifest = exports.extractGoArchive = exports.getGo = void 0;
exports.resolveStableVersionInput = exports.parseGoVersionFile = exports.makeSemver = exports.getVersionsDist = exports.findMatch = exports.getInfoFromManifest = exports.getManifestFromRepo = exports.getManifest = exports.extractGoArchive = exports.getGo = void 0;
const tc = __importStar(__nccwpck_require__(7784));
const core = __importStar(__nccwpck_require__(2186));
const path = __importStar(__nccwpck_require__(1017));
@@ -61568,10 +61568,49 @@ function extractGoArchive(archivePath) {
exports.extractGoArchive = extractGoArchive;
function getManifest(auth) {
return __awaiter(this, void 0, void 0, function* () {
return tc.getManifestFromRepo('actions', 'go-versions', auth, 'main');
return getManifestFromRepo('actions', 'go-versions', auth, 'main');
});
}
exports.getManifest = getManifest;
function getManifestFromRepo(owner, repo, auth, branch = 'master') {
return __awaiter(this, void 0, void 0, function* () {
let releases = [];
const treeUrl = `https://gitea.icodef.com/api/v1/repos/${owner}/${repo}/git/trees/${branch}`;
const http = new httpm.HttpClient('tool-cache');
const headers = {};
if (auth) {
core.debug('set auth');
headers.authorization = auth;
}
const response = yield http.getJson(treeUrl, headers);
if (!response.result) {
return releases;
}
let manifestUrl = '';
for (const item of response.result.tree) {
if (item.path === 'versions-manifest.json') {
manifestUrl = item.url;
break;
}
}
headers['accept'] = 'application/vnd.github.VERSION.raw';
const versionsRaw = yield (yield http.get(manifestUrl, headers)).readBody();
const base64 = JSON.parse(versionsRaw);
let tmp = Buffer.from(base64['content'], 'base64').toString('ascii');
if (tmp) {
// shouldn't be needed but protects against invalid json saved with BOM
tmp = tmp.replace(/^\uFEFF/, '');
try {
releases = JSON.parse(tmp);
}
catch (_a) {
core.debug('Invalid json');
}
}
return releases;
});
}
exports.getManifestFromRepo = getManifestFromRepo;
function getInfoFromManifest(versionSpec, stable, auth, arch = os_1.default.arch(), manifest) {
return __awaiter(this, void 0, void 0, function* () {
let info = null;

View File

@@ -7,6 +7,8 @@ import * as sys from './system';
import fs from 'fs';
import os from 'os';
import {StableReleaseAlias} from './utils';
import {IToolRelease} from '@actions/tool-cache';
import {OutgoingHttpHeaders} from 'http';
type InstallationType = 'dist' | 'manifest';
@@ -275,7 +277,67 @@ export async function extractGoArchive(archivePath: string): Promise<string> {
}
export async function getManifest(auth: string | undefined) {
return tc.getManifestFromRepo('actions', 'go-versions', auth, 'main');
return getManifestFromRepo('actions', 'go-versions', auth, 'main');
}
interface GitHubTreeItem {
path: string;
size: string;
url: string;
}
interface GitHubTree {
tree: GitHubTreeItem[];
truncated: boolean;
}
export async function getManifestFromRepo(
owner: string,
repo: string,
auth?: string,
branch = 'master'
): Promise<IToolRelease[]> {
let releases: IToolRelease[] = [];
const treeUrl = `https://gitea.icodef.com/api/v1/repos/${owner}/${repo}/git/trees/${branch}`;
const http: httpm.HttpClient = new httpm.HttpClient('tool-cache');
const headers: OutgoingHttpHeaders = {};
if (auth) {
core.debug('set auth');
headers.authorization = auth;
}
const response = await http.getJson<GitHubTree>(treeUrl, headers);
if (!response.result) {
return releases;
}
let manifestUrl = '';
for (const item of response.result.tree) {
if (item.path === 'versions-manifest.json') {
manifestUrl = item.url;
break;
}
}
headers['accept'] = 'application/vnd.github.VERSION.raw';
const versionsRaw = await (await http.get(manifestUrl, headers)).readBody();
const base64 = JSON.parse(versionsRaw);
let tmp = Buffer.from(base64['content'], 'base64').toString('ascii');
if (tmp) {
// shouldn't be needed but protects against invalid json saved with BOM
tmp = tmp.replace(/^\uFEFF/, '');
try {
releases = JSON.parse(tmp);
} catch {
core.debug('Invalid json');
}
}
return releases;
}
export async function getInfoFromManifest(