18a347eb9bba2113cadc381d364c1018deb974a19Christian Ihle#!/usr/bin/env ruby 28a347eb9bba2113cadc381d364c1018deb974a19Christian Ihle# 32cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie# This script can be used to regenerate sequential resource ids when the 42cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie# R.java file is modified in the src/test/resources/res folder. 52cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie# 62cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie# Note: this script does *NOT* generate resource ids that are consistent 72cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie# with the Android aapt tool. This script will likely be removed at some 82cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie# near point in the future and replaced by something that invokes aapt 92cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie# directly. 102cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie 112cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael HoisieGIT_ROOT = `git rev-parse --show-toplevel`.chomp 122cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael HoisieSTART = 0x7f000000 132cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael HoisieINCR = 0x10000 148a347eb9bba2113cadc381d364c1018deb974a19Christian Ihle 152cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisiepath_to_r = File.join(GIT_ROOT, "robolectric/src/test/java/org/robolectric/R.java") 168a347eb9bba2113cadc381d364c1018deb974a19Christian Ihleif path_to_r =~ /^\/path\/to/ 178a347eb9bba2113cadc381d364c1018deb974a19Christian Ihle raise "please change the path to this file!" 188a347eb9bba2113cadc381d364c1018deb974a19Christian Ihleelse 198a347eb9bba2113cadc381d364c1018deb974a19Christian Ihle original_contents = File.read(path_to_r) 202cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie num_classes = 0 212cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie x = START 228a347eb9bba2113cadc381d364c1018deb974a19Christian Ihle new_contents = original_contents.gsub(/class|0x[0-9a-fA-F]+;/) do |match| 238a347eb9bba2113cadc381d364c1018deb974a19Christian Ihle if match == "class" 242cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie x = START + INCR * num_classes 252cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie num_classes += 1 268a347eb9bba2113cadc381d364c1018deb974a19Christian Ihle "class" 278a347eb9bba2113cadc381d364c1018deb974a19Christian Ihle else 282cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie val = "0x#{"%x"%x};" 292cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie x += 1 302cfb0fd1fc07a3653f938488b3a873df15fbeb16Michael Hoisie val 318a347eb9bba2113cadc381d364c1018deb974a19Christian Ihle end 328a347eb9bba2113cadc381d364c1018deb974a19Christian Ihle end 338a347eb9bba2113cadc381d364c1018deb974a19Christian Ihle File.open(path_to_r, "w") { |f| f << new_contents } 348a347eb9bba2113cadc381d364c1018deb974a19Christian Ihleend 35