diff --git a/src/installer.ts b/src/installer.ts index f617662..0554c17 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -235,22 +235,28 @@ async function cacheWindowsDir( // iterate through actual cache directory paths and make links if necessary for (const cachePath of actualCacheDirectoryPaths) { core.info(`Trying to link ${cachePath.defaultPath} to ${cachePath.actualPath}`); - if (!fs.existsSync(cachePath.actualPath)) { - core.info(`Creating directory ${cachePath.actualPath}`); - fs.mkdirSync(path.dirname(cachePath.actualPath), {recursive: true}); - } else { - core.info(`Directory ${cachePath.actualPath} already exists`); - } - // make sure the link is pointing to the actual cache directory - const symlinkTarget = fs.readlinkSync(cachePath.defaultPath); - core.info(`Symlink target: ${symlinkTarget}`); - if (symlinkTarget !== "") { - core.info(`Found link ${cachePath.defaultPath} => ${symlinkTarget}`); - } else { - fs.symlinkSync(cachePath.actualPath, cachePath.defaultPath, 'junction'); - core.info( - `Created link ${cachePath.defaultPath} => ${cachePath.actualPath}` - ); + try { + if (!fs.existsSync(cachePath.actualPath)) { + core.info(`Creating directory ${cachePath.actualPath}`); + fs.mkdirSync(path.dirname(cachePath.actualPath), {recursive: true}); + } else { + core.info(`Directory ${cachePath.actualPath} already exists`); + } + + // check if the default path is a symlink + const isSymlink = fs.lstatSync(cachePath.defaultPath).isSymbolicLink(); + if (isSymlink) { + core.info(`Default path is symlink ${cachePath.defaultPath} => ${fs.readlinkSync(cachePath.defaultPath)}`); + } else { + core.info(`Default path is not a symlink ${cachePath.defaultPath}`); + fs.symlinkSync(cachePath.actualPath, cachePath.defaultPath, 'junction'); + core.info( + `Created link ${cachePath.defaultPath} => ${cachePath.actualPath}` + ); + } + } catch (err) { + core.info(`Failed to link ${cachePath.defaultPath} to ${cachePath.actualPath}`); + core.info('Error: ' + err); } }