bin/masticate in masticate-0.1.5 vs bin/masticate in masticate-0.2
- old
+ new
@@ -1,119 +1,8 @@
#!/usr/bin/env ruby
require_relative "../lib/masticate"
-require "optparse"
-command = ARGV.shift
+masticator = Masticate::MyOptionParser.new
+command, options, filenames = masticator.parse
-options = {}
-OptionParser.new do |opts|
- opts.banner = "Usage: example.rb [options]"
-
- opts.on("--format FORMAT", String, "Specify format") do |v|
- options[:format] = v
- end
-
- opts.on("--delim DELIMITER", String, "Specify field delimiter (character or TAB; default is ',')") do |v|
- options[:col_sep] = v
- options[:col_sep] = "\t" if options[:col_sep] == "TAB"
- end
-
- opts.on("--quote QUOTE-CHAR", String, "Specify character used for quoting fields (optional; default is no quoting)") do |char|
- options[:quote_char] = char
- end
-
- opts.on("--stats", "(for *sniff*) collect & display input stats") do
- options[:stats] = true
- end
-
- opts.on("--fields LIST", Array, "Specify fields to select") do |list|
- options[:fields] = list
- end
-
- opts.on("--field FIELD", String, "Specify field to convert") do |f|
- options[:field] = f
- end
-
- opts.on("--snip DIRECTIVE", String, "Specify header fields to snip: first N, or by name") do |f|
- options[:snip] = f.to_i
- end
-
- opts.on("--from REGEXP", String, "Regular expression for gsub conversion") do |s|
- options[:from] = s
- end
-
- opts.on("--to STRING", String, "Result string for gsub conversion") do |s|
- options[:to] = s
- end
-
- opts.on("--inlined", "(for *mend* only) Source file has headers inlined on each line") do |b|
- options[:inlined] = true
- end
-
- opts.on("--dejunk", "(for *mend* only) Expunge junk lines from source") do |b|
- options[:dejunk] = true
- end
-
- opts.on("--by FIELD", String, "(for *maxrows* only) Field to group by") do |f|
- options[:by] = f
- end
-
- opts.on("--max FIELD", String, "(for *maxrows* only) Field to find max value for") do |f|
- options[:max] = f
- end
-end.parse!
-
-filename = ARGV.shift # use stdin if no filename provided
-
-def logmessage(command, options, results)
- $stderr.puts <<-EOT
-* masticate #{command} (#{options.keys.join(', ')})
- Lines in input: #{results[:input_count]}
- Lines in output: #{results[:output_count]}
-EOT
- if results[:field_counts]
- $stderr.puts " Field counts: #{results[:field_counts].inspect}"
- end
-end
-
-case command
-when 'sniff'
- results = Masticate.sniff(filename, options)
- col_sep = results[:col_sep]
- col_sep = "TAB" if col_sep == "\t"
- quote_char = results[:quote_char] || "NONE"
- $stderr.puts <<-EOT
-Processing complete.
- Input delimiter: #{col_sep}
- Quote char: #{quote_char}
- Field counts: #{results[:field_counts].inspect}
- Headers: #{results[:headers].join(',')}
-EOT
-
-when 'mend'
- results = Masticate.mend(filename, options)
- logmessage(command, options, results)
-
-when 'csvify'
- results = Masticate.csvify(filename, options)
- logmessage(command, options, results)
-
-when 'pluck'
- results = Masticate.pluck(filename, options)
- logmessage(command, options, results)
-
-when 'datify'
- results = Masticate.datify(filename, options)
- logmessage(command, options, results)
-
-when 'gsub'
- results = Masticate.gsub(filename, options)
- logmessage(command, options, results)
-
-when 'maxrows'
- results = Masticate.maxrows(filename, options)
- logmessage(command, options, results)
-
-else
- raise "unknown command #{command}"
-end
+masticator.execute(command, options, filenames)