Home | History | Annotate | Download | only in scripts
      1 #!/usr/bin/env ruby
      2 #
      3 # This script can be used to regenerate sequential resource ids when the
      4 # R.java file is modified in the src/test/resources/res folder.
      5 #
      6 # Note: this script does *NOT* generate resource ids that are consistent
      7 # with the Android aapt tool. This script will likely be removed at some
      8 # near point in the future and replaced by something that invokes aapt
      9 # directly.
     10 
     11 GIT_ROOT = `git rev-parse --show-toplevel`.chomp
     12 START = 0x7f000000
     13 INCR = 0x10000
     14 
     15 path_to_r = File.join(GIT_ROOT, "robolectric/src/test/java/org/robolectric/R.java")
     16 if path_to_r =~ /^\/path\/to/
     17   raise "please change the path to this file!"
     18 else
     19   original_contents = File.read(path_to_r)
     20   num_classes = 0
     21   x = START
     22   new_contents = original_contents.gsub(/class|0x[0-9a-fA-F]+;/) do |match|
     23     if match == "class"
     24       x = START + INCR * num_classes
     25       num_classes += 1
     26       "class"
     27     else
     28       val = "0x#{"%x"%x};"
     29       x += 1
     30       val
     31     end
     32   end
     33   File.open(path_to_r, "w") { |f| f << new_contents }
     34 end
     35