oddiff
Version:
Colorized octal diff tool using the mac/unix od tool and jsdiff/chalk for colorized output
65 lines (46 loc) • 1.45 kB
JavaScript
/// <reference path="typings/node/node.d.ts"/>
var jsdiff = require('diff');
var chalk = require('chalk');
var argv = require('minimist')(process.argv.slice(2), {
boolean: ['verbose', 'debug']
});
argv.debug = argv.debug || argv.verbose;
if (argv.debug) {
console.log('args:', argv);
}
function getHelpText() {
var fs = require('fs');
var path = require('path');
var helpText = fs.readFileSync(path.join(__dirname, 'README.md')).toString();
helpText = helpText.substr(helpText.indexOf('<!-- HELP-BEGIN -->') + 20);
helpText = helpText.substr(0, helpText.indexOf('<!-- HELP-END -->') - 1);
var output = require('msee').parse(helpText);
output = output.replace(/ /g, ' ');
return output;
}
if (argv.help) {
console.log(getHelpText());
return;
}
if (argv.version) {
console.log(require('./package').version);
return;
}
if (argv._.length !== 2) {
console.log(getHelpText());
return;
}
var file1 = argv._[0];
var file2 = argv._[1];
var shelljs = require('shelljs');
var f1Result = shelljs.exec('od -c ' + file1, {silent: true});
var f2Result = shelljs.exec('od -c ' + file2, {silent: true});
var diff = jsdiff.diffChars(f1Result.output, f2Result.output);
diff.forEach(function(part) {
// green for additions, red for deletions
// grey for common parts
var color = part.added ? 'green' :
part.removed ? 'red' : 'gray';
process.stdout.write(chalk[color](part.value));
});