From 91a5e5da0630ba488d31de7a4c0d6aeb24f536e3 Mon Sep 17 00:00:00 2001 From: Aparna Jyothi Date: Fri, 31 Jan 2025 11:11:24 +0530 Subject: [PATCH] update mirrorURL versions --- dist/setup/index.js | 131 +++++++++- src/distributions/base-distribution.ts | 28 +- src/distributions/base-models.ts | 3 +- src/distributions/nightly/nightly_builds.ts | 18 ++ .../official_builds/official_builds.ts | 243 +++++++++--------- src/distributions/rc/rc_builds.ts | 14 + src/distributions/v8-canary/canary_builds.ts | 13 +- src/main.ts | 1 - 8 files changed, 304 insertions(+), 147 deletions(-) diff --git a/dist/setup/index.js b/dist/setup/index.js index 4a2d9a78..52043c8b 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -100154,6 +100154,14 @@ class BaseDistribution { return response.result || []; }); } + getMirrorUrVersions() { + return __awaiter(this, void 0, void 0, function* () { + const initialUrl = this.getDistributionMirrorUrl(); + const dataUrl = `${initialUrl}/index.json`; + const response = yield this.httpClient.getJson(dataUrl); + return response.result || []; + }); + } getNodejsDistInfo(version) { const osArch = this.translateArchToDistUrl(this.nodeInfo.arch); version = semver_1.default.clean(version) || ''; @@ -100165,7 +100173,7 @@ class BaseDistribution { ? `${fileName}.zip` : `${fileName}.7z` : `${fileName}.tar.gz`; - const initialUrl = this.getDistributionUrl(); + const initialUrl = this.getDistributionMirrorUrl(); const url = `${initialUrl}/v${version}/${urlFileName}`; return { downloadUrl: url, @@ -100406,17 +100414,54 @@ exports.getNodejsDistribution = getNodejsDistribution; "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); const base_distribution_prerelease_1 = __importDefault(__nccwpck_require__(957)); +const core = __importStar(__nccwpck_require__(2186)); class NightlyNodejs extends base_distribution_prerelease_1.default { constructor(nodeInfo) { super(nodeInfo); this.distribution = 'nightly'; } + getDistributionMirrorUrl() { + // Implement the method to return the mirror URL or an empty string if not available + return this.nodeInfo.mirrorURL || ''; + } + // Updated getDistributionUrl method to handle mirror URL or fallback getDistributionUrl() { + // Check if mirrorUrl exists in the nodeInfo and return it if available + const mirrorUrl = this.nodeInfo.mirrorURL; + if (mirrorUrl) { + core.info(`Using mirror URL: ${mirrorUrl}`); + return mirrorUrl; + } + // Default to the official Node.js nightly distribution URL if no mirror URL is provided + core.info('Using default distribution URL for nightly Node.js.'); return 'https://nodejs.org/download/nightly'; } } @@ -100603,6 +100648,13 @@ class OfficialBuilds extends base_distribution_1.default { getDistributionUrl() { return `https://nodejs.org/dist`; } + getDistributionMirrorUrl() { + const mirrorURL = this.nodeInfo.mirrorURL; + if (!mirrorURL) { + throw new Error('Mirror URL is undefined'); + } + return mirrorURL; + } getManifest() { core.debug('Getting manifest from actions/node-versions@main'); return tc.getManifestFromRepo('actions', 'node-versions', this.nodeInfo.auth, 'main'); @@ -100670,17 +100722,9 @@ class OfficialBuilds extends base_distribution_1.default { } downloadFromMirrorURL() { return __awaiter(this, void 0, void 0, function* () { - const nodeJsVersions = yield this.getNodeJsVersions(); - core.info('versions from nodeJSVersions' + nodeJsVersions); + const nodeJsVersions = yield this.getMirrorUrVersions(); const versions = this.filterVersions(nodeJsVersions); - core.info('versions' + versions); const evaluatedVersion = this.evaluateVersions(versions); - core.info('versionSpec' + this.nodeInfo.versionSpec); - if (this.nodeInfo.checkLatest) { - const evaluatedVersion = yield this.findVersionInDist(nodeJsVersions); - this.nodeInfo.versionSpec = evaluatedVersion; - core.info('versionSpec' + this.nodeInfo.versionSpec); - } if (!evaluatedVersion) { throw new Error(`Unable to find Node version '${this.nodeInfo.versionSpec}' for platform ${this.osPlat} and architecture ${this.nodeInfo.arch}.`); } @@ -100714,11 +100758,35 @@ exports["default"] = OfficialBuilds; "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); const base_distribution_1 = __importDefault(__nccwpck_require__(7)); +const core = __importStar(__nccwpck_require__(2186)); class RcBuild extends base_distribution_1.default { constructor(nodeInfo) { super(nodeInfo); @@ -100726,6 +100794,16 @@ class RcBuild extends base_distribution_1.default { getDistributionUrl() { return 'https://nodejs.org/download/rc'; } + getDistributionMirrorUrl() { + // Check if mirrorUrl exists in the nodeInfo and return it if available + const mirrorUrl = this.nodeInfo.mirrorURL; + if (mirrorUrl) { + core.info(`Using mirror URL: ${mirrorUrl}`); + return mirrorUrl; + } + // Return the default URL if no mirror URL is provided + return this.getDistributionUrl(); + } } exports["default"] = RcBuild; @@ -100737,11 +100815,35 @@ exports["default"] = RcBuild; "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); const base_distribution_prerelease_1 = __importDefault(__nccwpck_require__(957)); +const core = __importStar(__nccwpck_require__(2186)); class CanaryBuild extends base_distribution_prerelease_1.default { constructor(nodeInfo) { super(nodeInfo); @@ -100750,6 +100852,15 @@ class CanaryBuild extends base_distribution_prerelease_1.default { getDistributionUrl() { return 'https://nodejs.org/download/v8-canary'; } + getDistributionMirrorUrl() { + // Check if mirrorUrl exists in the nodeInfo and return it if available + const mirrorUrl = this.nodeInfo.mirrorURL; + if (mirrorUrl) { + core.info(`Using mirror URL: ${mirrorUrl}`); + return mirrorUrl; + } + return 'https://nodejs.org/download/v8-canary'; + } } exports["default"] = CanaryBuild; diff --git a/src/distributions/base-distribution.ts b/src/distributions/base-distribution.ts index 3ced9a82..c2e8d566 100644 --- a/src/distributions/base-distribution.ts +++ b/src/distributions/base-distribution.ts @@ -25,7 +25,7 @@ export default abstract class BaseDistribution { } protected abstract getDistributionUrl(): string; - + protected abstract getDistributionMirrorUrl(): string; public async setupNodeJs() { let nodeJsVersions: INodeVersion[] | undefined; @@ -105,6 +105,14 @@ export default abstract class BaseDistribution { return response.result || []; } + protected async getMirrorUrVersions(): Promise { + const initialUrl = this.getDistributionMirrorUrl(); + const dataUrl = `${initialUrl}/index.json`; + + const response = await this.httpClient.getJson(dataUrl); + return response.result || []; + } + protected getNodejsDistInfo(version: string) { const osArch: string = this.translateArchToDistUrl(this.nodeInfo.arch); version = semver.clean(version) || ''; @@ -118,7 +126,7 @@ export default abstract class BaseDistribution { ? `${fileName}.zip` : `${fileName}.7z` : `${fileName}.tar.gz`; - const initialUrl = this.getDistributionUrl(); + const initialUrl = this.getDistributionMirrorUrl(); const url = `${initialUrl}/v${version}/${urlFileName}`; return { @@ -143,7 +151,7 @@ export default abstract class BaseDistribution { ? `${fileName}.zip` : `${fileName}.7z` : `${fileName}.tar.gz`; - + const url = `${mirrorURL}/v${version}/${urlFileName}`; return { @@ -173,7 +181,9 @@ export default abstract class BaseDistribution { info.downloadUrl ); } - core.error(`Download failed from ${info.downloadUrl}. Please check the URl and try again.`); + core.error( + `Download failed from ${info.downloadUrl}. Please check the URl and try again.` + ); throw err; } @@ -195,7 +205,7 @@ export default abstract class BaseDistribution { protected async acquireWindowsNodeFromFallbackLocation( version: string, arch: string = os.arch(), - downloadUrl : string + downloadUrl: string ): Promise { const initialUrl = this.getDistributionUrl(); core.info('url: ' + initialUrl); @@ -214,8 +224,12 @@ export default abstract class BaseDistribution { libUrl = `${initialUrl}/v${version}/win-${osArch}/node.lib`; core.info(`Downloading only node binary from ${exeUrl}`); - if(downloadUrl != exeUrl ){core.error('unable to download node binary with the provided URL. Please check and try again');} - + + if (downloadUrl != exeUrl) { + core.error( + 'unable to download node binary with the provided URL. Please check and try again' + ); + } const exePath = await tc.downloadTool(exeUrl); await io.cp(exePath, path.join(tempDir, 'node.exe')); diff --git a/src/distributions/base-models.ts b/src/distributions/base-models.ts index d3dbee15..1af61ec8 100644 --- a/src/distributions/base-models.ts +++ b/src/distributions/base-models.ts @@ -4,7 +4,7 @@ export interface NodeInputs { auth?: string; checkLatest: boolean; stable: boolean; - mirrorURL: string; + mirrorURL?: string; } export interface INodeVersionInfo { @@ -12,7 +12,6 @@ export interface INodeVersionInfo { resolvedVersion: string; arch: string; fileName: string; - } export interface INodeVersion { diff --git a/src/distributions/nightly/nightly_builds.ts b/src/distributions/nightly/nightly_builds.ts index 86a89eed..771c2137 100644 --- a/src/distributions/nightly/nightly_builds.ts +++ b/src/distributions/nightly/nightly_builds.ts @@ -1,13 +1,31 @@ import BasePrereleaseNodejs from '../base-distribution-prerelease'; import {NodeInputs} from '../base-models'; +import * as core from '@actions/core'; export default class NightlyNodejs extends BasePrereleaseNodejs { + protected distribution = 'nightly'; + constructor(nodeInfo: NodeInputs) { super(nodeInfo); } + protected getDistributionMirrorUrl(): string { + // Implement the method to return the mirror URL or an empty string if not available + return this.nodeInfo.mirrorURL || ''; + } + + // Updated getDistributionUrl method to handle mirror URL or fallback protected getDistributionUrl(): string { + // Check if mirrorUrl exists in the nodeInfo and return it if available + const mirrorUrl = this.nodeInfo.mirrorURL; + if (mirrorUrl) { + core.info(`Using mirror URL: ${mirrorUrl}`); + return mirrorUrl; + } + + // Default to the official Node.js nightly distribution URL if no mirror URL is provided + core.info('Using default distribution URL for nightly Node.js.'); return 'https://nodejs.org/download/nightly'; } } diff --git a/src/distributions/official_builds/official_builds.ts b/src/distributions/official_builds/official_builds.ts index 04ebba23..b4841092 100644 --- a/src/distributions/official_builds/official_builds.ts +++ b/src/distributions/official_builds/official_builds.ts @@ -12,139 +12,134 @@ interface INodeRelease extends tc.IToolRelease { export default class OfficialBuilds extends BaseDistribution { constructor(nodeInfo: NodeInputs) { super(nodeInfo); - } - public async setupNodeJs() { - if(this.nodeInfo.mirrorURL){ - + if (this.nodeInfo.mirrorURL) { let downloadPath = ''; let toolPath = ''; - try { - core.info(`Attempting to download using mirror URL...`); - downloadPath = await this.downloadFromMirrorURL(); // Attempt to download from the mirror - if (downloadPath) { - toolPath = downloadPath; - } - } catch (err) { - core.info((err as Error).message); - core.debug((err as Error).stack ?? 'empty stack'); - } - - }else{ - let manifest: tc.IToolRelease[] | undefined; - let nodeJsVersions: INodeVersion[] | undefined; - const osArch = this.translateArchToDistUrl(this.nodeInfo.arch); + try { + core.info(`Attempting to download using mirror URL...`); + downloadPath = await this.downloadFromMirrorURL(); // Attempt to download from the mirror + if (downloadPath) { + toolPath = downloadPath; + } + } catch (err) { + core.info((err as Error).message); + core.debug((err as Error).stack ?? 'empty stack'); + } + } else { + let manifest: tc.IToolRelease[] | undefined; + let nodeJsVersions: INodeVersion[] | undefined; + const osArch = this.translateArchToDistUrl(this.nodeInfo.arch); - if (this.isLtsAlias(this.nodeInfo.versionSpec)) { - core.info('Attempt to resolve LTS alias from manifest...'); + if (this.isLtsAlias(this.nodeInfo.versionSpec)) { + core.info('Attempt to resolve LTS alias from manifest...'); - // No try-catch since it's not possible to resolve LTS alias without manifest - manifest = await this.getManifest(); + // No try-catch since it's not possible to resolve LTS alias without manifest + manifest = await this.getManifest(); - this.nodeInfo.versionSpec = this.resolveLtsAliasFromManifest( - this.nodeInfo.versionSpec, - this.nodeInfo.stable, - manifest - ); - } - - if (this.isLatestSyntax(this.nodeInfo.versionSpec)) { - nodeJsVersions = await this.getNodeJsVersions(); - const versions = this.filterVersions(nodeJsVersions); - this.nodeInfo.versionSpec = this.evaluateVersions(versions); - - core.info('getting latest node version...'); - } - - if (this.nodeInfo.checkLatest) { - core.info('Attempt to resolve the latest version from manifest...'); - const resolvedVersion = await this.resolveVersionFromManifest( - this.nodeInfo.versionSpec, - this.nodeInfo.stable, - osArch, - manifest - ); - if (resolvedVersion) { - this.nodeInfo.versionSpec = resolvedVersion; - core.info(`Resolved as '${resolvedVersion}'`); - } else { - core.info( - `Failed to resolve version ${this.nodeInfo.versionSpec} from manifest` + this.nodeInfo.versionSpec = this.resolveLtsAliasFromManifest( + this.nodeInfo.versionSpec, + this.nodeInfo.stable, + manifest ); } - } - let toolPath = this.findVersionInHostedToolCacheDirectory(); + if (this.isLatestSyntax(this.nodeInfo.versionSpec)) { + nodeJsVersions = await this.getNodeJsVersions(); + const versions = this.filterVersions(nodeJsVersions); + this.nodeInfo.versionSpec = this.evaluateVersions(versions); - if (toolPath) { - core.info(`Found in cache @ ${toolPath}`); - this.addToolPath(toolPath); - return; - } + core.info('getting latest node version...'); + } - let downloadPath = ''; - try { - core.info(`Attempting to download ${this.nodeInfo.versionSpec}...`); - - const versionInfo = await this.getInfoFromManifest( - this.nodeInfo.versionSpec, - this.nodeInfo.stable, - osArch, - manifest - ); - - if (versionInfo) { - core.info( - `Acquiring ${versionInfo.resolvedVersion} - ${versionInfo.arch} from ${versionInfo.downloadUrl}` + if (this.nodeInfo.checkLatest) { + core.info('Attempt to resolve the latest version from manifest...'); + const resolvedVersion = await this.resolveVersionFromManifest( + this.nodeInfo.versionSpec, + this.nodeInfo.stable, + osArch, + manifest ); - downloadPath = await tc.downloadTool( - versionInfo.downloadUrl, - undefined, - this.nodeInfo.auth - ); - - if (downloadPath) { - toolPath = await this.extractArchive( - downloadPath, - versionInfo, - false + if (resolvedVersion) { + this.nodeInfo.versionSpec = resolvedVersion; + core.info(`Resolved as '${resolvedVersion}'`); + } else { + core.info( + `Failed to resolve version ${this.nodeInfo.versionSpec} from manifest` ); } - } else { - core.info( - 'Not found in manifest. Falling back to download directly from Node' - ); } - } catch (err) { - // Rate limit? - if ( - err instanceof tc.HTTPError && - (err.httpStatusCode === 403 || err.httpStatusCode === 429) - ) { - core.info( - `Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded` - ); - } else { - core.info((err as Error).message); + + let toolPath = this.findVersionInHostedToolCacheDirectory(); + + if (toolPath) { + core.info(`Found in cache @ ${toolPath}`); + this.addToolPath(toolPath); + return; } - core.debug((err as Error).stack ?? 'empty stack'); - core.info('Falling back to download directly from Node'); - } - if (!toolPath) { - toolPath = await this.downloadDirectlyFromNode(); - } + let downloadPath = ''; + try { + core.info(`Attempting to download ${this.nodeInfo.versionSpec}...`); - if (this.osPlat != 'win32') { - toolPath = path.join(toolPath, 'bin'); - } + const versionInfo = await this.getInfoFromManifest( + this.nodeInfo.versionSpec, + this.nodeInfo.stable, + osArch, + manifest + ); - core.addPath(toolPath); + if (versionInfo) { + core.info( + `Acquiring ${versionInfo.resolvedVersion} - ${versionInfo.arch} from ${versionInfo.downloadUrl}` + ); + downloadPath = await tc.downloadTool( + versionInfo.downloadUrl, + undefined, + this.nodeInfo.auth + ); + + if (downloadPath) { + toolPath = await this.extractArchive( + downloadPath, + versionInfo, + false + ); + } + } else { + core.info( + 'Not found in manifest. Falling back to download directly from Node' + ); + } + } catch (err) { + // Rate limit? + if ( + err instanceof tc.HTTPError && + (err.httpStatusCode === 403 || err.httpStatusCode === 429) + ) { + core.info( + `Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded` + ); + } else { + core.info((err as Error).message); + } + core.debug((err as Error).stack ?? 'empty stack'); + core.info('Falling back to download directly from Node'); + } + + if (!toolPath) { + toolPath = await this.downloadDirectlyFromNode(); + } + + if (this.osPlat != 'win32') { + toolPath = path.join(toolPath, 'bin'); + } + + core.addPath(toolPath); + } } -} - protected addToolPath(toolPath: string) { if (this.osPlat != 'win32') { @@ -200,7 +195,14 @@ export default class OfficialBuilds extends BaseDistribution { return `https://nodejs.org/dist`; } - + protected getDistributionMirrorUrl(): string { + const mirrorURL = this.nodeInfo.mirrorURL; + if (!mirrorURL) { + throw new Error('Mirror URL is undefined'); + } + return mirrorURL; + } + private getManifest(): Promise { core.debug('Getting manifest from actions/node-versions@main'); return tc.getManifestFromRepo( @@ -314,20 +316,10 @@ export default class OfficialBuilds extends BaseDistribution { } protected async downloadFromMirrorURL() { - const nodeJsVersions = await this.getNodeJsVersions(); - core.info('versions from nodeJSVersions'+nodeJsVersions); + const nodeJsVersions = await this.getMirrorUrVersions(); const versions = this.filterVersions(nodeJsVersions); - core.info('versions'+versions); const evaluatedVersion = this.evaluateVersions(versions); - core.info('versionSpec'+this.nodeInfo.versionSpec); - - if (this.nodeInfo.checkLatest) { - const evaluatedVersion = await this.findVersionInDist(nodeJsVersions); - this.nodeInfo.versionSpec = evaluatedVersion; - core.info('versionSpec'+this.nodeInfo.versionSpec); - - } if (!evaluatedVersion) { throw new Error( @@ -344,8 +336,8 @@ export default class OfficialBuilds extends BaseDistribution { if (error instanceof tc.HTTPError && error.httpStatusCode === 404) { core.error( `Node version ${this.nodeInfo.versionSpec} for platform ${this.osPlat} and architecture ${this.nodeInfo.arch} was found but failed to download. ` + - 'This usually happens when downloadable binaries are not fully updated at https://nodejs.org/. ' + - 'To resolve this issue you may either fall back to the older version or try again later.' + 'This usually happens when downloadable binaries are not fully updated at https://nodejs.org/. ' + + 'To resolve this issue you may either fall back to the older version or try again later.' ); } else { // For any other error type, you can log the error message. @@ -355,5 +347,4 @@ export default class OfficialBuilds extends BaseDistribution { throw error; } } - } diff --git a/src/distributions/rc/rc_builds.ts b/src/distributions/rc/rc_builds.ts index 40cdb192..1af8c6ab 100644 --- a/src/distributions/rc/rc_builds.ts +++ b/src/distributions/rc/rc_builds.ts @@ -1,7 +1,9 @@ import BaseDistribution from '../base-distribution'; import {NodeInputs} from '../base-models'; +import * as core from '@actions/core'; export default class RcBuild extends BaseDistribution { + constructor(nodeInfo: NodeInputs) { super(nodeInfo); } @@ -9,4 +11,16 @@ export default class RcBuild extends BaseDistribution { getDistributionUrl(): string { return 'https://nodejs.org/download/rc'; } + + protected getDistributionMirrorUrl(): string { + // Check if mirrorUrl exists in the nodeInfo and return it if available + const mirrorUrl = this.nodeInfo.mirrorURL; + if (mirrorUrl) { + core.info(`Using mirror URL: ${mirrorUrl}`); + return mirrorUrl; + } + + // Return the default URL if no mirror URL is provided + return this.getDistributionUrl(); + } } diff --git a/src/distributions/v8-canary/canary_builds.ts b/src/distributions/v8-canary/canary_builds.ts index 257151b4..a8bc2709 100644 --- a/src/distributions/v8-canary/canary_builds.ts +++ b/src/distributions/v8-canary/canary_builds.ts @@ -1,7 +1,8 @@ import BasePrereleaseNodejs from '../base-distribution-prerelease'; import {NodeInputs} from '../base-models'; - +import * as core from '@actions/core'; export default class CanaryBuild extends BasePrereleaseNodejs { + protected distribution = 'v8-canary'; constructor(nodeInfo: NodeInputs) { super(nodeInfo); @@ -10,4 +11,14 @@ export default class CanaryBuild extends BasePrereleaseNodejs { protected getDistributionUrl(): string { return 'https://nodejs.org/download/v8-canary'; } + + protected getDistributionMirrorUrl(): string { + // Check if mirrorUrl exists in the nodeInfo and return it if available + const mirrorUrl = this.nodeInfo.mirrorURL; + if (mirrorUrl) { + core.info(`Using mirror URL: ${mirrorUrl}`); + return mirrorUrl; + } + return 'https://nodejs.org/download/v8-canary'; + } } diff --git a/src/main.ts b/src/main.ts index 4face073..e142324e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -35,7 +35,6 @@ export async function run() { const mirrorURL = core.getInput('mirror-url').trim(); // .trim() to remove any accidental spaces - if (version) { const token = core.getInput('token'); const auth = !token ? undefined : `token ${token}`;