module Foreman::Thor::Actions

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


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

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 doesnt exist and we're not pretending
  if !File.exist?(destination_root) && !pretend
    FileUtils.mkdir_p(destination_root)
  end
  if pretend
    # In pretend mode, just yield down to the block
    block.arity == 1 ? yield(destination_root) : yield
  else
    FileUtils.cd(destination_root) { block.arity == 1 ? yield(destination_root) : yield }
  end
  @destination_stack.pop
  shell.padding -= 1 if verbose
end