diff --git a/dist/setup/index.js b/dist/setup/index.js index 378197f..eef32c0 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -61441,6 +61441,14 @@ function resolveVersionFromManifest(versionSpec, stable, auth, arch, manifest) { } }); } +function addExecutablesToCache(extPath, info, arch) { + return __awaiter(this, void 0, void 0, function* () { + core.info('Adding to the cache ...'); + const cachedDir = yield tc.cacheDir(extPath, 'go', makeSemver(info.resolvedVersion), arch); + core.info(`Successfully cached go to ${cachedDir}`); + return cachedDir; + }); +} function installGoVersion(info, auth, arch) { return __awaiter(this, void 0, void 0, function* () { core.info(`Acquiring ${info.resolvedVersion} from ${info.downloadUrl}`); @@ -61455,10 +61463,21 @@ function installGoVersion(info, auth, arch) { if (info.type === 'dist') { extPath = path.join(extPath, 'go'); } - core.info('Adding to the cache ...'); - const cachedDir = yield tc.cacheDir(extPath, 'go', makeSemver(info.resolvedVersion), arch); - core.info(`Successfully cached go to ${cachedDir}`); - return cachedDir; + if (isWindows) { + const oldCacheDir = process.env['RUNNER_TOOL_CACHE'] || ''; + const tempCacheDir = oldCacheDir.replace('C:', 'D:').replace('c:', 'd:'); + process.env['RUNNER_TOOL_CACHE'] = tempCacheDir; + const cachedDir = yield addExecutablesToCache(extPath, info, arch); + const lnkDest = cachedDir; + const lnkSrc = lnkDest.replace(tempCacheDir, oldCacheDir); + const lnkSrcDir = path.dirname(lnkSrc); + fs_1.default.mkdirSync(lnkSrcDir, { recursive: true }); + fs_1.default.symlinkSync(lnkDest, lnkSrc, 'junction'); + core.info(`Created link ${lnkSrc} => ${lnkDest}`); + process.env['RUNNER_TOOL_CACHE'] = oldCacheDir; + return cachedDir.replace(tempCacheDir, oldCacheDir); + } + return yield addExecutablesToCache(extPath, info, arch); }); } function extractGoArchive(archivePath) { diff --git a/src/installer.ts b/src/installer.ts index 013fb64..16afd24 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -164,6 +164,22 @@ async function resolveVersionFromManifest( } } +async function addExecutablesToCache( + extPath: string, + info: IGoVersionInfo, + arch: string +): Promise { + core.info('Adding to the cache ...'); + const cachedDir = await tc.cacheDir( + extPath, + 'go', + makeSemver(info.resolvedVersion), + arch + ); + core.info(`Successfully cached go to ${cachedDir}`); + return cachedDir; +} + async function installGoVersion( info: IGoVersionInfo, auth: string | undefined, @@ -185,15 +201,24 @@ async function installGoVersion( extPath = path.join(extPath, 'go'); } - core.info('Adding to the cache ...'); - const cachedDir = await tc.cacheDir( - extPath, - 'go', - makeSemver(info.resolvedVersion), - arch - ); - core.info(`Successfully cached go to ${cachedDir}`); - return cachedDir; + if (isWindows) { + const oldCacheDir = process.env['RUNNER_TOOL_CACHE'] || ''; + const tempCacheDir = oldCacheDir.replace('C:', 'D:').replace('c:', 'd:'); + process.env['RUNNER_TOOL_CACHE'] = tempCacheDir; + + const cachedDir = await addExecutablesToCache(extPath, info, arch); + + const lnkDest = cachedDir; + const lnkSrc = lnkDest.replace(tempCacheDir, oldCacheDir); + const lnkSrcDir = path.dirname(lnkSrc); + fs.mkdirSync(lnkSrcDir, {recursive: true}); + fs.symlinkSync(lnkDest, lnkSrc, 'junction'); + core.info(`Created link ${lnkSrc} => ${lnkDest}`); + process.env['RUNNER_TOOL_CACHE'] = oldCacheDir; + return cachedDir.replace(tempCacheDir, oldCacheDir); + } + + return await addExecutablesToCache(extPath, info, arch); } export async function extractGoArchive(archivePath: string): Promise {