From 83f9e9458416e2ee1aa4dcdcb88f06ad929b4789 Mon Sep 17 00:00:00 2001 From: Sean McArthur <sean.monstar@gmail.com> Date: Thu, 13 Sep 2012 18:00:22 -0700 Subject: [PATCH] split up create_templates script into a lib file --- lib/static/views.js | 6 ++-- lib/templates.js | 61 +++++++++++++++++++++++++++++++ scripts/create_templates.js | 72 ++++++------------------------------- 3 files changed, 74 insertions(+), 65 deletions(-) create mode 100644 lib/templates.js diff --git a/lib/static/views.js b/lib/static/views.js index dc4a583b2..2579f05ff 100644 --- a/lib/static/views.js +++ b/lib/static/views.js @@ -232,11 +232,11 @@ exports.setup = function(app) { // /common/js/templates.js is dynamically built each time if (!config.get('use_minified_resources')) { - var generateTemplates = require('../../scripts/create_templates'); + var templates = require('../templates'); var dialogTemplatesPath = path.join(__dirname, '../../resources/static/dialog/views') var dialogTemplatesData; app.get('/common/js/templates.js', function(req, res) { - var str = generateTemplates(generateTemplates.RETURN, dialogTemplatesPath); + var str = templates.generate(dialogTemplatesPath); if (str) dialogTemplatesData = str; res.send(dialogTemplatesData); @@ -245,7 +245,7 @@ exports.setup = function(app) { var siteTemplatesPath = path.join(__dirname, "../../resources/views"); var siteTemplatesData; app.get('/test/mocks/site-templates.js', function(req, res) { - var str = generateTemplates(generateTemplates.RETURN, siteTemplatesPath, "site/"); + var str = templates.generate(siteTemplatesPath, "site/"); if (str) siteTemplatesData = str; res.send(siteTemplatesData); diff --git a/lib/templates.js b/lib/templates.js new file mode 100644 index 000000000..f9caaa449 --- /dev/null +++ b/lib/templates.js @@ -0,0 +1,61 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + + +const +fs = require('fs'), +path = require('path'), +ejs = require('ejs'), +config = require('./configuration'); + +var bundles = {}; + +exports.generate = function generate(templatesDir, namePrefix, lastGen) { + if (!namePrefix) namePrefix = ""; + + var bundle = bundles[templatesDir] || (bundles[templatesDir] = {}); + lastGen = lastGen || bundle.lastGen || 0; + var templateData = bundle.data; + + var fileNames = fs.readdirSync(templatesDir); + var templates = []; + + // is a regen necessary? + try { + for (var i = 0; i < fileNames.length; i++) { + if (lastGen < fs.statSync(path.join(templatesDir, fileNames[i])).mtime) { + throw "newer"; + } + } + // no rebuild needed + console.log("templates [%s] up to date", templatesDir); + return templateData; + } catch (e) { + console.log("creating templates [%s]", templatesDir); + } + + for(var index = 0, max = fileNames.length; index < max; index++) { + var fileName = fileNames[index]; + if(fileName.match(/\.ejs$/)) { + var templateName = namePrefix + fileName.replace(/\.ejs/, ''); + var templateText = fs.readFileSync(path.join(templatesDir, fileName), "utf8"); + + templates[templateName] = ejs.compile(templateText, { + client: true, + compileDebug: !config.get('use_minified_resources') + }); + } + } + + templateData = "BrowserID.Templates = BrowserID.Templates || {};"; + for (var t in templates) { + if (templates.hasOwnProperty(t)) { + templateData += "\nBrowserID.Templates['" + t + "'] = " + String(templates[t]); + } + } + + bundle.lastGen = Date.now(); + bundle.data = templateData; + return templateData; +}; diff --git a/scripts/create_templates.js b/scripts/create_templates.js index 729a63b6a..6d91d995a 100755 --- a/scripts/create_templates.js +++ b/scripts/create_templates.js @@ -7,74 +7,22 @@ const fs = require("fs"), path = require('path'), -ejs = require('ejs'), -config = require('../lib/configuration'); +templates = require('../lib/templates'); +var existsSync = fs.existsSync || path.existsSync; var dir = process.env.TEMPLATE_DIR || process.cwd(); var output_dir = process.env.BUILD_DIR || dir; - -var bundles = {}; - -function generateTemplates(outputType, templatesDir, namePrefix) { - if (templatesDir) dir = templatesDir; - if (!namePrefix) namePrefix = ""; - - var bundle = bundles[templatesDir] || (bundles[templatesDir] = {}); - var lastGen = bundle.lastGen || 0; - var templateData = bundle.data; - - var fileNames = fs.readdirSync(dir); - var templates = {}; - - // is a regen even neccesary? - try { - if (outputType !== generateTemplates.RETURN) { - lastGen = fs.statSync(path.join(output_dir, "templates.js")).mtime; - } - for (var i = 0; i < fileNames.length; i++) { - if (lastGen < fs.statSync(path.join(dir, fileNames[i])).mtime) { - throw "newer"; - } - }; - // no rebuild needed - console.log("templates.js is up to date"); - return templateData; - } catch (e) { - console.log("creating templates.js"); - } - - for(var index = 0, max = fileNames.length; index < max; index++) { - var fileName = fileNames[index]; - if(fileName.match(/\.ejs$/)) { - var templateName = namePrefix + fileName.replace(/\.ejs/, ''); - var templateText = fs.readFileSync(dir + "/" + fileName, "utf8"); - - templates[templateName] = ejs.compile(templateText, { - client: true, - compileDebug: !config.get('use_minified_resources') - }); - } - } - - templateData = "BrowserID.Templates = BrowserID.Templates || {};"; - for (var t in templates) { - if (templates.hasOwnProperty(t)) { - templateData += "\nBrowserID.Templates['" + t + "'] = " + String(templates[t]); - } - } - - if (outputType === generateTemplates.RETURN) { - bundle.lastGen = Date.now(); - bundle.data = templateData; - return templateData; - } else { - fs.writeFileSync(output_dir + "/templates.js", templateData, "utf8"); +var outputFile = path.join(output_dir, "templates.js"); + +function generateTemplates() { + var lastGen = existsSync(outputFile) ? fs.statSync(outputFile).mtime : 0; + var templateData = templates.generate(dir, null, lastGen); + if (templateData) { + // no data most likely means we're already up-to-date + fs.writeFileSync(path.join(output_dir, "templates.js"), templateData, "utf8"); } }; -generateTemplates.FILE = 0; -generateTemplates.RETURN = 1; - // run or export the function if (process.argv[1] === __filename) generateTemplates(); else module.exports = generateTemplates; -- GitLab