Files
tmt-workflow-act/act_project/_tasks/common/changed.js
T
2021-08-23 22:05:46 +08:00

57 lines
1.3 KiB
JavaScript

var md5 = require('crypto-md5');
var path = require('path');
var rd = require('rd');
var fs = require('fs');
var _ = require('lodash');
function changed(dir) {
var manifestPath = path.resolve('./src/manifest.json');
var manifest = {};
var originManifest = {};
//如果存在 manifest.json, 则加载保存
if (fs.existsSync(manifestPath)) {
originManifest = require(manifestPath);
}
//遍历目录, 根据内容 md5 加密
rd.eachFileFilterSync(dir, function (file) {
var index = path.relative(dir, file);
//过滤掉 隐藏文件 和 manifest.json
if (path.extname(file) && index !== 'manifest.json' && fs.existsSync(file)) {
var data = fs.readFileSync(file);
if (data) {
manifest[index] = md5(data, 'hex');
}
}
});
//将新的 manifest.json 保存
fs.writeFile(manifestPath, JSON.stringify(manifest), function (err) {
if (err) throw err;
});
//找出有变动的文件
if(originManifest){
var diff = {};
_.forEach(manifest, function (item, index) {
if (originManifest[index] !== item) {
diff[index] = item;
}
});
}
return diff;
}
module.exports = function(){
return changed;
};