diff --git a/bin/sqlint b/bin/sqlint index db7069feb458387dcb450e00fcad751c5b093ab6..0a84a3d0b77060411d040f8bcf884f069e5f998f 100755 --- a/bin/sqlint +++ b/bin/sqlint @@ -3,17 +3,31 @@ $LOAD_PATH.unshift(File.dirname(File.realpath(__FILE__)) + '/../lib') require 'pg_query' require 'sqlint' +require 'optparse' LIMIT = 1000 -if ARGV.include?("--version") - puts SQLint::VERSION - exit 0 +options = { limit: 1000 } +optparse = OptionParser.new do |opts| + opts.banner = "Usage: #{File.basename($0)} [options] file.sql ..." + opts.separator "" + opts.separator "Options:" + opts.on("--limit=N", Integer, "Limit checking to N errors") do |n| + options[:limit] = n + end + opts.on_tail("-h", "--help", "Print this help") do + puts opts + exit 0 + end + opts.on_tail("-v", "--version", "Display the version") do + puts SQLint::VERSION + exit 0 + end end - -if ARGV.empty? || ARGV.include?("--help") || ARGV.include?("-h") - puts "Usage: sqlint file.sql ..." - exit 0 +optparse.parse!(ARGV) +if ARGV.empty? + puts optparse + exit 1 end ERROR_TYPES = {error: "ERROR", warning: "WARNING"} @@ -29,7 +43,7 @@ end saw_errors = false ARGV.each do |filename| File.open(filename, 'r') do |file| - results = SQLint::Linter.new(filename, file).run.first(LIMIT) + results = SQLint::Linter.new(filename, file).run.first(options[:limit]) results.each do |lint| message_lines = lint.message.split("\n") puts [