Skip to content

Commit

Permalink
cli: initial
Browse files Browse the repository at this point in the history
  • Loading branch information
indutny committed May 21, 2013
1 parent f28fa34 commit 0210d09
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 1 deletion.
69 changes: 69 additions & 0 deletions bin/bem-xjst
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#!/usr/bin/env node
var fs = require('fs');
var q = require('q');
var bem_xjst = require('../');

require('coa').Cmd()
.name(process.argv[1])
.helpful()
.opt()
.name('version')
.title('Version')
.short('v')
.long('version')
.only()
.flag()
.act(function(opts) {
// return message as result of action
var package = require('fs').readFileSync(__dirname +
'/../package.json');
return JSON.parse(package).version;
})
.end()
.opt()
.name('no-opt')
.title('Dev mode')
.short('d').long('dev-mode')
.flag()
.end()
.opt()
.name('input').title('Input file (default: stdin)')
.short('i').long('input')
.input()
.end()
.opt()
.name('output').title('Output file (default: stdout)')
.short('o').long('output')
.output()
.end()
.act(function(options) {
var input = [],
deferred = q.defer();

options.input.on('data', function(chunk) {
input.push(chunk);
});

options.input.once('end', function() {
finish(input.join(''));
});

options.input.resume();

function finish(source) {
var out = bem_xjst.generate(source, options);

options.output.write(out);

if (options.output === process.stdout) {
options.output.write('\n');
} else {
options.output.end();
}

deferred.resolve();
}

return deferred.promise;
})
.run();
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
"esprima": "~1.0.2",
"ometajs": "~3.2.2",
"uglify-js": "~2.3.2",
"xjst": "~0.7.2"
"xjst": "~0.7.2",
"coa": "~0.3.9",
"q": "~0.9.3"
},
"devDependencies": {
"mocha": "~1.9.0",
Expand Down

0 comments on commit 0210d09

Please sign in to comment.