webengine/osswebengine/WebKitTools/Scripts/clean-header-guards
changeset 0 dd21522fd290
equal deleted inserted replaced
-1:000000000000 0:dd21522fd290
       
     1 #!/usr/bin/ruby
       
     2 
       
     3 require 'find'
       
     4 require 'optparse'
       
     5 
       
     6 options = {}
       
     7 OptionParser.new do |opts|
       
     8   opts.banner = "Usage: clean-header-guards [options]"
       
     9   
       
    10   opts.on("--prefix [PREFIX]", "Append a header prefix to all guards") do |prefix|
       
    11     options[:prefix] = prefix
       
    12   end
       
    13 end.parse!
       
    14 
       
    15 IgnoredFilenamePatterns = [
       
    16   # ignore headers which are known not to have guard
       
    17   /WebCorePrefix/, 
       
    18   /ForwardingHeaders/,
       
    19   %r|bindings/objc|, 
       
    20   /vcproj/, # anything inside a vcproj is in the windows wasteland
       
    21   
       
    22   # we don't own any of these headers
       
    23   %r|icu/unicode|,
       
    24   %r|platform/graphics/cairo|,
       
    25   %r|platform/image-decoders|,
       
    26   
       
    27   /config.h/ # changing this one sounds scary
       
    28 ].freeze
       
    29 
       
    30 IgnoreFileNamesPattern = Regexp.union(*IgnoredFilenamePatterns).freeze
       
    31 
       
    32 Find::find(".") do |filename|
       
    33   next unless filename =~ /\.h$/
       
    34   next if filename.match(IgnoreFileNamesPattern)
       
    35   
       
    36   File.open(filename, "r+") do |file|
       
    37     contents = file.read
       
    38     match_results = contents.match(/#ifndef (\S+)\n#define \1/s)
       
    39     if match_results
       
    40       current_guard = match_results[1]
       
    41       new_guard = File.basename(filename).sub('.', '_')
       
    42       new_guard = options[:prefix] + '_' + new_guard  if options[:prefix]
       
    43       contents.gsub!(/#{current_guard}\b/, new_guard)
       
    44     else
       
    45       puts "Ignoring #{filename}, failed to find existing header guards."
       
    46     end
       
    47     tmp_filename = filename + ".tmp"
       
    48     File.open(tmp_filename, "w+") do |new_file|
       
    49       new_file.write(contents)
       
    50     end
       
    51     File.rename tmp_filename, filename
       
    52   end
       
    53 end