Path: blob/trunk/rake_tasks/selenium_rake/crazy_fun.rb
2884 views
# frozen_string_literal: true12module SeleniumRake3class CrazyFun4def initialize5@mappings = {}6add_mapping('java_binary')7add_mapping('java_library')8add_mapping('java_test')9end1011def add_mapping(type_name, handler = detonating_handler)12@mappings[type_name] = [] unless @mappings.key?(type_name)1314@mappings[type_name].push handler15end1617def prebuilt_roots18@prebuilt_roots ||= []19end2021def find_prebuilt(of)22prebuilt_roots.each do |root|23root_parts = root.split('/')24src = generate_src(of, root_parts)2526return src if File.exist? src27end2829nil30end3132def create_tasks(files)33files.each do |f|34puts "Parsing #{f}" if $DEBUG35outputs = BuildFile.new.parse_file(f)36outputs.each do |type|37crash_if_no_mapping_key(type)3839mappings = @mappings[type.name]40mappings.each do |mapping|41mapping.handle(self, File.dirname(f), type.args)42end43end44end45end4647private4849def detonating_handler50SeleniumRake::DetonatingHandler.new51end5253def generate_src(of, root_parts)54if root_parts.first == of_parts(of).first55of_parts(of)[0] = root56of_parts(of).join('/')57else58"#{root}/#{of}"59end60end6162def of_parts(of)63@of_parts ||=64if of =~ %r{build([/\\])}65of.split(Regexp.last_match(1))[1..-1]66else67of.split(Platform.dir_separator)68end69end7071def crash_if_no_mapping_key(type)72raise "No mapping for type #{type.name}" unless @mappings.key?(type.name)73end74end75end767778