#!/usr/bin/env 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
