nw-builder 3.8.3-beta.1 → 3.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/CHANGELOG.md +12 -0
- package/README.md +4 -0
- package/bin/nwbuild.cjs +1 -1
- package/lib/index.cjs +27 -78
- package/package.json +3 -12
- package/test/demo/index.cjs +10 -8
- package/test/demo/package.json +1 -2
- package/lib/downloader.cjs +0 -176
- package/src/api/nwbuild.js +0 -7
- package/test/demo/index.js +0 -5
- package/test/downloader.cjs +0 -131
package/.github/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [3.8.4] - 2022-09-20
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Refactor download function
|
|
15
|
+
|
|
16
|
+
## [3.8.3-beta.1]
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Check for first instance of `package.json`
|
|
21
|
+
|
|
10
22
|
## [3.8.3] - 2022-08-26
|
|
11
23
|
|
|
12
24
|
### Changed
|
package/README.md
CHANGED
|
@@ -32,6 +32,10 @@ Using pnpm:
|
|
|
32
32
|
pnpm add nw-builder
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
+
## Usage
|
|
36
|
+
|
|
37
|
+
Check out the the demo under `/test/demo` directory for examples of module usage. For CLI, type in `nwbuild --help` in your terminal.
|
|
38
|
+
|
|
35
39
|
## API Reference
|
|
36
40
|
|
|
37
41
|
> Stay up to date via the [Changelog](https://github.com/nwjs-community/nw-builder/blob/master/.github/CHANGELOG.md).
|
package/bin/nwbuild.cjs
CHANGED
package/lib/index.cjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const { existsSync } = require("node:fs");
|
|
1
2
|
var _ = require("lodash");
|
|
2
3
|
var inherits = require("inherits");
|
|
3
4
|
var EventEmitter = require("events").EventEmitter;
|
|
@@ -11,6 +12,7 @@ var spawn = require("child_process").spawn;
|
|
|
11
12
|
var semver = require("semver");
|
|
12
13
|
var platformOverrides = require("./platformOverrides.cjs");
|
|
13
14
|
var deprecate = require("deprecate");
|
|
15
|
+
const { install } = require("nw-install");
|
|
14
16
|
|
|
15
17
|
const {
|
|
16
18
|
checkCache,
|
|
@@ -23,20 +25,6 @@ const {
|
|
|
23
25
|
var NwVersions = require("./versions.cjs");
|
|
24
26
|
var Version = require("./Version.cjs");
|
|
25
27
|
var Utils = require("./utils.cjs");
|
|
26
|
-
var Downloader = require("./downloader.cjs");
|
|
27
|
-
// var platforms = require("./platforms.cjs");
|
|
28
|
-
|
|
29
|
-
var pkg = require("../package.json");
|
|
30
|
-
|
|
31
|
-
(async () => {
|
|
32
|
-
let updateNotifier = undefined;
|
|
33
|
-
try {
|
|
34
|
-
updateNotifier = await import("update-notifier");
|
|
35
|
-
updateNotifier.default({ pkg }).notify();
|
|
36
|
-
} catch (e) {
|
|
37
|
-
console.error(e);
|
|
38
|
-
}
|
|
39
|
-
})();
|
|
40
28
|
|
|
41
29
|
// We inherit from EventEmitter for logging
|
|
42
30
|
inherits(NwBuilder, EventEmitter);
|
|
@@ -325,74 +313,35 @@ NwBuilder.prototype.platformFilesForVersion = function () {
|
|
|
325
313
|
return Promise.resolve();
|
|
326
314
|
};
|
|
327
315
|
|
|
328
|
-
NwBuilder.prototype.downloadNwjs = function () {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
platform.url = self._version.platforms[name + "-" + self._version.flavor];
|
|
340
|
-
|
|
341
|
-
// Ensure that there is a cache folder
|
|
342
|
-
if (self.options.forceDownload) {
|
|
343
|
-
fs.removeSync(platform.cache);
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
fs.mkdirpSync(platform.cache);
|
|
347
|
-
self.emit(
|
|
348
|
-
"log",
|
|
349
|
-
"Create cache folder in " +
|
|
350
|
-
path.resolve(
|
|
351
|
-
self.options.cacheDir,
|
|
352
|
-
self._version.version + "-" + self._version.flavor,
|
|
353
|
-
),
|
|
354
|
-
);
|
|
355
|
-
|
|
316
|
+
NwBuilder.prototype.downloadNwjs = async function () {
|
|
317
|
+
let options = this.options;
|
|
318
|
+
for await (let osName of options.platforms) {
|
|
319
|
+
let plat = osName.slice(0, osName.length - 2);
|
|
320
|
+
let arch =
|
|
321
|
+
osName.slice(osName.length - 2, osName.length) === "32" ? "ia32" : "x64";
|
|
322
|
+
this._platforms[osName].url =
|
|
323
|
+
this._version.platforms[osName + "-" + this._version.flavor];
|
|
324
|
+
this._platforms[
|
|
325
|
+
osName
|
|
326
|
+
].cache = `${this.options.cacheDir}/${this.options.version}-${this.options.flavor}/${osName}/nwjs-${this.options.flavor}-v${this.options.version}-${plat}-${arch}`;
|
|
356
327
|
if (
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
self._version.flavor,
|
|
362
|
-
)
|
|
328
|
+
options.forceDownload === true ||
|
|
329
|
+
existsSync(
|
|
330
|
+
`${this.options.cacheDir}/${this.options.version}-${this.options.flavor}/${osName}/nwjs-${this.options.flavor}-v${this.options.version}-${plat}-${arch}`,
|
|
331
|
+
) === false
|
|
363
332
|
) {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
self._version.flavor +
|
|
374
|
-
") does not have a corresponding build posted at " +
|
|
375
|
-
self.options.downloadUrl +
|
|
376
|
-
". Please choose a version from that list.",
|
|
377
|
-
);
|
|
378
|
-
} else {
|
|
379
|
-
self.emit("log", err.msg);
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
return Promise.reject("Unable to download NWjs.");
|
|
383
|
-
},
|
|
384
|
-
),
|
|
333
|
+
await install(
|
|
334
|
+
this.options.version,
|
|
335
|
+
this.options.flavor,
|
|
336
|
+
plat,
|
|
337
|
+
arch,
|
|
338
|
+
"https://nwjs.io",
|
|
339
|
+
"https://dl.nwjs.io",
|
|
340
|
+
`${this.options.cacheDir}/${this.options.version}-${this.options.flavor}/${osName}`,
|
|
341
|
+
`nwjs-${this.options.flavor}-v${this.options.version}-${plat}-${arch}`,
|
|
385
342
|
);
|
|
386
|
-
self.emit("log", "Downloading: " + platform.url);
|
|
387
|
-
} else {
|
|
388
|
-
self.emit("log", "Using cache for: " + name);
|
|
389
343
|
}
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
return Promise.all(downloads).then(function (data) {
|
|
393
|
-
Downloader.clearProgressbar();
|
|
394
|
-
return data;
|
|
395
|
-
});
|
|
344
|
+
}
|
|
396
345
|
};
|
|
397
346
|
|
|
398
347
|
NwBuilder.prototype.buildGypModules = function () {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nw-builder",
|
|
3
|
-
"version": "3.8.
|
|
3
|
+
"version": "3.8.4",
|
|
4
4
|
"description": "Build NW.js desktop applications for Mac, Windows and Linux.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"NW.js",
|
|
@@ -10,10 +10,6 @@
|
|
|
10
10
|
"author": "Steffen Müller <steffen@mllrsohn.com>",
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"main": "./lib/index.cjs",
|
|
13
|
-
"exports": {
|
|
14
|
-
"import": "./src/api/nwbuild.js",
|
|
15
|
-
"require": "./lib/index.cjs"
|
|
16
|
-
},
|
|
17
13
|
"type": "module",
|
|
18
14
|
"homepage": "https://github.com/nwutils/nw-builder",
|
|
19
15
|
"repository": {
|
|
@@ -25,14 +21,12 @@
|
|
|
25
21
|
"lint": "eslint ./bin/**.cjs ./lib/**.cjs ./src/**.js",
|
|
26
22
|
"test": "npm run test:unit && tape './test/*.cjs'",
|
|
27
23
|
"test:unit": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
28
|
-
"demo
|
|
29
|
-
"demo:esm": "cd ./test/demo && npm run start:esm",
|
|
24
|
+
"demo": "cd ./test/demo && npm run start",
|
|
30
25
|
"demo:cli": "nwbuild ./** --mode=build --platforms=linux32, linux64 --version=0.67.1",
|
|
31
26
|
"build": "esbuild src/index.js --bundle --minify --platform=node --outfile=./dist/index.cjs"
|
|
32
27
|
},
|
|
33
28
|
"devDependencies": {
|
|
34
29
|
"decompress-zip": "^0.3.3",
|
|
35
|
-
"eol": "^0.9.1",
|
|
36
30
|
"esbuild": "^0.15.2",
|
|
37
31
|
"eslint": "^8.18.0",
|
|
38
32
|
"eslint-config-tjw-jsdoc": "^1.0.3",
|
|
@@ -48,11 +42,10 @@
|
|
|
48
42
|
"dependencies": {
|
|
49
43
|
"archiver": "^5.3.1",
|
|
50
44
|
"deprecate": "^1.1.1",
|
|
51
|
-
"extract-zip": "^2.0.1",
|
|
52
45
|
"graceful-fs-extra": "^2.0.0",
|
|
53
|
-
"graceful-ncp": "^3.0.0",
|
|
54
46
|
"inherits": "^2.0.4",
|
|
55
47
|
"lodash": "^4.17.21",
|
|
48
|
+
"nw-install": "^0.3.3",
|
|
56
49
|
"plist": "^3.0.5",
|
|
57
50
|
"progress": "^2.0.3",
|
|
58
51
|
"rcedit": "^3.0.1",
|
|
@@ -61,10 +54,8 @@
|
|
|
61
54
|
"rimraf": "^3.0.2",
|
|
62
55
|
"semver": "^7.3.7",
|
|
63
56
|
"simple-glob": "^0.2.0",
|
|
64
|
-
"tar-fs": "^2.1.1",
|
|
65
57
|
"temp": "^0.9.4",
|
|
66
58
|
"thenify": "^3.3.1",
|
|
67
|
-
"update-notifier": "^6.0.2",
|
|
68
59
|
"winresourcer": "^0.9.0",
|
|
69
60
|
"yargs": "^17.5.1"
|
|
70
61
|
},
|
package/test/demo/index.cjs
CHANGED
|
@@ -2,13 +2,15 @@ const NwBuilder = require("../../lib/index.cjs");
|
|
|
2
2
|
|
|
3
3
|
const nw = new NwBuilder({
|
|
4
4
|
files: "./**",
|
|
5
|
-
version: "0.67.1"
|
|
5
|
+
version: "0.67.1",
|
|
6
|
+
platforms: ["linux64"],
|
|
6
7
|
});
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
// Replace `build` with `run` to run the application instead
|
|
10
|
+
nw.build()
|
|
11
|
+
.then((msg) => {
|
|
12
|
+
console.log(msg);
|
|
13
|
+
})
|
|
14
|
+
.catch((error) => {
|
|
15
|
+
console.log(error);
|
|
16
|
+
});
|
package/test/demo/package.json
CHANGED
package/lib/downloader.cjs
DELETED
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
var request = require("request");
|
|
2
|
-
var progress = require("progress");
|
|
3
|
-
var fs = require("fs");
|
|
4
|
-
var path = require("path");
|
|
5
|
-
var zlib = require("zlib");
|
|
6
|
-
var tar = require("tar-fs");
|
|
7
|
-
var temp = require("temp");
|
|
8
|
-
var ncp = require("graceful-ncp").ncp;
|
|
9
|
-
var rimraf = require("rimraf");
|
|
10
|
-
var extract = require("extract-zip");
|
|
11
|
-
|
|
12
|
-
// Automatically track and cleanup files at exit
|
|
13
|
-
temp.track();
|
|
14
|
-
var isWin = /^win/.test(process.platform);
|
|
15
|
-
|
|
16
|
-
// one progressbar for all downloads
|
|
17
|
-
var bar;
|
|
18
|
-
|
|
19
|
-
module.exports = {
|
|
20
|
-
clearProgressbar: function () {
|
|
21
|
-
bar && bar.terminate();
|
|
22
|
-
bar = null;
|
|
23
|
-
},
|
|
24
|
-
downloadAndUnpack: function (cachepath, url) {
|
|
25
|
-
var extension = path.extname(url),
|
|
26
|
-
self = this,
|
|
27
|
-
rq = request(url),
|
|
28
|
-
len,
|
|
29
|
-
stream;
|
|
30
|
-
|
|
31
|
-
function format(statusCode) {
|
|
32
|
-
return statusCode + ": " + require("http").STATUS_CODES[statusCode];
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return new Promise(function (resolve, reject) {
|
|
36
|
-
rq.proxy = true;
|
|
37
|
-
rq.on("error", function (err) {
|
|
38
|
-
bar && bar.terminate();
|
|
39
|
-
reject(err);
|
|
40
|
-
});
|
|
41
|
-
rq.on("response", function (res) {
|
|
42
|
-
len = parseInt(res.headers["content-length"], 10);
|
|
43
|
-
if (res.statusCode !== 200) {
|
|
44
|
-
reject({
|
|
45
|
-
statusCode: res.statusCode,
|
|
46
|
-
msg: "Recieved status code " + format(res.statusCode),
|
|
47
|
-
});
|
|
48
|
-
} else if (len) {
|
|
49
|
-
if (!bar) {
|
|
50
|
-
bar = new progress(" downloading [:bar] :percent :etas", {
|
|
51
|
-
complete: "=",
|
|
52
|
-
incomplete: "-",
|
|
53
|
-
width: 20,
|
|
54
|
-
total: len,
|
|
55
|
-
});
|
|
56
|
-
} else {
|
|
57
|
-
bar.total += len;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
rq.on("data", function (chunk) {
|
|
62
|
-
len && bar && bar.tick(chunk.length);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
if (extension === ".zip") {
|
|
66
|
-
rq.on("response", function (res) {
|
|
67
|
-
if (res.statusCode !== 200) return;
|
|
68
|
-
stream = temp.createWriteStream();
|
|
69
|
-
|
|
70
|
-
stream.on("finish", function () {
|
|
71
|
-
self
|
|
72
|
-
.extractZip(stream.path, cachepath)
|
|
73
|
-
.then(self.stripRootFolder)
|
|
74
|
-
.then(function (files) {
|
|
75
|
-
resolve(files);
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
rq.pipe(stream);
|
|
80
|
-
});
|
|
81
|
-
} else if (extension === ".gz") {
|
|
82
|
-
rq.on("response", function (res) {
|
|
83
|
-
if (res.statusCode !== 200) return;
|
|
84
|
-
self
|
|
85
|
-
.extractTar(res, cachepath)
|
|
86
|
-
.then(self.stripRootFolder)
|
|
87
|
-
.then(function (files) {
|
|
88
|
-
resolve(files);
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
},
|
|
94
|
-
extractTar: function (tarstream, destination) {
|
|
95
|
-
var gunzip = zlib.createGunzip(),
|
|
96
|
-
files = [];
|
|
97
|
-
|
|
98
|
-
return new Promise(function (resolve, reject) {
|
|
99
|
-
tarstream
|
|
100
|
-
.pipe(gunzip)
|
|
101
|
-
.on("error", function (err) {
|
|
102
|
-
reject(err);
|
|
103
|
-
})
|
|
104
|
-
.pipe(
|
|
105
|
-
tar.extract(destination, {
|
|
106
|
-
umask: isWin ? false : 0,
|
|
107
|
-
map: function (header) {
|
|
108
|
-
files.push({ path: path.basename(header.name) });
|
|
109
|
-
return header;
|
|
110
|
-
},
|
|
111
|
-
}),
|
|
112
|
-
)
|
|
113
|
-
.on("finish", function () {
|
|
114
|
-
resolve({ files: files, destination: destination });
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
},
|
|
118
|
-
extractZip: function (zipfile, destination) {
|
|
119
|
-
var files = [];
|
|
120
|
-
|
|
121
|
-
var onEntry = function (entry) {
|
|
122
|
-
files.push({
|
|
123
|
-
mode: entry.externalFileAttributes >>> 16,
|
|
124
|
-
path: entry.fileName,
|
|
125
|
-
});
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
return new Promise(function (resolve, reject) {
|
|
129
|
-
extract(zipfile, { dir: destination, onEntry: onEntry })
|
|
130
|
-
.catch(reject)
|
|
131
|
-
.then(function () {
|
|
132
|
-
// Setup chmodSync to fix permissions
|
|
133
|
-
files.forEach(function (file) {
|
|
134
|
-
fs.chmodSync(path.join(destination, file.path), file.mode);
|
|
135
|
-
});
|
|
136
|
-
resolve({ files, destination });
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
},
|
|
140
|
-
stripRootFolder: function (extracted) {
|
|
141
|
-
var files = extracted.files,
|
|
142
|
-
destination = extracted.destination,
|
|
143
|
-
rootFiles = fs.readdirSync(destination),
|
|
144
|
-
fromDir = path.join(
|
|
145
|
-
destination,
|
|
146
|
-
rootFiles.length === 1 ? rootFiles[0] : "",
|
|
147
|
-
);
|
|
148
|
-
|
|
149
|
-
// strip out root folder if it exists
|
|
150
|
-
if (rootFiles.length === 1 && fs.statSync(fromDir).isDirectory()) {
|
|
151
|
-
// strip folder from files
|
|
152
|
-
for (var i = 0; i < files.length; i++) {
|
|
153
|
-
var file = files[i];
|
|
154
|
-
file.path = path.relative(rootFiles[0], file.path);
|
|
155
|
-
if (file.path === "") {
|
|
156
|
-
files.splice(i, 1);
|
|
157
|
-
i--;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
return new Promise(function (resolve, reject) {
|
|
162
|
-
// move stripped folder to destination
|
|
163
|
-
ncp(fromDir, destination, function (err) {
|
|
164
|
-
if (err) {
|
|
165
|
-
return reject();
|
|
166
|
-
} else
|
|
167
|
-
rimraf(fromDir, function () {
|
|
168
|
-
resolve(files);
|
|
169
|
-
});
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
} else {
|
|
173
|
-
return Promise.resolve(files);
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
};
|
package/src/api/nwbuild.js
DELETED
package/test/demo/index.js
DELETED
package/test/downloader.cjs
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
var test = require("tape"),
|
|
2
|
-
nock = require("nock"),
|
|
3
|
-
temp = require("temp"),
|
|
4
|
-
path = require("path"),
|
|
5
|
-
fs = require("fs");
|
|
6
|
-
|
|
7
|
-
temp.track();
|
|
8
|
-
|
|
9
|
-
var downloader = require("../lib/downloader.cjs");
|
|
10
|
-
var fixturesZip = "./test/fixtures/test.zip";
|
|
11
|
-
var fixturesZipStrip = "./test/fixtures/test-strip.zip";
|
|
12
|
-
var fixturesTar = "./test/fixtures/test.tar.gz";
|
|
13
|
-
var isWindows = process.platform === "win32";
|
|
14
|
-
|
|
15
|
-
test("downloadAndUnpack: zip", function (t) {
|
|
16
|
-
t.plan(isWindows ? 3 : 6);
|
|
17
|
-
nock("https://amazon.s3.nw.com")
|
|
18
|
-
.get("/test.zip")
|
|
19
|
-
.replyWithFile(200, fixturesZip);
|
|
20
|
-
temp.mkdir("tmpcache", function (err, dirPath) {
|
|
21
|
-
downloader
|
|
22
|
-
.downloadAndUnpack(dirPath, "https://amazon.s3.nw.com/test.zip")
|
|
23
|
-
.then(function (files) {
|
|
24
|
-
files.forEach(function (file) {
|
|
25
|
-
t.ok(
|
|
26
|
-
fs.existsSync(path.join(dirPath, file.path)),
|
|
27
|
-
file.path + " unpacked",
|
|
28
|
-
);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
if (!isWindows) {
|
|
32
|
-
t.ok(
|
|
33
|
-
fs.statSync(path.join(dirPath, "file1")).mode.toString(8) == 100444,
|
|
34
|
-
"444 file permission",
|
|
35
|
-
);
|
|
36
|
-
t.ok(
|
|
37
|
-
fs.statSync(path.join(dirPath, "file2")).mode.toString(8) == 100666,
|
|
38
|
-
"666 file permission",
|
|
39
|
-
);
|
|
40
|
-
t.ok(
|
|
41
|
-
fs.statSync(path.join(dirPath, "file3")).mode.toString(8) == 100644,
|
|
42
|
-
"644 file permission",
|
|
43
|
-
); // DOES NOT WORK ON WINDOWS
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
test("downloadAndUnpack: zip+strip", function (t) {
|
|
50
|
-
t.plan(isWindows ? 3 : 6);
|
|
51
|
-
nock("https://amazon.s3.nw.com")
|
|
52
|
-
.get("/test-strip.zip")
|
|
53
|
-
.replyWithFile(200, fixturesZipStrip);
|
|
54
|
-
temp.mkdir("tmpcache", function (err, dirPath) {
|
|
55
|
-
downloader
|
|
56
|
-
.downloadAndUnpack(dirPath, "https://amazon.s3.nw.com/test-strip.zip")
|
|
57
|
-
.then(function (files) {
|
|
58
|
-
files.forEach(function (file) {
|
|
59
|
-
t.ok(
|
|
60
|
-
fs.existsSync(path.join(dirPath, file.path)),
|
|
61
|
-
file.path + " unpacked",
|
|
62
|
-
);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
if (!isWindows) {
|
|
66
|
-
t.ok(
|
|
67
|
-
fs.statSync(path.join(dirPath, "file1")).mode.toString(8) == 100444,
|
|
68
|
-
"444 file permission",
|
|
69
|
-
);
|
|
70
|
-
t.ok(
|
|
71
|
-
fs.statSync(path.join(dirPath, "file2")).mode.toString(8) == 100666,
|
|
72
|
-
"666 file permission",
|
|
73
|
-
);
|
|
74
|
-
t.ok(
|
|
75
|
-
fs.statSync(path.join(dirPath, "file3")).mode.toString(8) == 100644,
|
|
76
|
-
"644 file permission",
|
|
77
|
-
); // DOES NOT WORK ON WINDOWS
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
test("downloadAndUnpack: tar", function (t) {
|
|
84
|
-
t.plan(isWindows ? 3 : 6);
|
|
85
|
-
nock("https://amazon.s3.nw.com")
|
|
86
|
-
.get("/test.tar.gz")
|
|
87
|
-
.replyWithFile(200, fixturesTar);
|
|
88
|
-
temp.mkdir("tmpcache", function (err, dirPath) {
|
|
89
|
-
downloader
|
|
90
|
-
.downloadAndUnpack(dirPath, "https://amazon.s3.nw.com/test.tar.gz")
|
|
91
|
-
.then(function (files) {
|
|
92
|
-
files.forEach(function (file) {
|
|
93
|
-
t.ok(
|
|
94
|
-
fs.existsSync(path.join(dirPath, file.path)),
|
|
95
|
-
file.path + " unpacked",
|
|
96
|
-
);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
if (!isWindows) {
|
|
100
|
-
t.ok(
|
|
101
|
-
fs.statSync(path.join(dirPath, "file1")).mode.toString(8) == 100444,
|
|
102
|
-
"444 file permission",
|
|
103
|
-
); // DOES NOT WORK ON WINDOWS
|
|
104
|
-
t.ok(
|
|
105
|
-
fs.statSync(path.join(dirPath, "file2")).mode.toString(8) == 100666,
|
|
106
|
-
"666 file permission",
|
|
107
|
-
);
|
|
108
|
-
t.ok(
|
|
109
|
-
fs.statSync(path.join(dirPath, "file3")).mode.toString(8) == 100644,
|
|
110
|
-
"644 file permission",
|
|
111
|
-
); // DOES NOT WORK ON WINDOWS
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
test("Should throw an error if you try to download a file that is not available", function (t) {
|
|
118
|
-
t.plan(2);
|
|
119
|
-
nock("https://doesnot.com").get("/exist.zip").reply(404);
|
|
120
|
-
downloader
|
|
121
|
-
.downloadAndUnpack("/", "https://doesnot.com/exist.zip")
|
|
122
|
-
.catch(function (err) {
|
|
123
|
-
t.equal(err.statusCode, 404, err.msg);
|
|
124
|
-
});
|
|
125
|
-
nock("https://doesnot.com").get("/exist.tar").reply(404);
|
|
126
|
-
downloader
|
|
127
|
-
.downloadAndUnpack("/", "https://doesnot.com/exist.tar")
|
|
128
|
-
.catch(function (err) {
|
|
129
|
-
t.equal(err.statusCode, 404, err.msg);
|
|
130
|
-
});
|
|
131
|
-
});
|