///
///
///
interface Grunt {
registerMultiTask(name: string, description: string, callback: Function);
}
/**
* The actual grunt task that will do the file parsing using the code transformer.
*/
module.exports = function(grunt : Grunt) {
grunt.registerMultiTask("tsdlocal", "Parse typescript generated javascript files.", function() {
var generateDefinitions : boolean = this.data && this.data.options && this.data.options.generateDefinitions;
var parser;
if (generateDefinitions) {
parser = new FileParser(new DefinitionTransformer());
} else {
parser = new FileParser(new CodeTransformer());
}
this.files.filter(file => fs.statSync(file.src[0]).isFile())
.forEach(file => {
ensureFolderExists(file.dest);
parser.parse(file.src[0], file.dest);
console.log("Wrote " + colors.cyan(file.dest));
});
});
}
/**
* Ensures the parent folders for the given file name exists.
*/
function ensureFolderExists(file : string) : void {
var folderName = path.dirname(file);
if (fs.existsSync(folderName)) {
return;
}
try {
mkdirp.sync(folderName);
} catch (e) {
console.log(colors.red("Unable to create parent folders for: " + file), e);
}
}