#!/usr/bin/ruby

require 'find'
require 'optparse'

options = {}
OptionParser.new do |opts|
  opts.banner = "Usage: clean-header-guards [options]"

  opts.on("--prefix [PREFIX]", "Append a header prefix to all guards") do |prefix|
    options[:prefix] = prefix
  end
end.parse!

IgnoredFilenamePatterns = [
  # ignore headers which are known not to have guard
  /WebCorePrefix/,
  /ForwardingHeaders/,
  %r|bindings/objc|,
  /vcproj/, # anything inside a vcproj is in the windows wasteland

  # we don't own any of these headers
  %r|icu/unicode|,
  %r|platform/graphics/cairo|,
  %r|platform/image-decoders|,

  /config.h/ # changing this one sounds scary
].freeze

IgnoreFileNamesPattern = Regexp.union(*IgnoredFilenamePatterns).freeze

Find::find(".") do |filename|
  next unless filename =~ /\.h$/
  next if filename.match(IgnoreFileNamesPattern)

  File.open(filename, "r+") do |file|
    contents = file.read
    match_results = contents.match(/#ifndef (\S+)\n#define \1/s)
    if match_results
      current_guard = match_results[1]
      new_guard = File.basename(filename).sub('.', '_')
      new_guard = options[:prefix] + '_' + new_guard  if options[:prefix]
      contents.gsub!(/#{current_guard}\b/, new_guard)
    else
      puts "Ignoring #{filename}, failed to find existing header guards."
    end
    tmp_filename = filename + ".tmp"
    File.open(tmp_filename, "w+") do |new_file|
      new_file.write(contents)
    end
    File.rename tmp_filename, filename
  end
end
