Class | RuCodeGen::CodegenInitiator |
In: |
lib/rucodegen/generation_initiator.rb
|
Parent: | Object |
Конструктор.
file имя файла с описанием кодогенератора.
# File lib/rucodegen/generation_initiator.rb, line 13 def initialize( file ) @file = file @hash_file_name = File.join( File.dirname( file ), "." + File.basename( file ) + ".md5" ) @original_hash = Digest::MD5.new.update( File.read( @file ) ) end
Очистить результаты кодогенерации.
# File lib/rucodegen/generation_initiator.rb, line 51 def clean all_files = Generators.all_files.clone all_files << @hash_file_name all_files.each do |f| File.delete f if FileTest.exists?( f ) end end
Инициировать кодогенерацию, если это необходимо.
Аргументы
# File lib/rucodegen/generation_initiator.rb, line 26 def initiate( force_rebuild = false ) all_files = Generators.all_files if !all_files.empty? if force_rebuild || is_hash_changed # Требуется перегенерация всех файлов. all_files.each do |file| regenerate_file( file, Generators.for_file( file ) ) end update_hash_file else # Описание не изменилось, поэтому перегенерировать нужно только # те файлы, которые отсутствуют. all_files.each do |file| regenerate_file( file, Generators.for_file( file ) ) \ unless FileTest.exists?( file ) end end else # Хеш больше не нужен. File.delete @hash_file_name if FileTest.exists?( @hash_file_name ) end end