"use strict"; /** * Base Imports */ var fs = require('fs') , path = require('path') /** * Userspace libs */ var async = require('async') , AdmZip = require('adm-zip') , _ = require('./lib') , log = console.log var modules = [], basedir; var Q = async.queue(function(data, next){ _.md5sum( data.basedir + data.dirname + "/" + data.filename, function (err, md5) { if (!! err) return console.log("err..." + err) & next(err); _.find_mod_info(data.basedir + data.dirname + "/" + data.filename, function (err, id, name){ if (!! err) { console.log('ERR >> ' + data.filename) throw err; } console.log("pushing: " + id); modules.push({ id: id , name: name , url: data.dirname + "/" + escape(data.filename) , required: data.required , type: "Regular" , md5: md5 }); next(); }) }) }, 8); Q.drain = function (err) { if (!! err) throw err; log('Q drainded') fs.writeFileSync("modules.json", JSON.stringify(modules)); process.exit(); } function enqueue (basedir) { // Enqueue files // first add optionals so I don't have to scroll down _.eachFile(basedir +'/mods-client', function (err, filename) { if (!! err) throw err; Q.push({ dirname: "/mods-client" , filename: filename , required: false , basedir: basedir }) }) // _.eachFile( basedir + '/mods', function (err, filename) { if (!! err) throw err; log('Enqueue : ' + filename) Q.push({ dirname: "/mods" , filename: filename , required: true , basedir: basedir }) }) } module.exports = function (basedir, callback) { enqueue(basedir); Q.drain = function (err) { callback(err, modules) } } // Run and save a pack.json if running locally if (require.main === module) { enqueue("./pack"); }