class ChromeDiff::CLI

Public Class Methods

parse_argv(argv) click to toggle source
# File lib/chrome_diff/cli.rb, line 23
def self.parse_argv(argv)
  opts = {}
  parser = OptionParser.new
  parser.on("-f [FROM_URL]", "--from-url", "From url") {|v| opts[:from_url] = v }
  parser.on("-t [TO_URL]", "--to-url", "To url") {|v| opts[:to_url] = v }
  parser.on("-o [OUTPUT]", "--output", "Output file") {|v| opts[:output] = v }
  parser.on("-w [WIDTH]", "--width", "Window width (default 800)") {|v| opts[:width] = v.to_i }
  parser.on("-h [HEIGHT]", "--height", "Window height (default 600)") {|v| opts[:height] = v.to_i }
  parser.on("-q", "--quiet", "Quiet mode") {|v| opts[:quiet] = v }
  parser.on("--threshold [THRESHOLD]", "Threshold percent (default 1%)") {|v| opts[:threshold] = v.to_f }
  parser.on("--debug", "Debug mode (default false)") {|v| opts[:debug] = !!v }
  parser.on("--no-output", "Don't output diff file") {|v| opts[:output] = v }
  parser.on("--full-screenshot", "Capture full screenshot") {|v| opts[:full_screenshot] = !!v }
  parser.parse(argv)

  required(opts, :from_url)
  required(opts, :to_url)

  opts
rescue ArgumentError => e
  STDERR.puts(e.message)
  puts(parser.help)
  exit 1
end
required(opts, key) click to toggle source
# File lib/chrome_diff/cli.rb, line 48
def self.required(opts, key)
  arg_key = "--#{key.to_s.gsub("_", "-")}"
  opts[key] or raise ArgumentError, "#{arg_key} is required"
end
run(argv) click to toggle source
# File lib/chrome_diff/cli.rb, line 5
def self.run(argv)
  opts = ChromeDiff::DEFAULT_OPTIONS.merge(parse_argv(argv.dup))
  result = ChromeDiff.run(**opts)
  output = opts[:output]

  unless opts[:quiet]
    if result.success?
      message = "There is no difference (%.2f%%)" % result.diff_percent
    else
      message = "There are some diffefences (%.2f%%)" % result.diff_percent
    end
    message += ": #{output}" if output
    puts message
  end

  result
end