#!/usr/bin/env node
var metadata = require('./../package.json'),
fs = require('fs'),
mkdirp = require('mkdirp'),
path = require('path'),
async = require('async'),
program = require('commander'),
config,
args,
output_directory;
module.exports = function(argv) {
program
.usage('[options] <config.json> <output directory>')
.version(metadata.version)
.option('-v, --verbose', 'More output');
program._name = "liberate-me";
program.command('dump-config')
.action(function() {
var conffile = path.resolve(__dirname, '..', 'libme.json.sample');
console.log(fs.readFileSync(conffile, {encoding: "utf-8"}));
process.exit(0);
});
program.parse(argv);
args = program.args;
// check for number of arguments
if (args.length !== 2) {
console.log("Error: Please pass correct number of arguments.");
program.help();
}
config = require(path.resolve(process.cwd(), args[0]));
output_directory = path.resolve(process.cwd(), args[1]);
// create output directory if it doesn't exist
console.info("Creating directory %s", output_directory);
mkdirp(output_directory, console.error);
//console.debug("Output directory: %s", output_directory);
module.exports.launch_services(config, output_directory);
};
module.exports.launch_services = function launch_services(config, output_directory) {
async.each(config.enabled, function(service_name) {
// TODO: handle the case when service_name is defined
var service = require('../services/' + service_name + '.js'),
service_directory = path.resolve(output_directory, service_name);
//console.debug("Configuration for %s: %s", service_name, config);
console.info("Fetching data from %s", service_name);
mkdirp(service_directory, console.error);
// TODO: handle the case when service_name is not in config
service(config.services[service_name], service_directory);
});
};
// run if standalone
Iif (require.main === module) {
module.exports(process.argv);
}
|