Class: Thor::Actions::Directory

Inherits:
Templater show all
Defined in:
lib/thor/actions/directory.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Attributes inherited from Templater

#base, #destination, #given_destination, #relative_destination, #source

Instance Method Summary collapse

Methods inherited from Templater

#exists?, #identical?, #revoke!

Constructor Details

#initialize(base, source, destination = nil, recursive = true, log_status = true) ⇒ Directory

Returns a new instance of Directory.



50
51
52
53
# File 'lib/thor/actions/directory.rb', line 50

def initialize(base, source, destination=nil, recursive=true, log_status=true)
  @recursive = recursive
  super(base, source, destination, log_status)
end

Instance Attribute Details

#recursiveObject (readonly)

Returns the value of attribute recursive.



48
49
50
# File 'lib/thor/actions/directory.rb', line 48

def recursive
  @recursive
end

Instance Method Details

#invoke!Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/thor/actions/directory.rb', line 55

def invoke!
  base.empty_directory given_destination
  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) if recursive
    elsif file_source !~ /\.empty_directory$/
      if file_source =~ /\.tt$/
        base.template(file_source, file_destination[0..-4], @log_status)
      else
        base.copy_file(file_source, file_destination, @log_status)
      end
    end
  end
end