#!/usr/bin/ruby

require 'json'

class Blame
  def initialize(pkg, *deps)
    @pkg = pkg
    @pkg_updated = false
    @deps = deps
  end
  def data
    @data ||= []
  end
  def <<(line)
    dep, version = line.split
    if dep == @pkg
      @pkg_updated = true
    else
      if @deps.empty? || @deps.include?(dep)
        data << line
      end
    end
    self
  end

  def to_json
    if @pkg_updated
      '[]'
    else
      data.to_json
    end
  end
end

if ARGV.length < 2
  puts "usage: blame DIFF pkg [pkg1 pkg2 ... pkgN]"
  exit 1
end

diff = ARGV.shift
pkg = ARGV.shift
blame = Blame.new(pkg, *ARGV)

File.open(diff).each_line do |line|
  if line =~ /^\+/ && line !~ /^\+\+\+/
    blame << line.strip.gsub(/\+/, '')
  end
end

puts blame.to_json
