var outputFile = 'news', RssBraider = require('rss-braider'), fs = require('fs'), ejs = require(
  'ejs'), read = require('fs').readFileSync, join = require('path').join, str = read(
  join(__dirname, '/templates/rss.ejs'),
  'utf8'), feeds = {};

var log4js = require('log4js');
var logger = log4js.getLogger();

// Pull feeds from config files: ,
//      feeds.simple_test_feed = require("./config/feed").feed;
// Or define in-line

// filters 'filter_3_days', 'fix_images', 'fix_scripts'
feeds.simple_test_feed = {
  "feed_name": "feed",
  "default_count": 1,
  "no_cdata_fields": [], // Don't wrap these fields in CDATA tags
  "meta": {
    "title": "News",
    "description": "Combined News Feed",
    'site_url': 'http://pipes.silvrtree.co.uk/news.xml'
  },
  "plugins": [
    'filter_3_days', 'fix_images', 'fix_scripts'
  ],
  "sources": [
    {
          "count": 100,
          "feed_url": "http://www.telegraph.co.uk/news/rss.xml"
        }
  ]
}

;
var braider_options = {
  feeds: feeds,
  indent: "    ",
  date_sort_order: "desc", // Newest first
  log_level: "warn",
  dedupe_fields: ['link', 'guid'],
  plugins_directories: [__dirname + "/plugins/"]
};
var rss_braider = RssBraider.createClient(braider_options);

// Override logging level (debug, info, warn, err, off)
//rss_braider.logger.level('off');

rss_braider.processFeed('simple_test_feed', 'json', function(err, data) {
  console.log('A');
  if (err) {
    logger.error(err);
    return err;
  }

  console.log('B');

  var j = JSON.parse(data);

  console.log('C');
  var ejsOutput = ejs.compile(str)(j);

  console.log('D');
  fs.writeFile(__dirname + "/dist/" + outputFile + ".html",
    ejsOutput,
    function(err) {

      if (err) {
        logger.error(err);
        return console.error(err);
      }

      console.log("The file was saved!");
    });

  fs.writeFile(__dirname + "/dist/" + outputFile + ".json",
    data,
    function(err) {
      if (err) {
        logger.error(err);
        return console.error(err);
      }

      console.log("The file was saved!");
    });
});
