class ApipieDiff::MainCmd

Public Instance Methods

execute() click to toggle source
# File lib/apipie_diff/main_cmd.rb, line 15
def execute
  right_resources = normalize_docs(left_file_path, load_doc(left_file_path))
  left_resources = normalize_docs(right_file_path, load_doc(right_file_path))

  actions_stats = print_diff(left_resources, right_resources)
  print_stats(left_resources, right_resources, actions_stats) if stats?
  return 0
end

Private Instance Methods

colorize(str, color_name) click to toggle source
# File lib/apipie_diff/main_cmd.rb, line 139
def colorize(str, color_name)
  if disable_colors?
    str
  else
    str.colorize(color_name)
  end
end
diff_method(left_method, right_method) click to toggle source
# File lib/apipie_diff/main_cmd.rb, line 121
def diff_method(left_method, right_method)
  left_dump = left_method.nil? ? '' : YAML.dump(left_method)
  right_dump = right_method.nil? ? '' : YAML.dump(right_method)
  Diffy::Diff.new(left_dump, right_dump).to_s
end
heading(prefix, name, note = nil) click to toggle source
# File lib/apipie_diff/main_cmd.rb, line 117
def heading(prefix, name, note = nil)
  puts "#{prefix} #{name}" + (note.nil? ? '' : " (#{note})")
end
load_doc(file) click to toggle source
# File lib/apipie_diff/main_cmd.rb, line 103
def load_doc(file)
  JSON.load(File.read(file))
rescue JSON::ParserError => e
  signal_usage_error("#{file} doesn't seem to be valid json file:\n#{e}")
rescue Errno::ENOENT => e
  signal_usage_error("Couldn't read #{file}:\n#{e}")
end
normalize_docs(file, docs) click to toggle source
# File lib/apipie_diff/main_cmd.rb, line 111
def normalize_docs(file, docs)
  ApipieDiff::Normalizer.new.normalize(docs)
rescue RuntimeError => e
  signal_usage_error("Couldn't process #{file}:\n#{e}")
end
print_diff(left_resources, right_resources) click to toggle source
print_stats(left_resources, right_resources, actions_stats) click to toggle source
puts_diff(diff, indent = '') click to toggle source
# File lib/apipie_diff/main_cmd.rb, line 127
def puts_diff(diff, indent = '')
  diff.split("\n").each do |line|
    if line[0] == '+'
      puts indent + colorize(line, :green)
    elsif line[0] == '-'
      puts indent + colorize(line, :red)
    else
      puts indent + line
    end
  end
end