From 040a46a7cfbb832ece8a947c82527d2a25da8c0c Mon Sep 17 00:00:00 2001 From: Luna Davis Date: Wed, 19 Jun 2024 23:05:07 -0700 Subject: [PATCH 1/2] fix: add fallback mirror URL for downloading Lua source tarball #47 --- main.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/main.js b/main.js index 8f056ea0..073c2150 100644 --- a/main.js +++ b/main.js @@ -196,7 +196,16 @@ async function install_plain_lua(luaInstallPath, luaVersion) { const luaExtractPath = pathJoin(process.env["RUNNER_TEMP"], BUILD_PREFIX, `lua-${luaVersion}`) const luaCompileFlags = core.getInput('luaCompileFlags') - const luaSourceTar = await tc.downloadTool(`https://lua.org/ftp/lua-${luaVersion}.tar.gz`) + const primaryUrl = `https://lua.org/ftp/lua-${luaVersion}.tar.gz` + const mirrorUrl = `https://www.tecgraf.puc-rio.br/lua/mirror/ftp/lua-${luaVersion}.tar.gz` + let luaSourceTar + + try { + luaSourceTar = await tc.downloadTool(primaryUrl) + } catch (error) { + console.log('Primary URL is down, trying mirror URL...') + luaSourceTar = await tc.downloadTool(mirrorUrl) + } await io.mkdirP(luaExtractPath) await tc.extractTar(luaSourceTar, path.join(process.env["RUNNER_TEMP"], BUILD_PREFIX)) From 147f21634fae1168bfe19e9c00fde3df89738134 Mon Sep 17 00:00:00 2001 From: Luna Davis Date: Wed, 19 Jun 2024 23:25:45 -0700 Subject: [PATCH 2/2] Optimize Lua Source Download with Promise.race #47 --- main.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/main.js b/main.js index 073c2150..5ca9602d 100644 --- a/main.js +++ b/main.js @@ -200,12 +200,12 @@ async function install_plain_lua(luaInstallPath, luaVersion) { const mirrorUrl = `https://www.tecgraf.puc-rio.br/lua/mirror/ftp/lua-${luaVersion}.tar.gz` let luaSourceTar - try { - luaSourceTar = await tc.downloadTool(primaryUrl) - } catch (error) { - console.log('Primary URL is down, trying mirror URL...') - luaSourceTar = await tc.downloadTool(mirrorUrl) - } + const primaryDownload = tc.downloadTool(primaryUrl) + const mirrorDownload = tc.downloadTool(mirrorUrl) + + luaSourceTar = await Promise.race([primaryDownload, mirrorDownload]).catch(async (error) => { + throw new Error(`Failed to download Lua source: ${error}`) + }) await io.mkdirP(luaExtractPath) await tc.extractTar(luaSourceTar, path.join(process.env["RUNNER_TEMP"], BUILD_PREFIX))