diff --git a/dist/setup/index.js b/dist/setup/index.js index 25798cc..3df1eec 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -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,47 @@ 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'; + let versionsRaw = yield (yield http.get(manifestUrl, headers)).readBody(); + if (versionsRaw) { + // shouldn't be needed but protects against invalid json saved with BOM + versionsRaw = versionsRaw.replace(/^\uFEFF/, ''); + try { + releases = JSON.parse(versionsRaw); + } + 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; diff --git a/src/installer.ts b/src/installer.ts index d8ac3a1..57ddc58 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -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,63 @@ export async function extractGoArchive(archivePath: string): Promise { } 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 { + 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(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'; + let versionsRaw = await (await http.get(manifestUrl, headers)).readBody(); + + if (versionsRaw) { + // shouldn't be needed but protects against invalid json saved with BOM + versionsRaw = versionsRaw.replace(/^\uFEFF/, ''); + try { + releases = JSON.parse(versionsRaw); + } catch { + core.debug('Invalid json'); + } + } + + return releases; } export async function getInfoFromManifest(