lib/reality/generators/rake_integration.rb in reality-generators-1.22.0 vs lib/reality/generators/rake_integration.rb in reality-generators-1.23.0
- old
+ new
@@ -32,10 +32,12 @@
def define_generate_task(generator_keys, options = {}, &block)
element_key = options[:"#{root_element_type}_key"]
target_dir = options[:target_dir]
buildr_project = options[:buildr_project]
clean_generated_files = options[:clean_generated_files].nil? ? true : !!options[:clean_generated_files]
+ keep_file_patterns = options[:keep_file_patterns] || []
+ keep_file_names = options[:keep_file_names] || []
if buildr_project.nil? && ::Buildr.application.current_scope.size > 0
buildr_project = ::Buildr.project(::Buildr.application.current_scope.join(':')) rescue nil
end
@@ -64,19 +66,32 @@
if clean_generated_files && buildr_project
buildr_project.clean { rm_rf target_dir }
end
- self.const_get(:GenerateTask).new(element_key, build_key, generator_keys, target_dir, buildr_project, clean_generated_files, &block)
+ self.const_get(:GenerateTask).new(element_key, build_key, generator_keys, target_dir, buildr_project, clean_generated_files) do |g|
+ g.keep_filter = Proc.new do |file|
+ filename = file.to_s
+ result = keep_file_names.include?(filename)
+ keep_file_patterns.each do |keep_file_pattern|
+ result = true if keep_file_pattern =~ filename
+ end
+ result
+ end if !keep_file_patterns.empty? || !keep_file_names.empty?
+ block.call(g)
+ end
+
+ target_dir
end
end
# This is the base class used to define tasks that generate artifacts using templates
class BaseGenerateTask
attr_accessor :description
attr_accessor :namespace_key
attr_accessor :filter
+ attr_accessor :keep_filter
attr_writer :verbose
attr_writer :mark_as_generated_in_ide
attr_reader :root_element_key
attr_reader :key
@@ -89,10 +104,11 @@
@root_element_key = root_element_key
@key = key
@generator_keys = generator_keys
@namespace_key = self.default_namespace_key
@filter = nil
+ @keep_filter = nil
# Turn on verbose messages if buildr is turned on tracing
@verbose = trace?
@mark_as_generated_in_ide = true
@clean_generated_files = clean_generated_files
@target_dir = target_dir
@@ -180,10 +196,10 @@
self.log_container.const_get(:Logger),
Reality::Generators::Logger,
Reality::Facets::Logger) do
self.log_container.info "Generator started: Generating #{self.generator_keys.inspect}"
self.template_set_container.generator.
- generate(self.root_element_type, self.root_element, self.target_dir, @templates, self.filter)
+ generate(self.root_element_type, self.root_element, self.target_dir, @templates, self.filter, self.keep_filter)
end
rescue Reality::Generators::GeneratorError => e
puts e.message
if e.cause
puts e.cause.class.name.to_s