Ejemplo n.º 1
0
  return through2.obj(function (file, enc, cb) {
    if (file.isNull()) return cb(null, file);
    if (file.isStream()) throw new Error('No support for streams');

    var dirPath = path.dirname(file.relative);
    var option = options[dirPath];

    if (option) {
      var manifestPath = dirPath;
      if (option !== true) {
        manifestPath = option;
      }

      manifestPath += '.js'

      var manifestDir = path.dirname(manifestPath);
      var requirePath = path.relative(manifestDir, file.relative);
      requirePath = requirePath.replace(path.extname(requirePath), '');

      objectPath.ensureExists(_manifests, [manifestPath, 'path'], manifestPath);
      objectPath.push(_manifests, [manifestPath, 'files'], requirePath);
    }

    cb(null, file)
  }, function (cb) {
 before(function (next) {
     fileGetHandler.setServer(server);
     ObjectPath.ensureExists(server, 'settings.app.services', {});
     server.settings.app.services.fileFactory = fileFactory;
     server.settings.app.services.fileManager = fileManager;
     fileFactory.setServer(server);
     next();
 });
 before(function (next) {
     curdCoreHandler.setServer(server);
     documentService.setServer(server);
     documentServiceFactory.setServer(server);
     stub = Sinon.stub(documentServiceFactory, 'getDocumentService', function () {
         return documentService;
     });
     ObjectPath.ensureExists(server, 'settings.app.services', {});
     server.settings.app.services.documentServiceFactory = documentServiceFactory;
     next();
 });
Ejemplo n.º 4
0
 ServiceLoader.prototype.loadService = function (serviceConfig, callBackArray) {
     serviceConfig = Joi.attempt(serviceConfig, Schema.default.ServiceSchema, 'Invalid service config');
     var ServiceClass = serviceConfig.cls;
     var cls = new ServiceClass();
     if (typeof cls.setServer === 'function') {
         cls.setServer(this.server);
     }
     if (typeof cls.init === 'function') {
         callBackArray.push(cls.init);
     }
     this.methodLoader.loadMethods(cls, serviceConfig.methods);
     this.handlerLoader.loadHandlers(cls, serviceConfig.handlers);
     this.eventLoader.loadEvents(cls, serviceConfig.events);
     if (serviceConfig.name) {
         ObjectPath.ensureExists(this.server, 'settings.app.services', {});
         ObjectPath.set(this.server, 'settings.app.services.' + serviceConfig.name, cls);
     }
 };
 before(function (next) {
     ObjectPath.ensureExists(server, 'settings.app.services', {});
     server.settings.app.services.categoryDbService = dbService;
     service.setServer(server);
     next();
 });
Ejemplo n.º 6
0
var makeHTML = (filePath, callback) => {
  try {
    var folderName = path.dirname(filePath)
    var fileName = path.basename(filePath)
    var outputFiles = []
    var locales = []

    if (fileName.split('.').length > 2) {
      locales = [fileName.split('.')[1]]
    } else {
      locales = appConf.locales
    }

    for (var l in locales) {
      if (!locales.hasOwnProperty(l)) { continue }

      var locale = locales[l]

      // Get Jade template
      var jadeFile = getFilePath(folderName, 'index.jade', locale)
      if (!jadeFile) { continue }

      // Get and set data for Jade template
      var data = {
        page: {},
        D: {},
        G: {}
      }

      data.D = getYamlFile(folderName, 'data.yaml', locale, {})

      for (let i in data.D.page) {
        if (!data.D.page.hasOwnProperty(i)) { continue }

        op.set(data, ['page', i], op.get(data, ['D', 'page', i]))
      }
      op.del(data, 'D.page')

      if (op.get(data, 'page.disabled', false) === true) { continue }

      op.ensureExists(data, 'page.language', locale)
      op.ensureExists(data, 'page.otherLocales', {})
      op.ensureExists(data, 'page.path', path.dirname(jadeFile).replace(appConf.source, '').substr(1))
      op.ensureExists(data, 'pretty', true)
      op.ensureExists(data, 'basedir', appConf.jade.basedir)

      for (let i in appConf.locales) {
        if (!appConf.locales.hasOwnProperty(i)) { continue }
        if (appConf.locales[i] === locale) { continue }
        if (!getFilePath(folderName, 'index.jade', appConf.locales[i])) { continue }

        var otherLocaleData = getYamlFile(folderName, 'data.yaml', appConf.locales[i], {})

        if (op.get(otherLocaleData, 'page.disabled', false) === true) { continue }

        op.ensureExists(otherLocaleData, 'page', {})
        op.ensureExists(otherLocaleData, 'page.language', appConf.locales[i])
        op.ensureExists(otherLocaleData, 'page.path', path.dirname(jadeFile).replace(appConf.source, '').substr(1))

        op.set(data, ['page', 'otherLocales', appConf.locales[i]], otherLocaleData.page)
      }

      // Get custom data from Yaml files
      for (let i in op.get(data, 'page.data.files', [])) {
        if (!data.page.data.files.hasOwnProperty(i)) { continue }

        op.set(data, ['F', data.page.data.files[i].replace('.' + locale + '.yaml', '').replace('.yaml', '')], getYamlFile(folderName, data.page.data.files[i], locale))

        let customDataFile = getFilePath(folderName, data.page.data.files[i], locale)
        let key = customDataFile.replace(appConf.source, '').replace('.yaml', '')

        if (op.get(jadeDependencies, key, []).indexOf(customDataFile) > -1) { continue }

        op.push(jadeDependencies, key, jadeFile)

        dependenciesWatcher.add(customDataFile)
      }

      data.G = appConf.data[locale]
      data.G.md = text => {
        if (text) {
          return md({ breaks: appConf.markdown.breaks, html: appConf.markdown.html }).render(text).replace(/\r?\n|\r/g, '')
        } else {
          return ''
        }
      }

      var redirect = op.get(data, 'page.redirect')

      var htmlDirs = op.get(data, 'page.aliases', [])
      var defaultHtmlDir = path.join('/', locale, data.page.path)
      htmlDirs.push(defaultHtmlDir)

      for (var h in htmlDirs) {
        if (!htmlDirs.hasOwnProperty(h)) { continue }

        if (redirect) {
          op.set(data, 'page.redirect', redirect)
        } else if (htmlDirs[h] !== defaultHtmlDir) {
          op.set(data, 'page.redirect', defaultHtmlDir)
        } else {
          op.del(data, 'page.redirect')
        }

        var compiledJade = jade.compileFile(jadeFile, data)
        var html = compiledJade(data)

        if (!appConf.jade.pretty) {
          html = minify(html, {
            caseSensitive: false,
            collapseBooleanAttributes: true,
            collapseWhitespace: true,
            decodeEntities: false,
            html5: true,
            keepClosingSlash: false,
            minifyCSS: true,
            minifyJS: true,
            preserveLineBreaks: false,
            quoteCharacter: '"',
            removeComments: true,
            removeEmptyAttributes: true
          })
        }

        for (let i in compiledJade.dependencies) {
          if (!compiledJade.dependencies.hasOwnProperty(i)) { continue }

          var key = op.get(compiledJade, ['dependencies', i]).replace(appConf.source, '').replace('.jade', '')

          if (op.get(jadeDependencies, key, []).indexOf(jadeFile) > -1) { continue }

          op.push(jadeDependencies, key, jadeFile)

          dependenciesWatcher.add(op.get(compiledJade, ['dependencies', i]))
        }

        var htmlFile = path.join(appConf.build, htmlDirs[h], 'index.html')

        fse.outputFileSync(htmlFile, html)

        outputFiles.push(htmlFile.replace(appConf.build, ''))
      }
    }

    callback(null, outputFiles)
  } catch (e) {
    callback(e)
  }
}
Ejemplo n.º 7
0
exports.openConfFile = (appConfFile, callback) => {
  try {
    appConf = yaml.safeLoad(fs.readFileSync(appConfFile, 'utf8'))

    op.ensureExists(appConf, 'locales', [''])
    op.ensureExists(appConf, 'source', path.join(__dirname, 'source'))
    op.ensureExists(appConf, 'build', path.join(__dirname, 'build'))
    op.ensureExists(appConf, 'assets', path.join(__dirname, 'assets'))
    op.ensureExists(appConf, 'assetsPath', '/assets')
    op.ensureExists(appConf, 'markdown.breaks', true)
    op.ensureExists(appConf, 'markdown.html', false)
    op.ensureExists(appConf, 'jade.basedir', path.join(__dirname, 'source'))
    op.ensureExists(appConf, 'jade.pretty', false)
    op.ensureExists(appConf, 'stylus.pretty', false)
    op.ensureExists(appConf, 'javascript.pretty', false)
    op.ensureExists(appConf, 'port', 0)

    if (appConf.source.substr(0, 1) === '.') {
      appConf.source = path.join(path.dirname(appConfFile), appConf.source)
    }
    if (appConf.build.substr(0, 1) === '.') {
      appConf.build = path.join(path.dirname(appConfFile), appConf.build)
    }
    if (appConf.assets.substr(0, 1) === '.') {
      appConf.assets = path.join(path.dirname(appConfFile), appConf.assets)
    }
    if (appConf.jade.basedir.substr(0, 1) === '.') {
      appConf.jade.basedir = path.join(path.dirname(appConfFile), appConf.jade.basedir)
    }

    // Printout configuration
    // var c = {}
    // c[appConfFile] = appConf
    // console.log(yaml.safeDump(c))

    // Load global data
    for (let i in appConf.locales) {
      if (!appConf.locales.hasOwnProperty(i)) { continue }

      var locale = appConf.locales[i]
      op.set(appConf, ['data', locale], getYamlFile(appConf.source, 'global.yaml', locale, {}))
    }

    callback(null, appConf)
  } catch (e) {
    callback(e)
  }
}