module Bovem::ShellMethods::Directories

Methods to interact with directories.

Public Instance Methods

create_directories(*directories, mode: 0755, run: true, show_errors: false, fatal_errors: true) click to toggle source

Creates a list of directories, included missing parent directories.

@param directories [Array] The list of directories to create. @param mode [Fixnum] Initial permissions for the new directories. @param run [Boolean] If `false`, it will just print a list of directories that would be created. @param show_errors [Boolean] If show errors. @param fatal_errors [Boolean] If quit in case of fatal errors. @return [Boolean] `true` if operation succeeded, `false` otherwise.

# File lib/bovem/shell.rb, line 424
def create_directories(*directories, mode: 0755, run: true, show_errors: false, fatal_errors: true)
  rv = true

  # Adjust directory
  directories = directories.ensure_array(no_duplicates: true, compact: true, flatten: true) { |d| File.expand_path(d.ensure_string) }

  if !run # Just print
    dry_run_directory_creation(directories)
  else
    directories.each do |directory|
      rv &&= try_create_directory(directory, mode, fatal_errors, directories, show_errors)
      break unless rv
    end
  end

  rv
end
within_directory(directory, restore: true, show_messages: false) { || ... } click to toggle source

Executes a block of code in another directory.

@param directory [String] The new working directory. @param restore [Boolean] If to restore the original working directory. @param show_messages [Boolean] Show informative messages about working directory changes. @return [Boolean] `true` if the directory was valid and the code executed, `false` otherwise.

# File lib/bovem/shell.rb, line 405
def within_directory(directory, restore: true, show_messages: false)
  directory = File.expand_path(directory.ensure_string)
  original = Dir.pwd

  rv = enter_directory(directory, show_messages, i18n.move_in(directory))
  yield if rv && block_given?
  rv = enter_directory(original, show_messages, i18n.move_out(directory)) if rv && restore

  rv
end