lib/thor/actions/directory.rb in josevalim-thor-0.10.4 vs lib/thor/actions/directory.rb in josevalim-thor-0.10.5
- old
+ new
@@ -30,23 +30,33 @@
# blog.rb
#
# ==== Parameters
# source<String>:: the relative path to the source root
# destination<String>:: the relative path to the destination root
+ # recursive<Boolean>:: if the directory must be copied recursively, true by default
# log_status<Boolean>:: if false, does not log the status. True by default.
#
# ==== Examples
#
# directory "doc"
+ # directory "doc", "docs", false
#
- def directory(source, destination=nil, log_status=true)
- action Directory.new(self, source, destination || source, log_status)
+ def directory(source, destination=nil, recursive=true, log_status=true)
+ action Directory.new(self, source, destination || source, recursive, log_status)
end
class Directory < Templater #:nodoc:
+ attr_reader :recursive
+ def initialize(base, source, destination=nil, recursive=true, log_status=true)
+ @recursive = recursive
+ super(base, source, destination, log_status)
+ end
+
def invoke!
- Dir[File.join(source, '**', '*')].each do |file_source|
+ lookup = recursive ? File.join(source, '**', '*') : File.join(source, '*')
+
+ Dir[lookup].each do |file_source|
file_destination = File.join(given_destination, file_source.gsub(source, '.'))
if File.directory?(file_source)
base.empty_directory(file_destination, @log_status)
elsif file_source !~ /\.empty_directory$/