ls-lint
Version:
Lint your LiveScript code
100 lines (99 loc) • 3.18 kB
JavaScript
(function(){
var ref$, each, empty, map, lines, unlines, myPackage, loadConfig, readDefaultConfig, lintFiles, reportTotal, reportError, print, println, returnP, bindP, catchP, promisize, parse, action, lint, getConfig, printVersion, printHelp, printConfig, optionator;
ref$ = require('prelude-ls'), each = ref$.each, empty = ref$.empty, map = ref$.map, lines = ref$.lines, unlines = ref$.unlines;
myPackage = require('../package.json');
loadConfig = require('./load-config');
readDefaultConfig = require('./default-config').readDefaultConfig;
lintFiles = require('./lint-files');
reportTotal = require('./reporters/report-total');
reportError = require('./reporters/report-error');
ref$ = require('./reporters/report-utils'), print = ref$.print, println = ref$.println;
ref$ = require('./lib/monad-p'), returnP = ref$.returnP, bindP = ref$.bindP, catchP = ref$.catchP, promisize = ref$.promisize;
module.exports = function(argv){
return catchP(bindP(bindP(bindP(returnP(argv), parse), action), function(){
return process.exit(0);
}), function(it){
reportError(it);
return process.exit(1);
});
};
parse = promisize(function(done, _, argv){
return done(optionator.parseArgv(argv));
});
action = function(options){
switch (false) {
case !options.version:
return printVersion();
case !options.help:
return printHelp();
case !options.printConfig:
return printConfig(options.config);
case !empty(options._):
return printHelp(1);
default:
return lint(options._, options.config);
}
};
lint = function(files, configFile){
return bindP(bindP(getConfig(configFile), function(config){
return lintFiles(files, {
config: config
});
}), reportTotal);
};
getConfig = promisize(function(done, _, file){
return done(loadConfig(file));
});
printVersion = function(){
println(myPackage.version + "");
return returnP();
};
printHelp = function(){
println(
unlines(
map(function(it){
return " " + it;
})(
lines(
optionator.generateHelp()))));
return returnP();
};
printConfig = function(configFile){
if (configFile) {
return bindP(getConfig(configFile), function(){
throw Error('unimplemented');
});
} else {
print(readDefaultConfig());
return returnP();
}
};
optionator = require('optionator')({
prepend: '\nlint livescript source files\n\nUsage: ls-lint [options]... [files]...',
append: "Version " + myPackage.version + "\n",
options: [
{
heading: 'Options'
}, {
option: 'help',
alias: 'h',
type: 'Boolean',
description: 'output usage information'
}, {
option: 'version',
alias: 'v',
type: 'Boolean',
description: 'output the version number'
}, {
option: 'config',
alias: 'c',
type: 'file::String',
description: 'use specified configuration file'
}, {
option: 'print-config',
type: 'Boolean',
description: 'print the configuration'
}
]
});
}).call(this);