module CapCap

Constants

VERSION

Public Class Methods

run() click to toggle source
# File lib/cap_cap.rb, line 25
def CapCap.run
  opts = {headers: []}
  opt = OptionParser.new
  opt.banner = "Usage: capcap [options] <url> [<url>...]"
  opt.on("-o", "--output=VAL", "Output capturing image to specific path. If ommited, output to tempfile.") {|v| opts[:output] = v }
  opt.on("-s", "--selector=VAL", "Capture only element specified by css selector. If ommited, capture entire page.") {|v| opts[:selector] = v }
  opt.on("-H", "--header=VAL", "Add extra HTTP-header to use when getting a web page.") {|v| opts[:headers] << v }
  opt.on("--size=VAL", "Specify rendering page size. If ommited, it may be default size. e.g., `--size 320x480`") {|v| opts[:size] = v.split(?x).map(&:to_i) }
  opt.on("--open", "If specified, invoke `open` command to preview captured image.") {|v| opts[:invoke_open] = v }
  opt.parse! ARGV

  main = Main.new
  main.resize *opts[:size] unless opts[:size].nil?
  if opts[:headers].size > 0
    main.add_headers Hash[opts[:headers].map {|v| v.split(?:).map{|kv| kv.strip } }]
  end

  if ARGV.empty?
    puts opt.help
    exit
  elsif ARGV.size == 1
    output = main.capture ARGV.first, opts[:output], selector: opts[:selector]
    main.invoke_open output if opts[:invoke_open]
  else
    outputs = ARGV.map {|url| main.capture url, selector: opts[:selector] }
    output = main.capture_combined outputs, opts[:output]
    main.invoke_open output if opts[:invoke_open]
  end
end