Skip to content

Instantly share code, notes, and snippets.

@beatak
Created November 10, 2015 21:06
Show Gist options
  • Save beatak/80c70b82d12d277b5a44 to your computer and use it in GitHub Desktop.
Save beatak/80c70b82d12d277b5a44 to your computer and use it in GitHub Desktop.
'use strict';
var assert = require('assert');
var fs = require('fs');
var path = require('path');
var shell = require('shelljs');
var DIR_ETSYWEB = path.join(process.env.HOME, 'development', 'Etsyweb');
var find_sprockets = require(path.join(__dirname, '../../lib/dependency/find_sprockets.js'));
var r_ack = shell.exec(
'cd ' + DIR_ETSYWEB + ' && grep "\/\/= require" -r htdocs/assets/js | cut -d ":" -f1 | sort -u',
{silent: true}
);
var arr_ack = r_ack.output.trim().split('\n');
arr_ack.sort();
var arr_lib = [];
var r_lib = shell.find(path.join(DIR_ETSYWEB, 'htdocs', 'assets', 'js'));
r_lib.forEach(function (fullpath) {
if ('.js' !== path.extname(fullpath)) {
return;
}
var contents = fs.readFileSync(fullpath, {encoding: 'utf8'});
var arr = find_sprockets(contents);
if (0 < arr.length) {
arr_lib.push(path.relative(DIR_ETSYWEB, fullpath));
}
});
arr_lib.sort();
//console.log(arr_lib.sort());
var is_different = false;
try {
assert.deepEqual(arr_ack, arr_lib);
}
catch (er) {
console.error(er);
is_different = true;
}
if (false === is_different) {
console.error('the inputs are the same!');
process.exit();
}
var long, short, long_name;
if (arr_ack.length > arr_lib.length) {
long = arr_ack;
short = arr_lib;
long_name = 'arr_ack';
}
else {
long = arr_lib;
short = arr_ack;
long_name = 'arr_lib';
}
var common = [];
var only_short = [];
var rev_short = JSON.parse(JSON.stringify(short)).reverse();
var len_short = rev_short.length;
for (var i = 0; i < len_short; ++i) {
var key = rev_short[i];
var idx_long = long.indexOf(key);
if (-1 < idx_long) {
common.push(key);
long.splice(idx_long, 1);
short.splice((len_short - 1 - i), 1);
}
else {
only_short.push(key);
short.splice((len_short - 1 - i), 1);
}
}
console.log(JSON.stringify(
{
common: common,
only_short: only_short,
only_long: long,
long_is: long_name
},
'\n', 2
));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment