42 lines
1.5 KiB
JavaScript
42 lines
1.5 KiB
JavaScript
#! /usr/bin/env runjs
|
|
|
|
var hashjs = require('component-hashjs.js');
|
|
|
|
var main = () => {
|
|
var args = $ARRAY($ARGS);
|
|
if (args.length < 1) {
|
|
println('No args...');
|
|
println();
|
|
println('digestjs.js <FILE>')
|
|
return;
|
|
}
|
|
args.forEach((f) => {
|
|
var fi = $$.file(f);
|
|
if (fi.isDirectory()) { xprintln('[WARN] Skip directory: ' + fi); return; }
|
|
if (!(fi.getName().endsWith('.js'))) { xprintln('[WARN] Skip non js: ' + fi); return; }
|
|
|
|
var bytes = $$.rFile(fi).Bytes();
|
|
var list = bytes.list();
|
|
var digestJSON = hashjs.__getDigestJSON(list);
|
|
|
|
var jsSHA256Hex = hashjs.__calcSHA256Hex(list);
|
|
if (digestJSON == null) {
|
|
xprintln('[OK] Write file: ' + fi + ', SHA256: ' + jsSHA256Hex);
|
|
digestJSON = { 'SHA256': jsSHA256Hex };
|
|
list.add(hashjs.COMMENT_HASH_TAG + JSON.stringify(digestJSON));
|
|
$$.rFile(fi).write($ARR(list).join('\n'));
|
|
} else {
|
|
if (digestJSON.SHA256 == jsSHA256Hex) {
|
|
xprintln('[INFO] SHA256 matches, Skip file SHA256 update: ' + fi);
|
|
} else {
|
|
xprintln('[OK] Update file: ' + fi + ', SHA256: ' + digestJSON.SHA256 + ' >> ' + jsSHA256Hex);
|
|
digestJSON = { 'SHA256': jsSHA256Hex };
|
|
list.add(hashjs.COMMENT_HASH_TAG + JSON.stringify(digestJSON));
|
|
$$.rFile(fi).write($ARR(list).join('\n'));
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
main();
|