run-on-ssh
Version:
Run a node.js script on a given ssh server
56 lines (45 loc) • 1.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = readFolder;
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _crypto = require('crypto');
var _promise = require('promise');
var _promise2 = _interopRequireDefault(_promise);
var _lsr = require('lsr');
var _lsr2 = _interopRequireDefault(_lsr);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var readFile = _promise2.default.denodeify(_fs2.default.readFile);
function order(a, b) {
return a.path < b.path ? -1 : 1;
}
function readFolder(dirname, nodeVersion) {
return (0, _lsr2.default)(dirname, {
filter: function filter(entry) {
return entry.name !== 'node_modules';
}
}).then(function (res) {
return _promise2.default.all(res.sort(order).map(function (entry) {
if (entry.isDirectory()) {
return { type: 'directory', path: entry.path };
} else {
return readFile(entry.fullPath).then(function (content) {
return { type: 'file', path: entry.path, content: content };
});
}
}));
}).then(function (entries) {
var hash = (0, _crypto.createHash)('sha1');
hash.update(nodeVersion);
entries.forEach(function (entry) {
hash.update(entry.type, 'utf8');
hash.update(entry.path, 'utf8');
if (entry.type === 'file') {
hash.update(entry.content);
}
});
return { entries: entries, hash: hash.digest('hex') };
});
}