Class: Roebe::RemoveDirectory

Inherits:
Base show all
Defined in:
lib/roebe/classes/remove_directory.rb

Overview

Roebe::RemoveDirectory

Constant Summary

Constants inherited from Base

Base::COLOURS, Base::HOME_DIRECTORY_OF_USER_X, Base::N, Base::NAMESPACE

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#actions, #append_this_onto_that_file, #append_what_into, #be_silent, #be_verbose?, #beautiful_url, #burlywood, #call_next, #chdir, #cheerful_guy, #cliner, #complex_esystem, #convert_global_env, #copy_directory, #copy_file, #cornflowerblue, #create_directory, #crimson, #current_month?, #current_time?, #current_year?, #cyan, #darkcyan, #darkgreen, #darkkhaki, #darkslateblue, #deeppink, #delete_symlink, #do_not_use_the_base_colours, #do_use_the_base_colours, #e, #ecomment, #editor_to_use?, #efancy, #eimp, #emphasis, #ensure_main_encoding, #ensure_utf_encoding, #eparse, #erev, #esteelblue, #etomato, #ewarn, #exit_program, #firebrick, #get_current_day, #get_current_month, #get_files_and_directories, #get_files_from, #get_german_name_for_this_weekday, #gold, #green, #grey, #hh_mm_ss, #hh_mm_ss_day_month_year, #home_dir?, #home_directory_of_user_x?, #infer_the_namespace, #internal_hash?, #is_a_directory?, #is_a_file?, #is_a_jpg_file?, #is_an_image_file?, #is_archive?, #is_audio_file?, #is_in_studium_dir?, #is_multimedia_file?, #is_on_roebe?, #is_on_windows?, #is_studium_available?, #is_symlink?, #is_this_a_ruby_file?, #is_video_file?, #iso_encoding?, #le, #left_colour, #lightblue, #lightgreen, #lightseagreen, #lightsteelblue, #lime, #limegreen, #localhost_to_data, #log_directory?, #main_encoding?, #mediumorchid, #mediumpurple, #mediumseagreen, #mediumslateblue, #mediumspringgreen, #mediumturquoise, #mkdir_p, #mv, #n_days_in_this_month, #n_pages_in_this_pdf_file?, #namespace?, #no_file_exists_at, #ogrey, #olive, #olivedrab, #open_in_browser, #opne, #opnesystem, #opnn, #orange, #orchid, #orev, #palegoldenrod, #palevioletred, #pink, #powderblue, #programs_dir?, #project_base_dir?, #random_html_colour, #rds, #read_file_in_iso_encoding, #read_file_via_the_default_encoding, #read_lines_via_iso_encoding, #readlines_with_main_encoding, #red, #register_sigint, #remove, #remove_directory, #remove_file, #rename_kde_konsole_tab, #replace_localhost_with_data, #report_pwd, #require_rescue, #reset_the_internal_hash, #return_all_directories_from_this_directory, #return_all_files_from_this_directory, #return_current_directory, #return_dd_mm_yyyy, #return_file_or_directory_of, #return_files_from_pwd, #return_last_part_of_the_current_directory, #return_utc, #rev, #right_arrow?, #right_colour, #roebe_log_directory?, #rosybrown, #royalblue, #ruby_base_directory?, #run_in_background, #run_rcfiles_then_run_ata_via_qdbus, #sandybrown, #sdir, #seagreen, #set_be_verbose, #set_xorg_buffer, #sfancy, #sfile, #silent_redirection?, #simp, #simple_esystem, #skyblue, #slateblue, #slategray, #springgreen, #steelblue, #string_italic, #swarn, #symlink, #teal, #temp_dir?, #to_camelcase, #to_counted_hash, #tomato, #touch, #try_to_require_the_beautiful_url_gem, #try_to_require_the_html_template, #try_to_require_the_open_gem, #try_to_require_the_program_information_gem, #try_to_require_the_xorg_buffer, #use_colours?, #verbose_truth, #weekday?, #word_wrap, #write_what_into, #yellow

Methods included from Base::CommandlineArguments

#append_onto_the_commandline_arguments, #clear_commandline_arguments, #commandline_arguments?, #commandline_arguments_as_string?, #commandline_arguments_without_leading_hyphens?, #first_argument?, #first_argument_without_leading_hyphens?, #has_an_argument_been_passed?, #remove_hyphened_arguments_from_the_commandline_arguments, #return_commandline_arguments_with_leading_hyphens, #second_argument?, #set_commandline_arguments

Constructor Details

#initialize(i = nil, run_already = true) ⇒ RemoveDirectory

#

initialize

#


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/roebe/classes/remove_directory.rb', line 25

