'use strict'; const Promise = require("bluebird"); const fs = Promise.promisifyAll(require("fs")); const path = require("path"); const util = require("util"); const parse = require("./lib"); let completed = 0; Promise.try(() => { return fs.readdirAsync("/nix/store") }).filter((storePath) => { return /.+\.drv$/.test(storePath); }).map((storePath, i, total) => { return Promise.try(() => { return fs.readFileAsync(path.join("/nix/store", storePath)); }).then((contents) => { parse(contents.toString()); }).catch((err) => { console.error(path.join("/nix/store", storePath)); console.error(util.inspect(err, {colors: true})); throw err; }).then(() => { completed += 1; console.log(`Completed ${completed}/${total} derivations...`); }); }, {concurrency: 1}).catch((err) => { // do nothing });