Skip to content

Commit 0d267c4

Browse files
authored
Fix "cross-device link not permitted" download error (#40)
* Fix "cross-device link not permitted" download error * Try delete tmp file ref to prevent TEXT FILE BUSY error * Add download delay? * Decrease arbitrary wait timeout
1 parent f9e3154 commit 0d267c4

4 files changed

Lines changed: 66 additions & 11 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Change Log
22

3+
## 0.6.4 (Mon Oct 25 2020)
4+
5+
- Fix https://github.com/stackb/bazel-stack-vscode/issues/36.
6+
37
## 0.6.3 (Mon Oct 25 2020)
48

59
- Integrate gostarlark go to definition for bazel labels

package-lock.json

Lines changed: 44 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "bazel-stack-vscode",
33
"displayName": "bazel-stack-vscode",
44
"description": "Bazel Support for Visual Studio Code",
5-
"version": "0.6.3",
5+
"version": "0.6.4",
66
"publisher": "StackBuild",
77
"license": "Apache-2.0",
88
"icon": "stackb-full.png",
@@ -1145,13 +1145,14 @@
11451145
"google-auth-library": "6.1.0",
11461146
"graceful-fs": "4.2.4",
11471147
"luxon": "1.24.1",
1148+
"mv": "^2.1.1",
11481149
"node-fetch": "2.6.0",
11491150
"portfinder": "1.0.28",
11501151
"protobufjs": "6.10.1",
11511152
"request": "2.88.2",
11521153
"sha256-file": "1.0.0",
1153-
"shiki-themes": "^0.2.6",
11541154
"shiki": "^0.2.6",
1155+
"shiki-themes": "^0.2.6",
11551156
"simple-lightbox": "2.1.0",
11561157
"slash": "3.0.0",
11571158
"strip-ansi": "^6.0.0",
@@ -1174,6 +1175,7 @@
11741175
"@types/graceful-fs": "4.1.2",
11751176
"@types/luxon": "1.24.3",
11761177
"@types/mocha": "^7.0.2",
1178+
"@types/mv": "2.1.0",
11771179
"@types/node-fetch": "1.6.9",
11781180
"@types/node": "^13.11.0",
11791181
"@types/request": "2.48.5",

src/download.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import * as octokit from '@octokit/rest';
44
import { ReposListReleasesResponseData } from '@octokit/types';
55
import * as fs from 'graceful-fs';
6+
import * as mv from 'mv';
67
import * as path from 'path';
78
import * as request from 'request';
89
import * as sha256File from 'sha256-file';
@@ -233,9 +234,6 @@ export async function downloadAsset(url: string, filename: string, mode: number,
233234
return Promise.reject(`${filename} already exists and matches requested sha256 ${sha256}`);
234235
}
235236
}
236-
fs.mkdirSync(path.dirname(filename), {
237-
recursive: true,
238-
});
239237

240238
const tmpFile = tmp.fileSync();
241239

@@ -262,7 +260,7 @@ export async function downloadAsset(url: string, filename: string, mode: number,
262260
if (err) {
263261
reject(err);
264262
return;
265-
}
263+
}
266264
if (sha256) {
267265
const actual = sha256File(tmpFile.name);
268266
if (actual !== sha256) {
@@ -272,12 +270,20 @@ export async function downloadAsset(url: string, filename: string, mode: number,
272270
}
273271
resolve();
274272
});
275-
273+
276274
}).then(() => {
277275
fs.chmodSync(tmpFile.name, mode);
278-
fs.renameSync(tmpFile.name, filename);
279-
console.log(`Renamed ${tmpFile.name} -> ${filename}`);
280-
tmpFile.removeCallback();
276+
return new Promise((resolve, reject) => {
277+
mv(tmpFile.name, filename, { mkdirp: true }, err => {
278+
if (err) {
279+
reject(err);
280+
return;
281+
}
282+
console.log(`Renamed ${tmpFile.name} -> ${filename}`);
283+
tmpFile.removeCallback();
284+
setTimeout(() => resolve(), 250);
285+
});
286+
});
281287
});
282288
}
283289

0 commit comments

Comments
 (0)