]> git.lizzy.rs Git - local-nhentai.git/blob - fzf.js
Generic stats and select
[local-nhentai.git] / fzf.js
1 const child = require("child_process")
2
3 module.exports.fzf = (options, binary = "fzf") => {
4         let res, rej
5         const prom = new Promise((rs, rj) => [res, rej] = [rs, rj])
6
7         const proc = child.spawn(binary)
8         options.forEach(opt => proc.stdin.write(opt + "\n"))
9
10         let data = ""
11         proc.stdout.on("data", chunk => {
12                 data += chunk
13         })
14         proc.stderr.pipe(process.stderr)
15
16         proc.on("close", code => {
17                 if (code == 0)
18                         res(data.trim())
19                 else
20                         rej(code)
21         })
22
23         return prom
24 }
25
26 module.exports.doujin = doujins => module.exports.fzf(doujins.sort(), __dirname + "/fzf-previews")
27         .then(doujin => child.spawn("firefox", [`file://${process.cwd()}/${doujin}/index.html`]))