| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #!/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);
- var snapSets = merged.map(function (ds) {
- return new SnapshotSet(ds, job.tag);
- });
- async.forEachSeries(snapSets, function (snapSet, cb) {
- snapSet.snapshot(cb);
- }, function () {
- async.forEachSeries(snapSets, function (snapSet, cb) {
- snapSet.prune(job.keep, 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);
- });
|