module Bundler::Thor::Actions

def inside(dir = "", config = {}, &block)


config:: give :verbose => true to log and use padding.
dir:: the directory to move to.
==== Parameters

Returns the value yielded by the block.

the method exits.
to the block you provide. The path is set back to the previous path when
is given it's referenced from the current root. The full path is yielded
Do something in the root or on a provided subfolder. If a relative path
def inside(dir = "", config = {}, &block)
  verbose = config.fetch(:verbose, false)
  pretend = options[:pretend]
  say_status :inside, dir, verbose
  shell.padding += 1 if verbose
  @destination_stack.push File.expand_path(dir, destination_root)
  # If the directory doesn't exist and we're not pretending
  if !File.exist?(destination_root) && !pretend
    require "fileutils"
    FileUtils.mkdir_p(destination_root)
  end
  result = nil
  if pretend
    # In pretend mode, just yield down to the block
    result = block.arity == 1 ? yield(destination_root) : yield
  else
    require "fileutils"
    FileUtils.cd(destination_root) { result = block.arity == 1 ? yield(destination_root) : yield }
  end
  @destination_stack.pop
  shell.padding -= 1 if verbose
  result
end