chainscript
Version:
Client for chainscript.io
69 lines (47 loc) • 1.77 kB
JavaScript
;
exports.__esModule = true;
exports['default'] = hashFiles;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _objectPath = require('object-path');
var _objectPath2 = _interopRequireDefault(_objectPath);
var _ignore = require('ignore');
var _ignore2 = _interopRequireDefault(_ignore);
var _walkDir = require('./walkDir');
var _walkDir2 = _interopRequireDefault(_walkDir);
var _hashFile = require('./hashFile');
var _hashFile2 = _interopRequireDefault(_hashFile);
var ignorer = _ignore2['default']().addIgnoreFile(_ignore2['default'].select(['.csignore', '.gitignore']));
function hashDir(cwd, dir, algorithm, hashes) {
return _walkDir2['default'](dir, function (files) {
return ignorer.filter(files.map(function (f) {
return _path2['default'].relative(cwd, f);
}));
}, function (file) {
return _hashFile2['default'](file, algorithm).then(function (hash) {
return hashes[hash] = _path2['default'].relative(cwd, file);
});
});
}
function hashFiles(cwd, paths) {
var algorithm = arguments.length <= 2 || arguments[2] === undefined ? 'sha256' : arguments[2];
var root = arguments.length <= 3 || arguments[3] === undefined ? '' : arguments[3];
var hashes = {};
var dirs = [].concat(paths);
var next = function next() {
if (dirs.length === 0) {
var json = undefined;
if (root) {
json = {};
_objectPath2['default'].set(json, root || '', hashes);
} else {
json = hashes;
}
return json;
}
return hashDir(cwd, dirs.shift(), algorithm, hashes).then(next);
};
return next();
}
module.exports = exports['default'];