Sha256: b36c6a9b3d8c6c2e77a8877dff69cd997e79317d2a66b08052b22f2c2c077d31

Contents?: true

Size: 846 Bytes

Versions: 1

Compression:

Stored size: 846 Bytes

Contents

require "file_tree/version"
require "file_tree/defaults"
require "file_tree/content_generator"
require "tmpdir"

module FileTree
  extend self

  def self.with_context_dir(dir, &block)
    dir_stack.push(dir)
    yield dir if block_given?
    dir
  ensure
    dir_stack.pop
  end

  def self.dir_stack
    Thread.current[:file_tree_dir_stack] ||= []
  end

  def root_dir(&block)
    dir = Dir.mktmpdir
    FileTree.with_context_dir(dir, &block)
  end

  def dir(name, &block)
    dir = File.join(FileTree.dir_stack[-1], name)
    Dir.mkdir(dir)
    FileTree.with_context_dir(dir, &block)
  end

  def file(name, content = Defaults.content_type)
    content = ContentGenerator.create(content) unless content.is_a?(String)
    path = File.join(FileTree.dir_stack[-1], name)
    File.open(path, "wb"){|stream| stream << content}
    path
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
file_tree-0.1.0 lib/file_tree.rb