def parse_file path, matcher
      File.open(path) do |f|
        f.each do |line|
          if m = matcher.call(line)
            return m
          end
        end
      end

      raise "#{path}: found no matching lines."
    end
def parse_file path, matcher
      File.open(path) do |f|
        f.each do |line|
          if m = matcher.call(line)
            return m
          end
        end
      end

      raise "#{path}: found no matching lines."
    end
Parse the specified file with the provided matcher.

 The first returned match will be used as the version.