typescript-closure-tools
Version:
Command-line tools to convert closure-style JSDoc annotations to typescript, and to convert typescript sources to closure externs files
53 lines (43 loc) • 1.39 kB
text/typescript
/// <reference path="../index/mkdirp.d.ts"/>
import fs = require('fs');
import finder = require('./finder');
import generate = require('./generate');
import pretty_print = require('./pretty_print');
import options = require('./options');
import mkdirp = require('mkdirp');
require('colors');
export var currentInput: string;
export var currentOutput: string;
function bold(s: string): string {
let a = <any>s
return a.bold
}
function red(s: string): string {
let a = <any>s
return a.red
}
function green(s: string): string {
let a = <any>s
return a.green
}
options.todo.forEach(todo => {
currentInput = todo.input;
currentOutput = todo.output;
try {
var symbols = finder.symbols(todo.input);
var defs = generate.defs(symbols);
var pretty = pretty_print.pretty(defs);
var parentPart = (/^.*\//).exec(todo.output) || [];
var parentDir = parentPart[0] || '';
mkdirp.sync(parentDir);
if (fs.existsSync(todo.output) && fs.readFileSync(todo.output, 'utf8') === pretty) {
console.error(green('No changes\t') + todo.output);
} else {
fs.writeFileSync(todo.output, pretty);
console.error(red('Wrote\t') + todo.output);
}
} catch (e) {
console.error(bold(red('ERROR\t')) + todo.input + ' ' + todo.output);
throw e;
}
});