-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
executable file
·54 lines (48 loc) · 1.59 KB
/
index.js
File metadata and controls
executable file
·54 lines (48 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/node
const util = require("util");
const exec = util.promisify(require("child_process").exec);
const fs = require("fs");
const { Worker } = require("worker_threads");
const normalize = require("./lib/normalize");
const chunk = require("lodash/chunk");
async function getDirectories() {
const { stdout, stderr } = await exec("echo $PATH | tr ':' '\n'");
stderr && console.error("stderr:", stderr);
const directories = stdout.split("\n");
const availableDirectories = [];
for (const directory of directories) {
fs.existsSync(directory) && availableDirectories.push(directory);
}
return availableDirectories;
}
async function getBinaries(directories) {
const binaries = [];
for (const directory of directories) {
const { stdout, stderr } = await exec(
`ls ${directory} | grep -v '/' | grep . | sort | sort -u`
);
stderr && console.error("stderr:", stderr);
const cmd = stdout.split("\n");
binaries.push(...cmd);
// const availableDirectories = [];
// for (const directory of directories) {
// fs.existsSync(directory) && availableDirectories.push(directory);
// }
}
return normalize(binaries.sort());
}
getDirectories().then(async (directories) => {
console.log("directories:", directories);
const binaries = await getBinaries(directories);
for (binariesChunk of chunk(binaries, 100)) {
console.log(binariesChunk)
const worker = new Worker(__dirname + "/worker/information-worker.js", {
workerData: {
binaries: binariesChunk,
},
});
worker.on("message", (msg) => {
console.log(msg);
});
}
});