#!/usr/bin/env node

// Require settings first, for validation
require("../lib/settings/");

var dotenv = require("dotenv").config({silent: true}),
    Audiogram = require("../audiogram/"),
    transports = require("../lib/transports/");

// Can only register fonts once, double-registering throws an error
require("../lib/register-fonts.js");

pluckJob();

function pluckJob(){

  transports.getJob(function(err, job){

    if (err) {
      throw err;
    }

    if (job) {

      return render(job);

    }

    setTimeout(pluckJob, delay());

  });

}

function render(job) {

  var audiogram = new Audiogram(job.id);

  audiogram.settings = job;

  audiogram.render(function(err){

    if (err) {
      audiogram.status("error");
      audiogram.set("error", err.toString());
      throw err;
    }

    audiogram.status("ready");

    if (process.env.SPAWNED) {
      return transports.quit();
    }

    setTimeout(pluckJob, delay());

  });

}

function delay() {
   return transports.workerDelay ? transports.workerDelay() : 0;
}