Skip to content

Commit 4e44894

Browse files
refactor: download function (#649)
1 parent 3530ada commit 4e44894

File tree

11 files changed

+259
-2012
lines changed

11 files changed

+259
-2012
lines changed

.github/CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
77

88
## [Unreleased]
99

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+
1022
## [3.8.3] - 2022-08-26
1123

1224
### Changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ Using pnpm:
3232
pnpm add nw-builder
3333
```
3434

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+
3539
## API Reference
3640

3741
> Stay up to date via the [Changelog](https://github.com/nwjs-community/nw-builder/blob/master/.github/CHANGELOG.md).

lib/downloader.cjs

Lines changed: 0 additions & 176 deletions
This file was deleted.

lib/index.cjs

Lines changed: 27 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
const { existsSync } = require("node:fs");
12
var _ = require("lodash");
23
var inherits = require("inherits");
34
var EventEmitter = require("events").EventEmitter;
@@ -11,6 +12,7 @@ var spawn = require("child_process").spawn;
1112
var semver = require("semver");
1213
var platformOverrides = require("./platformOverrides.cjs");
1314
var deprecate = require("deprecate");
15+
const { install } = require("nw-install");
1416

1517
const {
1618
checkCache,
@@ -23,20 +25,6 @@ const {
2325
var NwVersions = require("./versions.cjs");
2426
var Version = require("./Version.cjs");
2527
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-
})();
4028

4129
// We inherit from EventEmitter for logging
4230
inherits(NwBuilder, EventEmitter);
@@ -325,74 +313,35 @@ NwBuilder.prototype.platformFilesForVersion = function () {
325313
return Promise.resolve();
326314
};
327315

328-
NwBuilder.prototype.downloadNwjs = function () {
329-
var self = this,
330-
downloads = [];
331-
332-
this._forEachPlatform(function (name, platform) {
333-
self.setPlatformCacheDirectory(
334-
name,
335-
platform,
336-
self._version.version,
337-
self._version.flavor,
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}`;
356327
if (
357-
!self.isPlatformCached(
358-
name,
359-
platform,
360-
self._version.version,
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
363332
) {
364-
downloads.push(
365-
Downloader.downloadAndUnpack(platform.cache, platform.url).catch(
366-
function (err) {
367-
if (err.statusCode === 404) {
368-
self.emit(
369-
"log",
370-
"ERROR: The version " +
371-
self._version.version +
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}`,
385342
);
386-
self.emit("log", "Downloading: " + platform.url);
387-
} else {
388-
self.emit("log", "Using cache for: " + name);
389343
}
390-
});
391-
392-
return Promise.all(downloads).then(function (data) {
393-
Downloader.clearProgressbar();
394-
return data;
395-
});
344+
}
396345
};
397346

398347
NwBuilder.prototype.buildGypModules = function () {

0 commit comments

Comments
 (0)