all files / lib/gulp/pipes/ quasar-pipes.js

11.54% Statements 3/26
0% Branches 0/14
0% Functions 0/2
11.54% Lines 3/26
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62                                                                                                                      
var
  through = require('through2'),
  path = require('path'),
  fs = require('fs'),
  yaml = require('js-yaml')
  ;
 
module.exports.pageCompiler = function() {
 
  function compile(file, enc, callback) {
    if (file.isNull()) {
      return callback(null, file);
    }
 
    var
      additions = '',
      manifest = {}
      ;
 
    var pageName = path.basename(file.path).match(/^page\.(.*)\.js$/)[1];
    var pageFolder = path.resolve(path.dirname(file.path), '../');
 
    if (pageName !== pageFolder.substr(pageFolder.lastIndexOf('/') + 1)) {
      console.log('ERROR!!!!!!! wrongly named file!');
    }
 
    var originalPageFolder = path.resolve(pageFolder, '../../../src/pages/' + pageName);
    var yamlFile = originalPageFolder + '/page.' + pageName + '.yml';
 
    if (fs.existsSync(yamlFile)) {
      manifest = yaml.load(fs.readFileSync(yamlFile));
    }
 
    if (!manifest.css) {
      var cssFile = originalPageFolder + '/css/page.' + pageName + '.styl';
 
      if (fs.existsSync(cssFile)) {
        manifest.css = 'pages/' + pageName + '/css/page.' + pageName + '.css';
      }
    }
 
    if (!manifest.html) {
      var htmlFile = originalPageFolder + '/html/page.' + pageName + '.html';
 
      if (fs.existsSync(cssFile)) {
        additions += 'exports.__config.html = require(\'raw!' + htmlFile + '\');';
      }
    }
 
    file.contents = new Buffer(
      'exports.__config = ' + JSON.stringify(manifest, null, 2) + ';\n' +
      additions + '\n\n' + file.contents
    );
 
    this.push(file);
    callback();
  }
 
  return through.obj(compile);
 
};