Skip to content

Commit 851afad

Browse files
chore: use new nw download functions
1 parent d923a27 commit 851afad

File tree

3 files changed

+27
-105
lines changed

3 files changed

+27
-105
lines changed

src/get.js

+25-103
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import path from "node:path";
55
import progress from "cli-progress";
66
import tar from "tar";
77

8-
import { unzip } from "./get/decompress.js";
8+
import decompress, { unzip } from "./get/decompress.js";
9+
import nw from "./get/nw.js";
910

1011
import util from "./util.js";
1112

@@ -31,129 +32,50 @@ import util from "./util.js";
3132
* @return {Promise<void>}
3233
*/
3334
async function get(options) {
34-
if (fs.existsSync(options.cacheDir) === false) {
35+
36+
const cacheDirExists = await util.fileExists(options.cacheDir);
37+
if (cacheDirExists === false) {
3538
await fs.promises.mkdir(options.cacheDir, { recursive: true });
3639
}
37-
await getNwjs(options);
38-
if (options.ffmpeg === true) {
39-
await getFfmpeg(options);
40-
}
41-
if (options.nativeAddon === "gyp") {
42-
await getNodeHeaders(options);
43-
}
44-
}
4540

46-
const getNwjs = async (options) => {
47-
const bar = new progress.SingleBar({}, progress.Presets.rect);
48-
const out = path.resolve(
41+
let nwFilePath = path.resolve(
4942
options.cacheDir,
5043
`nwjs${options.flavor === "sdk" ? "-sdk" : ""}-v${options.version}-${options.platform}-${options.arch}.${options.platform === "linux" ? "tar.gz" : "zip"
5144
}`,
5245
);
53-
// If options.cache is false, remove cache.
46+
47+
let nwDirPath = path.resolve(
48+
options.cacheDir,
49+
`nwjs${options.flavor === "sdk" ? "-sdk" : ""}-v${options.version}-${options.platform}-${options.arch}`,
50+
);
51+
5452
if (options.cache === false) {
55-
await fs.promises.rm(out, {
53+
await fs.promises.rm(nwFilePath, {
5654
recursive: true,
5755
force: true,
5856
});
5957
}
6058

61-
if (fs.existsSync(out) === true) {
62-
await fs.promises.rm(
63-
path.resolve(
64-
options.cacheDir,
65-
`nwjs${options.flavor === "sdk" ? "-sdk" : ""}-v${options.version}-${options.platform}-${options.arch}`,
66-
),
67-
{ recursive: true, force: true },
68-
);
69-
if (options.platform === "linux") {
70-
await tar.extract({
71-
file: out,
72-
C: options.cacheDir
73-
});
74-
} else {
75-
await unzip(out, options.cacheDir);
76-
if (options.platform === "osx") {
77-
await createSymlinks(options);
78-
}
79-
}
80-
return;
59+
if (util.fileExists(nwFilePath)) {
60+
nwFilePath = await nw(options.downloadUrl, options.version, options.flavor, options.platform, options.arch, options.cacheDir);
8161
}
8262

83-
const stream = fs.createWriteStream(out);
84-
const request = new Promise((res, rej) => {
85-
let url = "";
86-
87-
// Set download url and destination.
88-
if (
89-
options.downloadUrl === "https://dl.nwjs.io" ||
90-
options.downloadUrl === "https://npm.taobao.org/mirrors/nwjs" ||
91-
options.downloadUrl === "https://npmmirror.com/mirrors/nwjs"
92-
) {
93-
url = `${options.downloadUrl}/v${options.version}/nwjs${options.flavor === "sdk" ? "-sdk" : ""
94-
}-v${options.version}-${options.platform}-${options.arch}.${options.platform === "linux" ? "tar.gz" : "zip"
95-
}`;
96-
}
63+
await fs.promises.rm(nwDirPath, { recursive: true, force: true });
9764

98-
https.get(url, (response) => {
99-
// For GitHub releases and mirrors, we need to follow the redirect.
100-
if (
101-
options.downloadUrl === "https://npm.taobao.org/mirrors/nwjs" ||
102-
options.downloadUrl === "https://npmmirror.com/mirrors/nwjs"
103-
) {
104-
url = response.headers.location;
105-
}
65+
await decompress(nwFilePath, options.cacheDir);
10666

107-
https.get(url, (response) => {
108-
let chunks = 0;
109-
bar.start(Number(response.headers["content-length"]), 0);
110-
response.on("data", (chunk) => {
111-
chunks += chunk.length;
112-
bar.increment();
113-
bar.update(chunks);
114-
});
115-
116-
response.on("error", (error) => {
117-
rej(error);
118-
});
119-
120-
response.on("end", () => {
121-
bar.stop();
122-
res();
123-
});
124-
125-
response.pipe(stream);
126-
});
127-
128-
response.on("error", (error) => {
129-
rej(error);
130-
});
131-
});
132-
});
133-
134-
await request;
135-
await fs.promises.rm(
136-
path.resolve(
137-
options.cacheDir,
138-
`nwjs${options.flavor === "sdk" ? "-sdk" : ""}-v${options.version}-${options.platform}-${options.arch}`,
139-
),
140-
{ recursive: true, force: true },
141-
);
142-
if (options.platform === "linux") {
143-
await tar.extract({
144-
file: out,
145-
C: options.cacheDir
146-
});
147-
} else {
148-
await unzip(out, options.cacheDir);
149-
if (options.platform === "osx") {
150-
await createSymlinks(options);
151-
}
67+
if (options.platform === "osx") {
68+
await createSymlinks(options);
69+
}
15270

71+
if (options.ffmpeg === true) {
72+
await getFfmpeg(options);
73+
}
74+
if (options.nativeAddon === "gyp") {
75+
await getNodeHeaders(options);
15376
}
15477
}
15578

156-
15779
const getFfmpeg = async (options) => {
15880
const nwDir = path.resolve(
15981
options.cacheDir,

src/util.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ async function getNodeManifest({
219219
}
220220

221221
/**
222-
* Parse options
222+
* Parse options.
223223
*
224224
* @param {import("../../index.js").Options} options Options
225225
* @param {object} pkg Package.json as JSON

test/specs/get.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { beforeAll, describe, it } from "vitest";
77

88
import get from '../../src/get.js';
99

10-
describe.skip("get", async () => {
10+
describe("get", async () => {
1111
const nwOptions = {
1212
version: "0.83.0",
1313
flavor: "sdk",

0 commit comments

Comments
 (0)