#!/usr/node/bin/node "use strict"; var CronJob = require('cron').CronJob; var async = require('async'); var util = require('util'); var config = require('./lib/config.js'); var dspattern = require('./lib/dspattern.js'); var SnapshotSet = require('./lib/snapshotset.js'); function applySnap(job, ds, cb) { util.log('Process ' + ds + '@' + job.tag); var s = new SnapshotSet(ds, job.tag); s.snapshot(function (err) { if (err) { cb(err); } s.prune(job.keep, cb); }); } function snap(job) { async.mapSeries(job.dataset, dspattern, function (err, datasets) { if (err) { throw err; } var merged = []; merged = merged.concat.apply(merged, datasets); async.forEachSeries(merged, function (ds, cb) { applySnap(job, ds, cb); }); }); } var cronJobs = []; var jobs = config(process.argv[2]); jobs.forEach(function (job) { util.log('Scheduling ' + job.tag + ' at ' + job.schedule) var cronJob = new CronJob('00 ' + job.schedule, function () { snap(job); }, null, true); cronJobs.push(cronJob); });