Class: RBT::Cookbooks::RegisteredBinaries

Inherits:
Registered show all
Defined in:
lib/rbt/registered/registered_binaries.rb

Overview

RBT::Cookbooks::RegisteredBinaries

Constant Summary

Constants inherited from Registered

RBT::Cookbooks::Registered::SHOW_PROGRAM_NAME

Constants inherited from LeanPrototype

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

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Registered

#also_storing_into, #hash_to_be_stored?, #it_is_part_of_the_package, #ruby_src_dir?, #ruby_src_dir_for_the_registered_yaml_files?, #set_this_program, #this_program?

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

#

initialize

#


34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/rbt/registered/registered_binaries.rb', line 34

def initialize(
    run_already = true
  )
  reset
  if block_given?
    yielded = yield
    case yielded
    when :be_quiet
      set_be_quiet
    end
  end
  run if run_already
end

Class Method Details

.location?Boolean

#

RBT::Cookbooks::RegisteredBinaries.location?

#

Returns:

  • (Boolean)


80
81
82
# File 'lib/rbt/registered/registered_binaries.rb', line 80

def self.location?
  opn; e FILE_REGISTERED_BINARIES
end

.opnnObject

#

RegisteredBinaries.opnn

#


118
119
120
# File 'lib/rbt/registered/registered_binaries.rb', line 118

def self.opnn
  Opn.opn(namespace: NAMESPACE)
end

.search_for_this_program(i, &block) ⇒ Object

#

RBT::Cookbooks::RegisteredBinaries.search_for_this_program

#


109
110
111
112
113
# File 'lib/rbt/registered/registered_binaries.rb', line 109

def self.search_for_this_program(i, &block)
  _ = ::RBT::Cookbooks::RegisteredBinaries.new(false, &block)
  _.set_this_program(i)
  _.search_for_this_program(i)
end

Instance Method Details

#opnnObject

#

opnn

#


125
126
127
# File 'lib/rbt/registered/registered_binaries.rb', line 125

def opnn
  RegisteredBinaries.opnn
end

#report_to_the_user_what_we_will_doObject

#

report_to_the_user_what_we_will_do

#


71
72
73
74
75
# File 'lib/rbt/registered/registered_binaries.rb', line 71

def report_to_the_user_what_we_will_do
  opne 'Obtaining Information about available binaries next.'
  opne 'This may take a while.'
  opne orange('Please be patient.')
end

#resetObject

#

reset (reset tag)

#


51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/rbt/registered/registered_binaries.rb', line 51

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @hash_to_be_stored
  # ======================================================================= #
  @hash_to_be_stored = {} # This is the hash that will be stored.
  # ======================================================================= #
  # === @cookbook_dataset
  # ======================================================================= #
  @cookbook_dataset = nil
  # ======================================================================= #
  # === @this_program
  # ======================================================================= #
  @this_program = nil
end

#return_program_version_of(i) ⇒ Object

#

return_program_version_of

#


191
192
193
# File 'lib/rbt/registered/registered_binaries.rb', line 191

def return_program_version_of(i)
  return RBT.return_version_of_this_program(i)
end

#runObject

#

run

#


198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'lib/rbt/registered/registered_binaries.rb', line 198

def run
  report_to_the_user_what_we_will_do
  # ======================================================================= #
  # We could rescue the following code, but I think it is better to fail,
  # and then correct the error. But in case we wish to change the
  # behaviour again, the rescue-clause below was retained in the comments.
  # ======================================================================= #
  available_programs?.each { |program_name|
      _ = action(:SanitizeCookbook, program_name) { :fast }
      binaries = _.binaries? # This is an Array.
      unless binaries.empty?
        e program_name if SHOW_PROGRAM_NAME
        binaries.each {|entry|
          @hash_to_be_stored[entry] = program_name
        }
      end
    # rescue Exception => error
    #   opne 'An error happened for the program '+
    #        sfile(program_name)+
    #        '. (Error: '+error.class.to_s+')'
    #   pp error
    # end
  }
  save_yaml_file
end

#save_yaml_fileObject Also known as: create_yaml_file

#

save_yaml_file

The method ‘save_yaml_file` will create the yaml file which lists our binaries (in hash format). Right now, we need to manually update this yaml file on our own.

#


91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/rbt/registered/registered_binaries.rb', line 91

def save_yaml_file
  into = RBT.file_registered_binaries
  what = YAML.dump(hash?)
  e sfancy('Storing yaml dataset in ')
  e '  '+sfile(into)
  write_what_into(what, into)
  if is_on_roebe?
    into = "#{ruby_src_dir_for_the_registered_yaml_files?}"\
           "#{File.basename(into)}"
    also_storing_into
    e "`#{sfile(into)}`"
    write_what_into(what, into)
  end
end

#search_for_this_program(i = @this_program) ⇒ Object

#

search_for_this_program

Use this method to search for a specific program.

#


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
176
177
178
179
180
181
182
183
184
185
186
# File 'lib/rbt/registered/registered_binaries.rb', line 134

def search_for_this_program(
    i = @this_program
  )
  be_verbose = be_verbose?
  i = i.to_s
  if i.include? '/'
    i = File.basename(i)
    opne "The input includes a #{simp('/')} token. We will "\
         "truncate this to the"
    opne 'last part only, as we only keep the names registered, '\
         'not the paths.'
    opne "Thus, our input will be #{sfancy(i)}#{rev}."
  end
  if be_verbose
    opne "#{rev}Searching for `#{sfancy(i)}#{rev}` now:"
  end
  # ======================================================================= #
  # Query whether it is already included or not.
  # ======================================================================= #
  if RBT.does_include? i
    if be_verbose
      opne "Yes, this appears to be already registered with the "\
           "same name #{simp(i)}#{rev}."
    end
    program_version = RBT.swift_return_version_of_this_program(i)
    if be_verbose
      opne "Its program version is: #{lightblue(program_version)}"
    end
    return i
  else
    hash = load_yaml(FILE_REGISTERED_BINARIES)
    if hash.keys.include?(i)
      result = hash[i]
      if be_verbose
        opne "#{rev}The binary called `#{sfancy(i)}#{rev}` was found."
        it_is_part_of_the_package(result)
        opne rev+'The currently registered version of '+
              tomato(result)+"#{rev} is: "+
              orchid(
                return_program_version_of(result)
              )
      end
      return result
    else
      if be_verbose
        opne sfancy(i)+rev+' is '+swarn('NOT')+rev+' included. We could '\
             'not find any program'
        opne 'including this program.'
      end
    end
    false # Not included, thus we return false.
  end
end