class Thor::Tree::Directory

Attributes

path[R]

Public Class Methods

===(args) click to toggle source
# File lib/thor/tree/directory.rb, line 9
def ===(args)
  args.is_a?(Hash) &&
  (args.empty? || args.keys.all? { |key| key.start_with?(':') == false })
end
new(args, options = {}, config = {}) click to toggle source
Calls superclass method
# File lib/thor/tree/directory.rb, line 15
def initialize(args, options = {}, config = {})
  @path = Path.new args.first.to_s
  super
  self.destination_root = Writer.root_path
end

Public Instance Methods

add(path, args) click to toggle source
# File lib/thor/tree/directory.rb, line 22
def add(path, args)
  case args
  when File
    add_file path, args
  when Directory
    add_subdirectory path, args
  end
end
write() click to toggle source
# File lib/thor/tree/directory.rb, line 31
def write
  empty_directory @path
  subdirectories.each { |dir| dir.write }
  files.each { |file| file.write }
end

Private Instance Methods

add_file(file_path, options) click to toggle source
# File lib/thor/tree/directory.rb, line 40
def add_file(file_path, options)
  files << File.new([@path / file_path, options])
end
add_subdirectory(dir_path, contents) click to toggle source
# File lib/thor/tree/directory.rb, line 44
def add_subdirectory(dir_path, contents)
  path = @path / dir_path

  subdirectories.find { |dir| dir.path == path } || Tree::Directory.new([path]).tap do |dir|
    subdirectories << dir
  end.tap do |dir|
    contents.each do |content_path, options|
      dir.add content_path, options
    end
  end
end
files() click to toggle source
# File lib/thor/tree/directory.rb, line 56
def files; @files ||= []; end
subdirectories() click to toggle source
# File lib/thor/tree/directory.rb, line 57
def subdirectories; @subdirectories ||= []; end