# regenerates all parser generated files in a source tree puts "Deleting all *_parser.h files" Dir.glob(File.join("**", "*_parser.{h,.h??????,xsd,xsd??????}")) do |filename| puts "Deleting #{filename}" File.unlink(filename) end puts "Looking for .PSC files - deleting any generated .cpp or .h files!" Dir.glob(File.join("**", "*.psc")) do |filename| # check for .cpp and .h files - see if they are 1) writable and 2) appear to be generated baseName = filename.sub(/\.psc$/, "") Dir.glob(baseName + ".{cpp,cpp??????,h,h??????}") do |generatedName| if File.exists?(generatedName) and File.writable?(generatedName) then # does it look generated? headerCheckOneResult = false headerCheckTwoResult = false headerCheckThreeResult = false File.open(generatedName) do |f| f.each do |line| headerCheckOneResult = headerCheckOneResult || (line =~ /This file was generated by parCodeGen/) headerCheckTwoResult = headerCheckTwoResult || (line =~ /CHANGES WILL BE OVERWRITTEN/) headerCheckThreeResult = headerCheckThreeResult || (line =~ /DO NOT COMMIT/) end end if headerCheckOneResult && headerCheckTwoResult && headerCheckThreeResult then puts "Deleting autogenerated file #{generatedName}" File.unlink(generatedName) end end end end