From 033031c905ce4c3db93b58611dd1ee774592611c Mon Sep 17 00:00:00 2001 From: ccd0 Date: Tue, 19 Apr 2016 02:45:22 -0700 Subject: [PATCH] Combine templating+compiling+afterprocessing into one step. --- Makefile | 28 ++++++---------------------- tools/chain.js | 25 +++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 22 deletions(-) create mode 100644 tools/chain.js diff --git a/Makefile b/Makefile index 18da8aa93..e4df36dd7 100644 --- a/Makefile +++ b/Makefile @@ -136,33 +136,17 @@ $(foreach p, \ $(eval $(call concatenate,$(p))) \ ) -tmp/platform_crx.jst tmp/platform_userscript.jst : tmp/platform.jst - $(CP) +to_compile := $(subst platform,platform_crx platform_userscript,$(parts)) -to_interpolate := $(filter-out platform,$(parts)) platform_crx platform_userscript - -define interpolate -tmp/$1.$$(call lang,$1) : tmp/$1.jst $$(call imports,$1) $(template_deps) - $(template) $$< $$@ $$(if $$(findstring platform_,$1),type=$$(subst platform_,,$1)) -endef - -$(foreach p, $(to_interpolate), $(eval $(call interpolate,$(p)))) - -tmp/platform_%.coffee : tmp/platform.jst $(call imports,platform) $(template_deps) - $(template) $< $@ type=$* - -to_compile := $(filter-out globals css platform,$(parts)) platform_crx platform_userscript - -define compile -tmp/$1.js : tmp/$1.coffee $(coffee_deps) tools/globalize.js +define force_compile +tmp/$1.js : tmp/$$(firstword $$(subst _, ,$1)).jst $$(call imports, $$(firstword $$(subst _, ,$1))) $(RM) $$@ endef -$(foreach p, $(to_compile), $(eval $(call compile,$(p)))) +$(foreach p, $(to_compile), $(eval $(call force_compile,$(p)))) -.events/compile : $(foreach p, $(to_compile), tmp/$(p).js) | .events - $(coffee) $(subst .js,.coffee,$?) - node tools/globalize.js $(subst tmp/,,$(subst .js,,$?)) +.events/compile : $(patsubst %,tmp/%.js,$(to_compile)) $(template_deps) $(coffee_deps) tools/globalize.js tools/chain.js | .events + node tools/chain.js $(filter $(to_compile),$(patsubst tmp/%.js,%,$?)) echo -> $@ tmp/eventPage.js : src/meta/eventPage.coffee $(coffee_deps) | tmp diff --git a/tools/chain.js b/tools/chain.js new file mode 100644 index 000000000..f6e94ec6c --- /dev/null +++ b/tools/chain.js @@ -0,0 +1,25 @@ +var fs = require('fs'); +var template = require('./template'); +var coffee = require('coffee-script'); +var globalize = require('./globalize'); + +for (var name of process.argv.slice(2)) { + try { + var parts = name.split('_'); + var basename = parts[0]; // e.g. template_crx -> template + var script = fs.readFileSync(`tmp/${basename}.jst`, 'utf8'); + script = script.replace(/\r\n/g, '\n'); + script = template(script, {type: parts[1]}); + if (fs.readdirSync(`src/${basename}`).some(f => /\.coffee$/.test(f))) { + script = coffee.compile(script); + var varNames = globalize.getNames(name); + script = globalize.globalize(script, varNames); + } + fs.writeFileSync(`tmp/${name}.js`, script); + } catch (err) { + console.error(`Error processing ${name}`); + throw err; + } +} + +