class Copypasta::Contents

Attributes

entries[R]
force_create[RW]
target_directory[R]

Public Class Methods

from_tree(root) click to toggle source
# File lib/copypasta/contents.rb, line 33
def self.from_tree(root)
  require "copypasta/contents_dsl"

  raise "#{root} doesn't exist." unless Dir.exist?(root)
  root = File.expand_path(root)

  items = []

  Dir["#{root}/**/_contents.rb"].each do |f|
    f = File.expand_path(f)
    content_dir = File.dirname(f)
    target_directory = content_dir.sub(root, "").sub(%r!^/!, "")

    contents = Copypasta::Contents.new(target_directory)

    dsl = Copypasta::ContentsDSL.new(contents, content_dir)
    dsl.instance_eval File.read(f), f

    items << contents unless contents.entries.empty?
  end

  items
end
new(target_directory) click to toggle source
# File lib/copypasta/contents.rb, line 11
def initialize(target_directory)
  @target_directory = target_directory.dup.freeze
  @force_create = false
  @entries = []
end

Public Instance Methods

apply(root, parameters) click to toggle source
# File lib/copypasta/contents.rb, line 17
def apply(root, parameters)
  content_dir = "#{root}/#{target_directory}"

  if should_create?
    FileUtils.mkdir_p content_dir
  end

  entries.each do |entry|
    entry.apply(content_dir, parameters)
  end
end
should_create?() click to toggle source
# File lib/copypasta/contents.rb, line 29
def should_create?
  force_create || !entries.empty?
end