From a2a22eb21b1cd8d681eb9936002388ea4eea8b1b Mon Sep 17 00:00:00 2001 From: mahabaleshwars <147705296+mahabaleshwars@users.noreply.github.com> Date: Fri, 4 Apr 2025 08:55:02 +0530 Subject: [PATCH] fix error handling --- dist/setup/index.js | 21 +++++++++++---------- src/install-python.ts | 25 ++++++++++++++----------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/dist/setup/index.js b/dist/setup/index.js index ab3c0aa7..fcab076d 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -97476,25 +97476,23 @@ function getManifest() { return __awaiter(this, void 0, void 0, function* () { try { const repoManifest = yield getManifestFromRepo(); - core.debug(`Received repo manifest: ${JSON.stringify(repoManifest)}`); if (Array.isArray(repoManifest) && repoManifest.length && repoManifest.every(isIToolRelease)) { - core.debug('Repo manifest is valid and contains IToolRelease items.'); return repoManifest; } else { - core.debug('Repo manifest is invalid or does not contain IToolRelease items.'); + throw new Error('The repository manifest is invalid or does not include any valid tool release (IToolRelease) entries.'); } } catch (err) { - core.debug('Fetching the manifest via the API failed.'); + core.error('Fetching the manifest via the API failed.'); if (err instanceof Error) { core.debug(`Error message: ${err.message}`); core.debug(`Error stack: ${err.stack}`); } else { - core.debug('Error is not an instance of Error. It might be something else.'); + core.error('Error is not an instance of Error. It might be something else.'); } } return yield getManifestFromURL(); @@ -97502,17 +97500,17 @@ function getManifest() { } exports.getManifest = getManifest; function getManifestFromRepo() { - core.debug(`Getting manifest from ${MANIFEST_REPO_OWNER}/${MANIFEST_REPO_NAME}@${MANIFEST_REPO_BRANCH}`); + core.info(`Getting manifest from ${MANIFEST_REPO_OWNER}/${MANIFEST_REPO_NAME}@${MANIFEST_REPO_BRANCH}`); return tc.getManifestFromRepo(MANIFEST_REPO_OWNER, MANIFEST_REPO_NAME, AUTH, MANIFEST_REPO_BRANCH); } exports.getManifestFromRepo = getManifestFromRepo; function getManifestFromURL() { return __awaiter(this, void 0, void 0, function* () { - core.debug('Falling back to fetching the manifest using raw URL.'); + core.info('Falling back to fetching the manifest using raw URL.'); const http = new httpm.HttpClient('tool-cache'); const response = yield http.getJson(exports.MANIFEST_URL); if (!response.result) { - throw new Error(`Unable to get manifest from ${exports.MANIFEST_URL}`); + throw new Error(`Unable to get manifest from ${exports.MANIFEST_URL}. HTTP status: ${response.statusCode}`); } return response.result; }); @@ -97543,6 +97541,9 @@ function installPython(workingDirectory) { } function installCpythonFromRelease(release) { return __awaiter(this, void 0, void 0, function* () { + if (!release.files || release.files.length === 0) { + throw new Error('No files found in the release to download.'); + } const downloadUrl = release.files[0].download_url; core.info(`Download from "${downloadUrl}"`); let pythonPath = ''; @@ -97564,10 +97565,10 @@ function installCpythonFromRelease(release) { if (err instanceof tc.HTTPError) { // Rate limit? if (err.httpStatusCode === 403 || err.httpStatusCode === 429) { - core.info(`Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded`); + core.error(`Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded`); } else { - core.info(err.message); + core.error(err.message); } if (err.stack) { core.debug(err.stack); diff --git a/src/install-python.ts b/src/install-python.ts index 75f22d4a..da852289 100644 --- a/src/install-python.ts +++ b/src/install-python.ts @@ -53,27 +53,25 @@ function isIToolRelease(obj: any): obj is IToolRelease { export async function getManifest(): Promise { try { const repoManifest = await getManifestFromRepo(); - core.debug(`Received repo manifest: ${JSON.stringify(repoManifest)}`); if ( Array.isArray(repoManifest) && repoManifest.length && repoManifest.every(isIToolRelease) ) { - core.debug('Repo manifest is valid and contains IToolRelease items.'); return repoManifest; } else { - core.debug( - 'Repo manifest is invalid or does not contain IToolRelease items.' + throw new Error( + 'The repository manifest is invalid or does not include any valid tool release (IToolRelease) entries.' ); } } catch (err) { - core.debug('Fetching the manifest via the API failed.'); + core.error('Fetching the manifest via the API failed.'); if (err instanceof Error) { core.debug(`Error message: ${err.message}`); core.debug(`Error stack: ${err.stack}`); } else { - core.debug( + core.error( 'Error is not an instance of Error. It might be something else.' ); } @@ -82,7 +80,7 @@ export async function getManifest(): Promise { } export function getManifestFromRepo(): Promise { - core.debug( + core.info( `Getting manifest from ${MANIFEST_REPO_OWNER}/${MANIFEST_REPO_NAME}@${MANIFEST_REPO_BRANCH}` ); return tc.getManifestFromRepo( @@ -94,12 +92,14 @@ export function getManifestFromRepo(): Promise { } export async function getManifestFromURL(): Promise { - core.debug('Falling back to fetching the manifest using raw URL.'); + core.info('Falling back to fetching the manifest using raw URL.'); const http: httpm.HttpClient = new httpm.HttpClient('tool-cache'); const response = await http.getJson(MANIFEST_URL); if (!response.result) { - throw new Error(`Unable to get manifest from ${MANIFEST_URL}`); + throw new Error( + `Unable to get manifest from ${MANIFEST_URL}. HTTP status: ${response.statusCode}` + ); } return response.result; } @@ -130,6 +130,9 @@ async function installPython(workingDirectory: string) { } export async function installCpythonFromRelease(release: tc.IToolRelease) { + if (!release.files || release.files.length === 0) { + throw new Error('No files found in the release to download.'); + } const downloadUrl = release.files[0].download_url; core.info(`Download from "${downloadUrl}"`); @@ -151,11 +154,11 @@ export async function installCpythonFromRelease(release: tc.IToolRelease) { if (err instanceof tc.HTTPError) { // Rate limit? if (err.httpStatusCode === 403 || err.httpStatusCode === 429) { - core.info( + core.error( `Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded` ); } else { - core.info(err.message); + core.error(err.message); } if (err.stack) { core.debug(err.stack);