var path = require('path'), db = require('../models/jobModel'), exec = require('child_process').exec, fs = require ('fs'), winston = require('winston'), exec_helper = require('./exec_helper'), ws_helper = require('./websocket_helper'), later = require('later'), job_queue = []; fs.exists || (fs.exists = path.exists); function execute_job(file) { var file_path = path.resolve(__dirname + "/../" + file.path.replace('\/filesystem\/', '\/repositories\/')); fs.exists(file_path, function(exists) { if (exists) { exec_helper.execute_program(file, true); console.log("execute_job"); console.log(file.key); file.last_run = new Date(); db.update({key: file.key}, file, {upsert: true}, function(err) { }); } else { winston.info('scheduled job no longer exists, deleting from queue: ' + file_path); //TODO redis to nedb db.remove({key: file.key}); } }); } function schedule_job(key, job) { if (!key) { return; } var is_new_job = true, schedule = later.parse.text(job.text); later.date.localTime(); var job_timer = later.setInterval(execute_job.bind(null, job), schedule); console.log("Job Scheduled: ", schedule); var len = job_queue.length; for (var i=0; i