| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #!/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);
- });
|