38 lines
971 B
JavaScript
38 lines
971 B
JavaScript
var fs = require('fs');
|
|
var path = require('path');
|
|
var crypto = require('crypto');
|
|
var d3 = require('d3-queue');
|
|
|
|
module.exports = function () {
|
|
this.hashOfFiles = (paths, cb) => {
|
|
paths = Array.isArray(paths) ? paths : [paths];
|
|
var shasum = crypto.createHash('sha1');
|
|
|
|
var q = d3.queue(1);
|
|
|
|
var addFile = (path, cb) => {
|
|
fs.readFile(path, (err, data) => {
|
|
shasum.update(data);
|
|
cb(err);
|
|
});
|
|
};
|
|
|
|
paths.forEach(path => { q.defer(addFile, path); });
|
|
|
|
q.awaitAll(err => {
|
|
if (err) throw new Error('*** Error reading files:', err);
|
|
cb(shasum.digest('hex'));
|
|
});
|
|
};
|
|
|
|
this.hashProfile = (cb) => {
|
|
this.hashOfFiles(path.resolve(this.PROFILES_PATH, this.profile + '.lua'), cb);
|
|
};
|
|
|
|
this.hashString = (str) => {
|
|
return crypto.createHash('sha1').update(str).digest('hex');
|
|
};
|
|
|
|
return this;
|
|
};
|