def initialize(
    i           = nil,
    run_already = true
  )
  reset
  set_input(i)
  # ======================================================================= #
  # === Handle blocks next
  # ======================================================================= #
  if block_given?
    yielded = yield
    if yielded.is_a? Hash
      if yielded.has_key? :delete_only_empty_directories
        @delete_only_empty_directories = yielded.delete(:delete_only_empty_directories)
      end
    end
  end
  run if run_already
end

Class Method Details

.[](i = '') ⇒ Object

#

Roebe::RemoveDirectory[]

#


184
185
186
# File 'lib/roebe/classes/remove_directory.rb', line 184

def self.[](i = '')
  new(i)
end

Instance Method Details

#delete_this_directory(i) ⇒ Object

#

delete_this_directory

This method is the “do-action” for removing a directory.

#


170
171
172
# File 'lib/roebe/classes/remove_directory.rb', line 170

def delete_this_directory(i)
  FileUtils.rm_rf(i) unless i.strip.squeeze('/') == '/' # Tiny "safeguard".
end

#do_delete_only_empty_directoriesObject

#

do_delete_only_empty_directories

#


111
112
113
# File 'lib/roebe/classes/remove_directory.rb', line 111

def do_delete_only_empty_directories
  @delete_only_empty_directories = true
end

#do_remove_this_directory(i) ⇒ Object

#

do_remove_this_directory

This method will do the delete-action of a directory.

#


120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# File 'lib/roebe/classes/remove_directory.rb', line 120

def do_remove_this_directory(i)
  if i.is_a? Array
    if i.empty? and is_on_roebe?
      opne 'No input has been given. Since we are on roebe, we will'
      opne 'use all directories found in the current working directory'
      opne 'as substitute.'
      # =================================================================== #
      # Next obtain all directories in the current directory.
      # =================================================================== #
      i << return_all_directories_from_this_directory(return_pwd)
      i.flatten!
    end
    i.each {|entry| do_remove_this_directory(entry) }
  else
    if i.strip == '/' # Safeguard against / removal.
      e 'Trying to remove / is currently not possible via '\
        'this ruby method here.'
      return # Early return.
    end
    if File.directory? i
      # =================================================================== #
      # Ok, past this point we know that it is a directory. Now it
      # may be an empty directory, which we may have to check as
      # well if we did set a certain instance variable to true.
      # =================================================================== #
      if @delete_only_empty_directories # In this case we must check further.
        if Dir.empty? i
          e 'Now removing the directory `'+sdir(i)+'`.' if be_verbose?
          delete_this_directory(i)
        else
          # =============================================================== #
          # Else, since it is empty, we will not delete it. But we will
          # notify the user, if we are in verbose-mode.
          # =============================================================== #
          e 'The directory at '+sdir(i)+' is not empty, thus '\
            'it will not be removed.' if be_verbose?
        end
      else # Else, remove it no matter what.
        e 'Now removing the directory `'+sdir(i)+'`.' if be_verbose?
        delete_this_directory(i)
      end
    end
  end
end

#input?Boolean

#

input?

#

Returns:

  • (Boolean)


71
72
73
# File 'lib/roebe/classes/remove_directory.rb', line 71

def input?
  @input
end
#

menu (menu tag)

#


78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/roebe/classes/remove_directory.rb', line 78

def menu(i)
  if i.is_a? Array
    i.each {|entry| menu(entry) }
  else
    case i # case tag
    # ===================================================================== #
    # === remove_directories --help
    # ===================================================================== #
    when /^-?-?help$/
      show_help
      exit
    # ===================================================================== #
    # === remove_directories --delete-only-empty-directories
    # ===================================================================== #
    when /^-?-?delete(-|_)?only(-|_)?empty(-|_)?directories$/i,
         /^-?-?only(-|_)?empty(-|_)?ones$/i
      do_delete_only_empty_directories
    end
  end
end

#resetObject

#

reset (reset tag)

#


48
49
50
51
52
# File 'lib/roebe/classes/remove_directory.rb', line 48

def reset
  super()
  infer_the_namespace
  @delete_only_empty_directories = false # Whether to delete only empty directory.
end

#runObject

#

run (run tag)

#


177
178
179
# File 'lib/roebe/classes/remove_directory.rb', line 177

def run
  do_remove_this_directory(input?)
end

#set_input(i = '') ⇒ Object

#

set_input

#


57
58
59
60
61
62
63
64
65
66
# File 'lib/roebe/classes/remove_directory.rb', line 57

def set_input(i = '')
  i = [i] unless i.is_a? Array
  i.flatten!
  if i.any? {|entry| entry.include? '--' }
    optional_commands = i.select {|entry| entry.include? '--'}
    menu(optional_commands)
    i -= optional_commands # Chop off these entries that include '--'.
  end
  @input = i
end

#show_helpObject

#

show_help (help tag)

#


102
103
104
105
106
# File 'lib/roebe/classes/remove_directory.rb', line 102

def show_help
  e
  e '  --delete-only-empty-directories # this will delete only empty directories'
  e
end