/*

Header + Footer : http://themeforest.net/item/gamecity-a-flat-responsive-gaming-template/full_screen_preview/7615416

Options : http://demo.bossthemes.com/gameworld2/index.php?route=common/home

Slideshow for last/random cards : http://themeforest.net/item/sevenmag-html5-blogmagazinegamesnews-template/full_screen_preview/7805540

Porfolio buttons + Welcome to US : http://vergatheme.com/demosd/goddess/


*/


/*
 *
 * Structure du website:
 *
 * /                         : Présentation - Gros boutons "Rechercher une carte", "Voir les editions" - Mettre en avant la dernière édition - Contribute!
 *
 * /search/                  : Recherche de carte par code ou nom
 * /edition/                 : liste toutes les editions
 * /edition/fundamentals     : page de l'edition avec ses infos et ses cartes
 * /edition/fundamentals/foo : page de la carte avec ses infos, son changelog, etc
 * /create/                  : Aide à la creation de carte (génération de l'UID) (génération des fichiers ?)
 * /print/                   : Wizard pour fabriquer des sets de cartes à imprimer
 *
 * Responsive
 * Au début on prompt un choix (ou on force par les arguments) :
 * Tout regenerer - Mettre à jour
 * Il faudrait un hook pour qu'au push ca regénère les cartes (ou un truc dans le genre)
 * Fabriquer le site pour chaque langue
 * Pouvoir mettre du analytics
 *
 * - lecture du markdown
 * - generation de fichiers HTML (avec header et footer)
 *
 *
 * features/
 *          languages/
 *                    en_EN.po
 *          common/
 *                 assets/
 *                        page.css
 *                        responsive.css
 *                 header.js
 *                 footer.js
 *                 page.js
 *          console/
 *          tests/
 *          create/
 *          print/
 *                page.js
 *          edition/
 *                  edition.js
 *          card/
 *               card.js
 *          search/
 *                 search.js
 *          assets/
 *                 export.js
 *
 *

 */
 (function() {
  'use strict';

  var fs = require('fs'),
      path = require('path'),
      CardsGenerator = require('./features/card/cards-generator').CardsGenerator,
      FileUtils = require('./features/file/file.js').File,
      cmdArgs = {};

  process.argv.forEach(function (val) {
    if (val != 'node' && val.indexOf('generator.js') === -1) {
      var type = val.split('=')[0],
          value = val.split('=')[1];

      if (type.substring(0, 2) == '--') {
        cmdArgs[type.substring(2)] = value;
      }
    }
  });

  var TheMachine = function(options) {
    options = options || {};

    var _template = options.template || cmdArgs.template,
        _templatesToGenerate = 0,
        _onGenerationComplete = false,
        _lang = options.lang || cmdArgs.lang;

    function _templateExists(template, callback) {
      fs.exists(template, function(exists) {
        if (!exists) {
            throw new Error('template \'' + template + '\' does not exist');
        }
        if (callback) {
          callback();
        }
      });
    }

    function _generateTemplate(template) {
      var templatePath = path.join(__dirname, '../templates/', template);

      _templateExists(templatePath, function() {

        FileUtils.directory(path.join(__dirname, '../website', 'data'));
        FileUtils.directory(path.join(__dirname, '../website', 'data', 'cards'));
        FileUtils.directory(path.join(__dirname, '../website', 'data', 'print'));

        (new CardsGenerator(templatePath, template, _lang)).generate(function() {

          _templatesToGenerate --;

          if (_templatesToGenerate === 0 && _onGenerationComplete) {
            _onGenerationComplete();
          }

        });

      });
    }

    this.generate = function(onGenerationComplete) {
      _onGenerationComplete = onGenerationComplete || false;

      if (_lang && _lang.length == 2) {
        _lang = _lang + '_' + _lang.toUpperCase();
      }

      var templates = [];

      if (_template) {
        templates.push(_template);
      }
      else {
        var templatesPath = path.join(__dirname, '../templates'),
            directories = fs.readdirSync(templatesPath).filter(function (file) {
              return fs.statSync(path.join(templatesPath, file)).isDirectory();
            });

        directories.forEach(function(template) {
          templates.push(template);
        });
      }

      _templatesToGenerate = templates.length;

      templates.forEach(function(template) {
        _generateTemplate(template, onGenerationComplete);
      });
    };

  };

  exports.TheMachine = TheMachine;

 })();
@@ -1,2040 +1,4 @@
-/*%0A%0AHeader + Footer : http://themeforest.net/item/gamecity-a-flat-responsive-gaming-template/full_screen_preview/7615416%0A%0AOptions : http://demo.bossthemes.com/gameworld2/index.php?route=common/home%0A%0ASlideshow for last/random cards : http://themeforest.net/item/sevenmag-html5-blogmagazinegamesnews-template/full_screen_preview/7805540%0A%0APorfolio buttons + Welcome to US : http://vergatheme.com/demosd/goddess/%0A%0A%0A*/%0A%0A%0A/*%0A *%0A * Structure du website:%0A *%0A * /                         : Pr%C3%A9sentation - Gros boutons %22Rechercher une carte%22, %22Voir les editions%22 - Mettre en avant la derni%C3%A8re %C3%A9dition - Contribute!%0A *%0A * /search/                  : Recherche de carte par code ou nom%0A * /edition/                 : liste toutes les editions%0A * /edition/fundamentals     : page de l'edition avec ses infos et ses cartes%0A * /edition/fundamentals/foo : page de la carte avec ses infos, son changelog, etc%0A * /create/                  : Aide %C3%A0 la creation de carte (g%C3%A9n%C3%A9ration de l'UID) (g%C3%A9n%C3%A9ration des fichiers ?)%0A * /print/                   : Wizard pour fabriquer des sets de cartes %C3%A0 imprimer%0A *%0A * Responsive%0A * Au d%C3%A9but on prompt un choix (ou on force par les arguments) :%0A * Tout regenerer - Mettre %C3%A0 jour%0A * Il faudrait un hook pour qu'au push ca reg%C3%A9n%C3%A8re les cartes (ou un truc dans le genre)%0A * Fabriquer le site pour chaque langue%0A * Pouvoir mettre du analytics%0A *%0A * - lecture du markdown%0A * - generation de fichiers HTML (avec header et footer)%0A *%0A *%0A * features/%0A *          languages/%0A *                    en_EN.po%0A *          common/%0A *                 assets/%0A *                        page.css%0A *                        responsive.css%0A *                 header.js%0A *                 footer.js%0A *                 page.js%0A *          console/%0A *          tests/%0A *          create/%0A *          print/%0A *                page.js%0A *          edition/%0A *                  edition.js%0A *          card/%0A *               card.js%0A *          search/%0A *                 search.js%0A *          assets/%0A *                 export.js%0A *%0A *%0A%0A */%0A 
 (fun

remove the old website comments