Class: Roebe::UsbDevices

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

Overview

Roebe::UsbDevices

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(commandline_arguments = nil, run_already = true) ⇒ UsbDevices

#

initialize

#


26
27
28
29
30
31
32
33
34
35
# File 'lib/roebe/classes/usb/usb_devices.rb', line 26

def initialize(
    commandline_arguments = nil,
    run_already           = true
  )
  reset
  set_commandline_arguments(
    commandline_arguments
  )
  run if run_already
end

Class Method Details

.[](i = '') ⇒ Object

#

Roebe::UsbDevices[]

#


180
181
182
# File 'lib/roebe/classes/usb/usb_devices.rb', line 180

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

Instance Method Details

#available_usb_devices?Boolean

#

available_usb_devices?

#

Returns:

  • (Boolean)


64
65
66
# File 'lib/roebe/classes/usb/usb_devices.rb', line 64

def available_usb_devices?
  @available_usb_devices
end

#determine_available_usb_devicesObject

#

determine_available_usb_devices

#


71
72
73
74
75
76
77
78
79
# File 'lib/roebe/classes/usb/usb_devices.rb', line 71

def determine_available_usb_devices
  _ = `fdisk -l`.split(N).select {|line|
    line.start_with? '/dev/sd'
  }.reject {|line|
    line.include? '/sda'
  }
  register_these_entries_as_available_usb_devices(_)
  populate_the_main_hash_storing_information_about_external_usb_devices
end

#populate_the_main_hash_storing_information_about_external_usb_devicesObject

#

populate_the_main_hash_storing_information_about_external_usb_devices

#


84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/roebe/classes/usb/usb_devices.rb', line 84

def populate_the_main_hash_storing_information_about_external_usb_devices
  result = `df -T -ah`.split(N)
  # ======================================================================= #
  # The above command may yield Strings such as this one here:
  #
  #   /dev/sdb1      ext4       29G  946M   27G   4% /Mount/USB1
  #
  # The last entry may be missing, though.
  # ======================================================================= #
  available_usb_devices?.flatten.each {|this_usb_device|
    splitted1 = this_usb_device.split(' ')
    first_entry = splitted1.first
    relevant_entry = result.select {|entry|
      entry.include?(first_entry)
    }
    if relevant_entry.is_a? Array
      unless relevant_entry.empty?
        relevant_entry = relevant_entry.first
      end
    end
    if (splitted1.size == 8) and relevant_entry.empty?
      relevant_entry = first_entry
    end
    splitted = relevant_entry.split(' ')
    name_of_the_usb_device = splitted.first
    filetype       = splitted[1]
    storage_space  = splitted[2]
    occupied       = splitted[3]
    available      = splitted[4]
    n_percent_used = splitted[5]
    mounted_at     = splitted[6]
    @hash_storing_information_about_external_usb_devices[name_of_the_usb_device] = {
      filetype:       filetype,
      storage_space:  storage_space,
      occupied:       occupied,
      available:      available,
      n_percent_used: n_percent_used,
      mounted_at:     mounted_at
    }
  }
end

#register_these_entries_as_available_usb_devices(i) ⇒ Object

#

register_these_entries_as_available_usb_devices

#


56
57
58
59
# File 'lib/roebe/classes/usb/usb_devices.rb', line 56

def register_these_entries_as_available_usb_devices(i)
  @available_usb_devices << i
  @available_usb_devices.flatten!
end

#resetObject

#

reset (reset tag)

#


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

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @available_usb_devices
  # ======================================================================= #
  @available_usb_devices = []
  # ======================================================================= #
  # === @hash_storing_information_about_external_usb_devices
  # ======================================================================= #
  @hash_storing_information_about_external_usb_devices = {}
end

#runObject

#

run (run tag)

#


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
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/roebe/classes/usb/usb_devices.rb', line 129

def run
  determine_available_usb_devices
  if @available_usb_devices.empty?
    e 'No USB devices appear to be available.'
  else
    e
    e grey('Available USB devices:')
    e
    @available_usb_devices.each_with_index {|this_device_entry, index| index += 1
      padded_index = (index.to_s+') ').rjust(5)
      splitted = this_device_entry.split(' ')
      # =================================================================== #
      # Obtain the name of the USB device at hand next:
      # =================================================================== #
      name_of_the_device = splitted.first
      # =================================================================== #
      # And the "pointer" to the main hash:
      # =================================================================== #
      pointer = @hash_storing_information_about_external_usb_devices[name_of_the_device]
      filesize = splitted[4]
      n_percent_used = pointer[:n_percent_used]
      available      = pointer[:available]
      filetype       = pointer[:filetype]
      colourized_filesize_entry = tomato(
        ('Filesize: '+filesize).ljust(12)
      )+teal(
        ' ('+n_percent_used.to_s+' used; available: '+available.to_s+')'
      )
      colourized_filesystem_type = grey(' Filesystem: ')+
      springgreen(splitted[6])+darkgreen(" (#{filetype})")
      mounted_at = pointer[:mounted_at]
      padded_name_of_the_device = name_of_the_device.ljust(10)
      result = royalblue(padded_index)+
               slateblue(padded_name_of_the_device)+
               colourized_filesize_entry+
               colourized_filesystem_type
      if mounted_at
        result << grey(' Mounted at: ')+
                  slateblue("#{mounted_at}/".squeeze('/'))
      else
        result << crimson('(not mounted)')
      end
      e result
    }
    e
  end
end