Use lstat rather than stat to avoid error with symlinks in sync

Change-type: patch
Closes: #1301
Signed-off-by: Cameron Diver <cameron@balena.io>
This commit is contained in:
Cameron Diver 2020-05-06 09:35:13 +01:00
parent 313ee2048a
commit a7399fd78b

View File

@ -99,20 +99,21 @@ async function tarDirectory(
const entries = await fs.readdir(path);
for (const entry of entries) {
const newPath = Path.resolve(path, entry);
const stat = await fs.stat(newPath);
// Here we filter the things we don't want
if (
newPath.includes('node_modules/') ||
newPath.includes('.git/') ||
newPath.includes('build/') ||
newPath.includes('coverage/')
) {
continue;
}
// We use lstat here, otherwise an error will be
// thrown on a symbolic link
const stat = await fs.lstat(newPath);
if (stat.isDirectory()) {
await add(newPath);
} else {
// Here we filter the things we don't want
if (
newPath.includes('node_modules/') ||
newPath.includes('.git/') ||
newPath.includes('build/') ||
newPath.includes('coverage/')
) {
continue;
}
if (newPath.endsWith('Dockerfile')) {
pack.entry(
{ name: 'Dockerfile', mode: stat.mode, size: stat.size },