iron-fe
Version:
An opinionated - yet flexible - front end development framework for use with Adobe Experience Manager
78 lines (54 loc) • 2.17 kB
JavaScript
var shell = require('shelljs');
var pathToProjectRoot = require('./pathToProjectRoot');
function findClientLibs( cb ){
pathToProjectRoot();
shell.cd( '..' );
var dir = shell.pwd();
var recursive = require('recursive-readdir');
var fs = require('fs');
var libs = [];
recursive(dir.stdout,
[
'node_modules',
'*.js',
'*.jsp',
'*.png',
'*.gif',
'*.java',
'*.groovy',
'*.jpeg',
'*.class',
'target',
'.git*',
'*.json',
'.DS_Store',
'README.md',
'*.template'
], function (err, files) {
// Files is an array of filename
for( var i = 0; i < files.length; i++ ){
var file = files[i];
if( file.search( '.content.xml' ) != -1 && file.search( '.content.xml.template' ) == -1 ){
var xml = fs.readFileSync( file ).toString();
if( xml.search('jcr:primaryType="cq:ClientLibraryFolder"') != -1 ){
// Find the "categories=" place in the string and then grab the actuall categories
var categories = xml.substr( xml.search('categories=') + 13 , xml.search(']') - xml.search('categories=') - 13 ).split(",")
var path = file.substr( pathToProjectRoot().length - 1 ).split('/');
path = path.splice(0, path.length - 1 );
libs.push({
name : categories[0],
path : path.join('/')
});
// TODO: add in support for mutiple categories
// for( var x = 0; x < categories.length; x++ ){
//
// libs.push( categories[x] );
//
// }
}
}
}
cb( libs )
});
}
module.exports = findClientLibs;