euler
Version:
a commandline tool for greasing up your rusty programming and math skills through Project Euler challenges.
60 lines (49 loc) • 2.78 kB
JavaScript
var program = require('commander');
var helpers = require('./utils/helpers');
var handler = require('./utils/handler');
var description =
"EuleyJS is a commandline tool for greasing up your rusty programming and math skills \
through Project Euler challenges. Use the euler command line interface to \
generate a prompt in JavaScript or CoffeeScript and \
verify your answers when you're done.";
description = "\n" + helpers.wordWrap(description, 80, '\n');
program
.version('0.0.5', '--version')
.option('-s, --solve [value]', 'Print solution', parseInt)
.option('-g, --generate [value]', 'Generate file with problem prompt', parseInt)
.option('-c, --coffee [value]', 'Generate coffeescript file with problem prompt', parseInt)
.option('-p, --preview [value]', 'Preview problem prompt', parseInt)
.option('-v, --verify [value]', 'Verify solution to problem', parseInt)
.option('-V --verify-all' , 'Verify all solutions in cwd' )
.parse(process.argv);
var router = function(program){
if ( program.solve || program.solve === 0) handler.problemNumberHandler(handler.solveHandler, handler.noFilesFailure, program.solve );
else if ( program.generate || program.generate === 0){
if ( program.coffee || program.coffee === 0){
if (typeof program.coffee === 'number') handler.problemNumberHandler(handler.generateHandler, handler.noFilesFailure, program.coffee, 'coffee', true);
else handler.problemNumberHandler(handler.generateHandler, handler.noFilesFailure, program.generate, 'coffee', true);
} else {
handler.problemNumberHandler(handler.generateHandler, handler.noFilesFailure, program.generate, 'js', true);
}
}
else if ( program.preview || program.preview === 0) handler.problemNumberHandler(handler.previewHandler, handler.noFilesFailure, program.preview);
else if ( program.verify || program.verify === 0){
if ( program.coffee || program.coffee === 0){
if (typeof program.verify === 'number') handler.problemNumberHandler(handler.verifyHandler, handler.noFilesFailure, program.verify, 'coffee');
else handler.problemNumberHandler(handler.verifyHandler, handler.noFilesFailure, program.coffee, 'coffee');
} else {
handler.problemNumberHandler(handler.verifyHandler, handler.noFilesFailure, program.verify, 'js');
}
}
else if ( program.verifyAll || program.verifyAll === 0){
if ( program.coffee || program.coffee === 0) {
handler.problemNumberHandler(handler.verifyAllHandler, handler.noFilesFailure, program.verifyAll, 'coffee');
}
else handler.problemNumberHandler(handler.verifyAllHandler, handler.noFilesFailure, program.verifyAll, 'js');
}
else {
console.log(description);
program.outputHelp();
}
};
router(program);