Skip to content

Instantly share code, notes, and snippets.

@k0sukey
Created November 17, 2012 13:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save k0sukey/4095824 to your computer and use it in GitHub Desktop.
Save k0sukey/4095824 to your computer and use it in GitHub Desktop.
Alloy with CoffeeScript / TypeScript
task("pre:compile", function(event,logger) {
var wrench = require("wrench"),
fs = require("fs"),
path = require("path"),
coffee = require("coffee-script");
event.alloyConfig.coffee = [];
wrench.readdirSyncRecursive(event.dir.home).forEach(function(target){
if (target.match(/\.coffee$/)) {
event.alloyConfig.coffee.push(target.replace(/\.coffee$/, ".js"));
fs.writeFileSync(
path.join(event.dir.home,target.replace(/\.coffee$/, ".js")),
coffee.compile(fs.readFileSync(path.join(event.dir.home + "/" + target)).toString(), { bare: true }));
}
});
});
task("post:compile",function(event,logger){
var fs = require("fs");
event.alloyConfig.coffee.forEach(function(target){
fs.unlinkSync(event.dir.home + "/" + target);
});
});
task("pre:compile", function(event,logger) {
var wrench = require("wrench"),
fs = require("fs"),
path = require("path");
var code = [
fs.readFileSync("/path/to/node_modules/typescript/bin/typescript.js"),
"module.exports = TypeScript;"
].join("");
fs.writeFileSync(process.env.TMPDIR + "typescript.js", code);
var TypeScript = require(process.env.TMPDIR + "typescript.js");
fs.unlinkSync(process.env.TMPDIR + "typescript.js");
logger.information = logger.info;
logger.warning = logger.warn;
logger.fatal = logger.info;
logger.log = logger.info;
event.alloyConfig.tsc = [];
wrench.readdirSyncRecursive(event.dir.home).forEach(function(target){
if (target.match(/\.ts$/)) {
var outfile = {
source: "",
Write: function(s) {this.source += s;},
WriteLine: function(s) {this.source += s + "\n";},
Close: function(){}
};
var compiler = new TypeScript.TypeScriptCompiler(outfile, logger);
compiler.addUnit(fs.readFileSync(path.join(event.dir.home + "/" + target)).toString(), target);
compiler.emit(function() {
return outfile;
});
event.alloyConfig.tsc.push(target.replace(/\.ts$/, ".js"));
fs.writeFileSync(
path.join(event.dir.home,target.replace(/\.ts$/, ".js")),
outfile.source);
}
});
});
task("post:compile",function(event,logger){
var fs = require("fs");
event.alloyConfig.tsc.forEach(function(target){
fs.unlinkSync(event.dir.home + "/" + target);
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment