add check for existing symlink

Signed-off-by: Anton Troshin <anton@diagrid.io>
This commit is contained in:
Anton Troshin 2024-11-19 11:50:35 -06:00
parent 434fb17078
commit 0dc6404f6a
No known key found for this signature in database
GPG key ID: 9F8A96ACA9EB6363

View file

@ -223,7 +223,7 @@ async function cacheWindowsDir(
} }
core.info(`Found Cache Directory Paths: ${cacheDirectoryPaths}`); core.info(`Found Cache Directory Paths: ${cacheDirectoryPaths}`);
// replace cache directory path with actual cache directory path // replace cache directory path with actual cache directory path
const actualCacheDirectoryPaths = cacheDirectoryPaths.map(path => { const actualCacheDirectoryPaths = cacheDirectoryPaths.map(path => {
return { return {
@ -232,17 +232,24 @@ async function cacheWindowsDir(
}; };
}); });
// iterate through actual cache directory paths and make links // iterate through actual cache directory paths and make links if necessary
for (const cachePath of actualCacheDirectoryPaths) { for (const cachePath of actualCacheDirectoryPaths) {
if (!fs.existsSync(cachePath.actualPath)) { if (!fs.existsSync(cachePath.actualPath)) {
core.info(`Creating directory ${cachePath.actualPath}`); core.info(`Creating directory ${cachePath.actualPath}`);
fs.mkdirSync(path.dirname(cachePath.actualPath), {recursive: true}); 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
let symlinkTarget = fs.readlinkSync(cachePath.defaultPath);
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}`
);
}
} }
fs.symlinkSync(cachePath.actualPath, cachePath.defaultPath, 'junction');
core.info(
`Created link ${cachePath.defaultPath} => ${cachePath.actualPath}`
);
} }
// make outer code to continue using toolcache as if it were installed on c: // make outer code to continue using toolcache as if it were installed on c: