Class: RBT::Cookbooks::ScanSourceArchive

Inherits:
Base show all
Defined in:
lib/rbt/cookbooks/scan_source_archive/scan_source_archive.rb

Overview

RBT::Cookbooks::ScanSourceArchive

Constant Summary collapse

ARRAY_SKIP_THESE_DIRECTORIES =
#

ARRAY_SKIP_THESE_DIRECTORIES

Next comes a listing of Sub-Directories to skip (forbidden dirs). Careful with what you enter here.

#
%w(
  /windows/
  java
  rpg
  firefox
  extensions
  opera
  firmware
  ruby
  patches
  gobolinux
  fonts
  hardware
  rarlinux
  libreoffice
  nvidia
  jdk
  bios
  flash
  jquery
  ntfs3g
  pdf
  polkitqt
  wlan
  youtubedl
)

Constants inherited from LeanPrototype

LeanPrototype::ALL_COLOUR_METHODS, LeanPrototype::ARRAY_KDE_KONSOLE_COLOURS_IN_USE, LeanPrototype::DAY_NAMES, LeanPrototype::NAMESPACE, LeanPrototype::SILENT_REDIRECTION

Instance Method Summary collapse

Methods inherited from Base

#cat, #cd_back_to_the_current_working_directory, #consider_reporting_how_many_programs_are_registered, #cookbook_files?, #copy_recursively, #delete_code_of_conduct?, #determine_appdir_prefix_from_this_input, #directory_validation?, #do_not_show_names, #fast_return_file_size_of_this_program, #file_last_symlinked_program?, #file_programs_version_url, #gem_version, #is_a_64bit_system?, #is_ccache_available?, #is_porg_available?, #is_this_binary_registered?, #is_this_program_included?, #make_command?, #make_install_command?, #new_cookbook_instance_for, #program_exists?, #publish_list_of_all_programs_version, #rcp, registered_binaries?, #remove_symlink, #rename_kde_konsole_tab, #repackage, #report_n_programs, #report_working_directory, #return_compile_time_statistics, #return_n_random_characters, #return_version_of_this_program, #run_make_then_make_install, #sanitize_url1_entry, #set_source_directory, #show_overview_over_available_utility_scripts, #symlink_all_files_from_this_directory_to_that_directory, #system_tags?, #upload_list_of_all_programs_version, #use_yaml_database_for_tags?, #warn_and_exit, #wget

Methods inherited from LeanPrototype

#a_or_an?, #abbreviations?, #absolute_path, #action, #add_to_the_commandline_arguments, #all_binaries?, #all_files_from, #all_libraries?, #allowed_cookbook_entries?, #appdir_location_of?, #append_onto_the_internal_hash, #append_what_into, #archive_type_of?, #available_programs?, #be_quiet?, #be_verbose?, #begins_with_a_comment?, #capitalize_first_alphabetical_character, #cd_to_the_log_directory, #cd_to_the_temp_directory, #change_directory, #change_permission, #cheering_person?, #chmod, #chop_off_archive, #clear_commandline_arguments, #cliner, #coloured_and_padded_e, #coloured_and_padded_esystem, #coloured_esystem, #colourize_directory_for_system_results, #colourize_this_error, #colourize_this_file_path, #colourize_this_warning, #commandline_arguments?, #commandline_arguments_without_hyphens?, #comment, #convert_dd_mm_yyyy_to_its_long_variant, #convert_env_variable, #copy_directory, #copy_files, #cpr, #create_directory, #current_hour?, #dd_mmm_yyy, #debug, #debug?, #directory_expanded_cookbooks?, #disable_colours, #display_md5sum?, #do_not_debug, #does_the_cookbook_include_this_program?, #does_this_expanded_cookbook_file_exist_for_this_program?, #does_this_file_exist?, #does_this_file_exist_and_is_it_a_file?, #e, #eblue, #ecomment, #ecrimson, #edir, #editor?, #efancy, #eimp, #enable_colours, #enable_debug, #ensure_main_encoding_for, #eparse, #esystem, #esystem_gold, #etomato, #ewarn, #exit_program, #expanded_cookbooks_directory_exists?, #extract_this_archive, #extract_to?, #file_compiled_programs?, #file_dirname_retaining_trailing_slash, #file_predefined_installation_instructions?, #file_specification_of_registered_cookbook_entries, #find_cookbook_alias_for, #find_this_yaml_file, #first_argument?, #first_non_hyphen_argument?, #get_all_directories_from, #get_all_files_from, #get_all_programs, #get_date, #get_extended_date, #get_files_and_directories_from, #go_to_base_dir, #home_dir?, #host_system?, #infer_the_namespace, #internal_hash?, #internal_hash_set_commandline_arguments, #is_an_archive?, #is_directory?, #is_file?, #is_github_url?, #is_make_available?, #is_meson_installed?, #is_on_gobolinux?, #is_on_windows?, #is_roebe?, #is_superuser?, #is_symlink?, #is_this_a_header?, #is_this_a_library?, #is_this_program_included?, #iso_encoding?, #load_dataset_from_this_expanded_cookbook, #load_yaml, #load_yaml_file_from_the_cookbook_directory_for_this_program, #log_directory?, #main_encoding?, #meson_build_file_exists?, #months?, #move_file, #n_programs_are_available?, #n_programs_available?, #namespace?, #no_directory_exists_at, #no_directory_was_found_at, #no_opn, #no_such_file_exists, #open_in_browser, #open_in_editor, #opncomment, #opne, #opnef, #opnerev, #opnerror, #opnesystem, #opnewarn, #opnfancy, #opnn, #otomato, #packages_directory?, #path_to_this_expanded_cookbooks_dataset, #pkgconfig_directory?, #populate_the_internal_hash_with_default_values, #predefined_installation_instructions?, #prepend_this_commandline_argument, #program_version_of?, #project_base_directory?, #project_yaml_directory?, #query_path?, #rarrow?, #read_file, #read_file_in_default_encoding, #read_file_with_default_encoding, #readlines, #readlines_with_proper_encoding, #register_sigint, #registered_cookbook_entries?, #remove, #remove_archive_from_the_end, #remove_comments_from_each_line, #remove_directory, #remove_double_slashes, #remove_file, #remove_newlines, #remove_parens, #remove_symlink, #remove_the_first_commandline_argument, #remove_this_commandline_argument, #remove_this_entry_from_the_commandline_arguments, #remove_trailing_ANSII_escape_code, #remove_unnecessary_data_from_url, #rename, #report_pwd, #require_the_rbt_aliases, #reset_the_internal_hash, #return_all_archives_from_this_directory, #return_appdir_prefix, #return_commandline_arguments_with_leading_hyphens, #return_current_hour_minutes_second, #return_date, #return_day_of_the_month_based_on_utc, #return_full_time, #return_hours_minutes_seconds_based_on_utc, #return_location_to_this_programs_yaml_file, #return_month_based_on_this_number, #return_month_based_on_utc, #return_opnn, #return_program_name, #return_program_name_for_gobolinux_systems, #return_program_name_via_program_information, #return_pwd, #return_unicode_warning_symbol_or_empty_string, #return_utc, #return_utc_time_in_a_format_similar_to_slackware, #return_weekday_based_on_utc, #return_year_based_on_utc, #rev, #rpn, #run_simulation=, #run_simulation?, #sdir, #sdir_return_pwd, #set_be_silent, #set_be_verbose, #set_first_commandline_argument, #set_namespace, #set_use_colours, #set_use_opn, #set_xorg_buffer, #sfancy, #sfile, #silent_redirection?, #silently_create_this_directory_if_it_does_not_yet_exist, #simp, #source_base_directory?, #ssym, #stderr, #store_into_this_directory?, #string_right_arrow?, #swarn, #symlink, #sysbin_directory?, #sysetc_directory?, #sysinclude_directory?, #syslib_directory?, #sysshare_directory?, #system_directory?, #temp_directory?, #to_bool, #to_camelcase, #to_iso_encoding, #to_unicode, #today?, #touch, #try_to_require_beautiful_url, #try_to_require_the_environment_information_gem, #try_to_require_the_extracter_gem, #try_to_require_the_open_gem, #try_to_require_the_xorg_buffer, #try_to_require_wget, #try_to_return_a_special_compile_component, #unicode_cliner, #unicode_middle_cliner, #use_colours=, #use_colours?, #use_opn=, #use_opn?, #utf_encoding?, #verbose_truth, #word_wrap, #write_what_into, #write_what_into_via_unicode, #yes_or_no

Constructor Details

#initialize(run_already = true) ⇒ ScanSourceArchive

#

initialize

#


59
60
61
62
63
64
65
66
# File 'lib/rbt/cookbooks/scan_source_archive/scan_source_archive.rb', line 59

def initialize(
    run_already = true
  )
  register_sigint
  super()
  reset
  run if run_already
end

Instance Method Details

#array_registered_files?Boolean Also known as: array_registered_files

#

array_registered_files?

#

Returns:

  • (Boolean)


192
193
194
# File 'lib/rbt/cookbooks/scan_source_archive/scan_source_archive.rb', line 192

def array_registered_files?
  @array_registered_files
end

#files?Boolean

#

files?

#

Returns:

  • (Boolean)


185
186
187
# File 'lib/rbt/cookbooks/scan_source_archive/scan_source_archive.rb', line 185

def files?
  @array_registered_files
end

#forbidden?(i) ⇒ Boolean

#

forbidden?

Skip directories listed in our array.

#

Returns:

  • (Boolean)


175
176
177
178
179
180
# File 'lib/rbt/cookbooks/scan_source_archive/scan_source_archive.rb', line 175

def forbidden?(i)
  ARRAY_SKIP_THESE_DIRECTORIES.any? { |entry|
    return true if i.include? entry
  }
  return false
end

#process_registered_programs(i = files? ) ⇒ Object

#

process_registered_programs

#


206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
# File 'lib/rbt/cookbooks/scan_source_archive/scan_source_archive.rb', line 206

def process_registered_programs(
    i = files?
  )
  available_programs = available_programs?
  i.each { |name_of_the_program, real_location|
    if available_programs.include? name_of_the_program
      # opne sfancy(name_of_program)+' is included.' Then be silent.
    else # Else it is not included.
      opne swarn('`')+
           sfancy(name_of_the_program.to_s)+
           swarn('` is not included.')
      opne "#{rev}It can be found at `#{sfile(real_location)}#{rev}`."
    end
  }
end

#query_database?Boolean Also known as: query_database

#

query_database?

#

Returns:

  • (Boolean)


199
200
201
# File 'lib/rbt/cookbooks/scan_source_archive/scan_source_archive.rb', line 199

def query_database?
  @query_database
end

#register_file(f, real_location) ⇒ Object

#

register_file

Simply append to @array_registered_file.

The second argument shall specify the target location.

#


105
106
107
108
109
# File 'lib/rbt/cookbooks/scan_source_archive/scan_source_archive.rb', line 105

def register_file(f, real_location)
  @array_registered_files << [
    f, real_location
  ] #unless @array_registered_files
end

#resetObject

#

reset

#


71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/rbt/cookbooks/scan_source_archive/scan_source_archive.rb', line 71

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @cookbook_dataset
  # ======================================================================= #
  @cookbook_dataset = nil
  # ======================================================================= #
  # === @array_registered_files
  # ======================================================================= #
  @array_registered_files = [] # Keep them registered.
end

#runObject

#

run (run tag)

#


225
226
227
# File 'lib/rbt/cookbooks/scan_source_archive/scan_source_archive.rb', line 225

def run
  scan
end

#scan(target = source_directory? ) ⇒ Object

#

scan

This is the actual scanning action.

#


116
117
118
119
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
164
165
166
167
168
# File 'lib/rbt/cookbooks/scan_source_archive/scan_source_archive.rb', line 116

def scan(
    target = source_directory?
  )
  set_target_directory(target)
  opne "Scanning through `#{sdir(target_directory?)}"\
       "` and all of its subdirectories next."
  opne "This may take a while - please be patient.#{N}"
  all_files = Dir["#{target_directory?}**/*"].sort
  # ======================================================================= #
  # Filter away directories.
  # ======================================================================= #
  all_files.reject! {|entry| File.directory? entry }
  # ======================================================================= #
  # Report to the user how many entries were foudn.
  # ======================================================================= #
  opne "#{royalblue(all_files.size.to_s)} entries (== files) were found."
  all_files.each { |file|
    original_file = file.to_s.dup # Keep a reference here.
    next if !file.include? '-'
    next if forbidden?(file)
    file = remove_archive_at_the_end(
      File.basename(file).downcase
    )
    # ===================================================================== #
    # Obtain only the assumed "program name".
    # ===================================================================== #
    name_of_the_program = ProgramInformation::ProgramInformation.new(file).return_name
    name_of_the_program = name_of_the_program.to_s.
                          tr('-','').downcase.
                          tr('_','')
    if name_of_the_program.empty?
      opne "Something went wrong for #{sfile(file)}#{rev}, "\
           "#{sfancy(original_file)} #{rev}(#{simp(name_of_the_program)}#{rev})."
      opne 'Please correct this mistake.'
    elsif file.end_with? '.gem' # Ignore ruby .gem files.
      name_of_the_program = nil
    end
    begin
      # =================================================================== #
      # Register the file here.
      # =================================================================== #
      register_file(
        name_of_the_program, original_file
      ) if name_of_the_program
    rescue Exception => error
      opne 'An error happened (error type: '+sfancy(error.class.to_s)+
           ') at line '+swarn(__LINE__.to_s)
      opne 'The original_file entry was: '+simp(original_file.to_s)
      pp error
    end
  }
  process_registered_programs
end

#set_target_directory(i) ⇒ Object

#

set_target_directory

#


87
88
89
# File 'lib/rbt/cookbooks/scan_source_archive/scan_source_archive.rb', line 87

def set_target_directory(i)
  @target_directory = i
end

#target_directory?Boolean Also known as: target_directory

#

target_directory?

#

Returns:

  • (Boolean)


94
95
96
# File 'lib/rbt/cookbooks/scan_source_archive/scan_source_archive.rb', line 94

def target_directory?
  @target_directory
end