Skip to content

Instantly share code, notes, and snippets.

@kimmellj
Created April 14, 2015 12:46
Show Gist options
  • Save kimmellj/239b69c2eb4f6e7e7832 to your computer and use it in GitHub Desktop.
Save kimmellj/239b69c2eb4f6e7e7832 to your computer and use it in GitHub Desktop.
Public Pipeline
/**
* To Call:
* node node public-pipeines.js ../HAR/har-demandware/
* @todo Better paramter management
*/
var DWREUtils = require('./dwre-util.js'),
fs = require('fs'),
async = require('async'),
path = require('path'),
recursive = require('recursive-readdir');
var cartridgePath = 'app_har_ha:app_har_core:app_fluid:app_storefront_richUI:app_storefront_core:int_vip:int_tealium:int_sap:int_ups:int_cybersource:int_fluid_checkout:bc_serviceframework:bc_integrationframework:lib_urijs:bc_orderguard'.split(':');
cartridgePath.reverse();
var dir = process.argv[2];
var walk = function(dir, done) {
var results = [];
fs.readdir(dir, function(err, list) {
if (err) return done(err);
var pending = list.length;
if (!pending) return done(null, results);
list.forEach(function(file) {
file = dir + '/' + file;
fs.stat(file, function(err, stat) {
if (stat && stat.isDirectory()) {
var index = cartridgePath.indexOf(path.basename(file));
if (index > -1) {
results.push(file);
}
walk(file, function(err, res) {
results = results.concat(res);
if (!--pending) done(null, results);
});
} else {
if (!--pending) done(null, results);
}
});
});
});
};
walk(dir, function(err, dirs) {
var cartridges = {};
async.sortBy(dirs, function(dir, callback) {
var baseName = path.basename(dir);
callback(err, cartridgePath.indexOf(baseName));
}, function(err, results) {
async.each(results, function(dir, callback) {
var baseName = path.basename(dir);
cartridges[baseName] = {
name: baseName,
dir: dir,
// pipelineFiles: [],
pipelines: {}
};
DWREUtils.findPipelineFiles(dir, function(pipelinesFiles) {
async.each(pipelinesFiles, function(pipelineFile, callback) {
// cartridges[baseName].pipelineFiles.push(pipelineFile);
DWREUtils.findPublicPipelines({
file: pipelineFile
}, function(pipelines) {
if (pipelines.length > 0) {
cartridges[baseName].pipelines[path.basename(pipelineFile)] = pipelines;
}
callback(null);
});
}, function(err) {
callback(null);
});
});
}, function(err) {
// console.log(cartridges);
var pipelineFiles = {};
for (cartridgeKey in cartridges) {
var cartridge = cartridges[cartridgeKey];
// console.log(cartridgeKey);
for (pipelinesKey in cartridge.pipelines) {
if (!pipelineFiles[pipelinesKey]) {
pipelineFiles[pipelinesKey] = {
cartridge: '',
pipelines: []
};
}
pipelineFiles[pipelinesKey].cartridge = cartridgeKey;
pipelineFiles[pipelinesKey].pipelines = cartridge.pipelines[pipelinesKey];
// console.log(pipelinesKey);
}
}
/**
* Print
*/
for (pipelineFile in pipelineFiles) {
var pipelineFileData = pipelineFiles[pipelineFile];
console.log('Pipeline: ' + pipelineFile);
console.log('Final Copy: '+ pipelineFileData.cartridge);
console.log('Public Pipelines: ');
pipelineFileData.pipelines.forEach(function(pipeline){
console.log("\t"+pipeline);
});
console.log('');
}
//console.log(JSON.stringify(pipelineFiles));
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment