Class: Roebe::SizeOf

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

Overview

Roebe::SizeOf

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, #show_help, #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) ⇒ SizeOf

#

initialize

#


23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/roebe/classes/size_of.rb', line 23

def initialize(
    i           = nil,
    run_already = true
  )
  reset
  set_from_this_directory(i)
  if run_already.to_s.include? 'dont' # :dont_run-yet
    i = nil
    run_already = false
  end
  run if run_already
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

Roebe::SizeOf[]

#


225
226
227
# File 'lib/roebe/classes/size_of.rb', line 225

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

.size_of?(i) ⇒ Boolean

#

Size_of.size_of?

To test this, try something like:

SizeOf.size_of? '/Depot/Audio'
#

Returns:

  • (Boolean)


106
107
108
109
# File 'lib/roebe/classes/size_of.rb', line 106

def self.size_of?(i)
  _ = new(i)
  _.size?
end

Instance Method Details

#add_result_in_gb(i) ⇒ Object

#

add_result_in_gb

#


72
73
74
# File 'lib/roebe/classes/size_of.rb', line 72

def add_result_in_gb(i)
  return '('+bold_blue((i.to_f / 1024.0).round(3).to_s+' GB')+').'
end

#be_verboseObject

#

be_verbose

#


94
95
96
# File 'lib/roebe/classes/size_of.rb', line 94

def be_verbose
  @be_verbose = true
end

#bold_blue(i) ⇒ Object

#

bold_blue

#


79
80
81
# File 'lib/roebe/classes/size_of.rb', line 79

def bold_blue(i)
  Colours::BOLD_BLUE+i+rev
end

#from_this_directory?Boolean Also known as: target?, input?

#

from_this_directory?

#

Returns:

  • (Boolean)


86
87
88
# File 'lib/roebe/classes/size_of.rb', line 86

def from_this_directory?
  @from_this_directory
end

#output_message_calculate_size_of(i, optional_filesize = nil) ⇒ Object

#

output_message_calculate_size_of

If the second argument is given then we assume this to be the filesize in question.

#


131
132
133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/roebe/classes/size_of.rb', line 131

def output_message_calculate_size_of(i, optional_filesize = nil)
  i = i.to_s
  i = i.ljust(20)
  if File.directory? i
    i = sdir(i)
  else
    i = sfile(i)
  end
  result = 'Calculating the total size of: '+i
  if optional_filesize
    result << rev+' ('+sfancy(optional_filesize.to_s)+rev+')'
  end
  opne result
end

#process_inputObject

#

process_input

We work on the @input provided.

#


158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# File 'lib/roebe/classes/size_of.rb', line 158

def process_input
  sanitize_input
  file_size = 0
  [input?].flatten.each {|entry|
    unless File.exist? entry
      if be_verbose?
        opne "The file at #{sfile(entry)} does not exist."
      end
    else
      if File.directory? entry
        subentries = Dir[entry+'/**/**']
        begin
          subentries.map! {|element| element.squeeze('/') }
        rescue ArgumentError; end
        # =================================================================== #
        # subentries will contain all files and directories of that
        # given directory.
        # =================================================================== #
        subentries.each {|inner_entry|
          if File.exist? inner_entry
            size = File.size(inner_entry)
            @total_filesize += size
          end
        }
      else # This is a file or a symlink.
        file_size = File.size(entry)
        @total_filesize += file_size
      end
      if be_verbose?
        output_message_calculate_size_of(entry)
      end
    end
  }
  report_total_filesize # Finally, report it.
end

#report_total_filesize(be_verbose = be_verbose?) ) ⇒ Object

#

report_total_filesize

Report the total filesize here.

#


199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
# File 'lib/roebe/classes/size_of.rb', line 199

def report_total_filesize(be_verbose = be_verbose?)
  case be_verbose
  when :be_verbose
    be_verbose = true
  end
  if be_verbose
    orev 'The total filesize of '+sdir(target?)+
         rev+' is: '+
         simp(@total_filesize.to_s)+
         "#{rev} Bytes."
    rounded_result = (@total_filesize.to_f / 1024.0 / 1024.0).round(3).to_s
    orev 'This should be '+sfancy(rounded_result+' MB ')+
         add_result_in_gb(rounded_result)
  end
end

#resetObject

#

reset (reset tag)

#


39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/roebe/classes/size_of.rb', line 39

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @total_filesize
  # ======================================================================= #
  @total_filesize = 0
  # ======================================================================= #
  # === @be_verbose
  # ======================================================================= #
  @be_verbose = false
end

#runObject

#

run (run tag)

#


218
219
220
# File 'lib/roebe/classes/size_of.rb', line 218

def run
  process_input
end

#sanitize_inputObject

#

sanitize_input

Right now we only append a ‘/’ character towards a directory.

#


116
117
118
119
120
121
122
123
# File 'lib/roebe/classes/size_of.rb', line 116

def sanitize_input
  _ = input?
  if File.directory? _
    _ = _.to_s.dup if _.to_s.frozen?
    _ << '/' unless _.end_with? '/'
  end
  set_directory(_)
end

#set_from_this_directory(i = '') ⇒ Object Also known as: set_directory

#

set_from_this_directory

#


62
63
64
65
66
67
# File 'lib/roebe/classes/size_of.rb', line 62

def set_from_this_directory(i = '')
  i = [i].flatten.compact unless i.is_a? Array
  i = [return_pwd] if i.empty? # Empty Array means: use Dir.pwd as target.
  i = i.first
  @from_this_directory = i
end

#size?Boolean

#

size?

#

Returns:

  • (Boolean)


55
56
57
# File 'lib/roebe/classes/size_of.rb', line 55

def size?
  @total_filesize
end

#total_filesize?Boolean

#

total_filesize?

#

Returns:

  • (Boolean)


149
150
151
# File 'lib/roebe/classes/size_of.rb', line 149

def total_filesize?
  @total_filesize
end