Class: RBT::RegisterProgramFilesIntoGlobalDatabase

Inherits:
Base show all
Defined in:
lib/rbt/utility_scripts/register_program_files_into_global_database.rb

Overview

RBT::RegisterProgramFilesIntoGlobalDatabase

Constant Summary collapse

YAML_DATABASE_INSTALLED_FILES =
#

YAML_DATABASE_INSTALLED_FILES

#
"#{YAML_DATABASE_DIRECTORY}Database_InstalledFiles.yml"

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 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_options, #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_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_opn, #no_such_file_exists, #open_in_browser, #open_in_editor, #opncomment, #opne, #opnef, #opnerev, #opnerror, #opnesystem, #opnewarn, #opnfancy, #opnn, #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_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_information, #return_program_name_for_gobolinux_systems, #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, #run_simulation=, #run_simulation?, #sdir, #sdir_return_pwd, #set_be_silent, #set_be_verbose, #set_first_commandline_argument, #set_namespace, #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(program = nil, run_already = true) ⇒ RegisterProgramFilesIntoGlobalDatabase

#

initialize

#


34
35
36
37
38
39
40
41
# File 'lib/rbt/utility_scripts/register_program_files_into_global_database.rb', line 34

def initialize(
    program     = nil,
    run_already = true
  )
  reset
  set_program(program)
  run if run_already
end

Class Method Details

.show_registered_keysObject

#

RBT::RegisterProgramFilesIntoGlobalDatabase.show_registered_keys

#


238
239
240
# File 'lib/rbt/utility_scripts/register_program_files_into_global_database.rb', line 238

def self.show_registered_keys
  new.show_registered_keys
end

Instance Method Details

#load_yaml_databaseObject

#

load_yaml_database

#


128
129
130
131
132
# File 'lib/rbt/utility_scripts/register_program_files_into_global_database.rb', line 128

def load_yaml_database
  _ = "#{YAML_DATABASE_DIRECTORY}Database_InstalledFiles.yml"
  _ = YAML.load_file(_) if File.exist? _
  _
end

#program?Boolean

#

program?

#

Returns:

  • (Boolean)


77
78
79
# File 'lib/rbt/utility_scripts/register_program_files_into_global_database.rb', line 77

def program?
  @program
end

#register_this_program(program = program? ) ⇒ Object Also known as: register

#

register_this_program

This method registers a (single) program residing under the /Programs hierarchy into the yaml Database.

I recommend to give the absolute location as argument, but the short version should work as well.

#


178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
# File 'lib/rbt/utility_scripts/register_program_files_into_global_database.rb', line 178

def register_this_program(
    program = program?
  )
  if !program.include?('/')
    program = programs_dir?+program.capitalize+'/Current'
  end
  program = absolute_path(program)
  _ = "#{program}/InstalledFiles"
  unless File.exist? _
    _ = "#{program}yaml/registered_files.yml"
  end
  if File.exist? _ # something like "/Programs/Gif2apng/Current/InstalledFiles"
    _ = read_file(_)
    save_installed_files_into_yaml_database(_)
  else # if we do not have it, use another file.
    if Dir[program+'/*'].size > 1 # Assume that more than one file here 
                                  # means we installed something worthy.  
      # save_installed_files_information(program)
      current = program
      if File.symlink? current
        opnwarn '___ '+program
        current = File.readlink(program)
        if ! current.include? '/' # assume that we have a "Current -> 0.1.7" structure, rather than a "Current -> /Programs/Foo/0.17" structure.
          current = program.split('/')[0..-2].join('/') +'/'+current
        end
      end
      current << '/' unless current.end_with? '/' # append trailing /
      _ = "#{current}InstalledFiles"
      remove_file(_) # just to make sure.
      opne sfancy('Creating the file ')+
           sfile(_)+
           simp(' now.')
      array = Dir["#{current}**/*"]
      # =================================================================== #
      # Select only files next.
      # =================================================================== #
      array.select! {|f| File.file? f }
      create_file(_)
      append_what_into(array.join("\n"), _)
    end
  end
end

#resetObject

#

reset

#


46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/rbt/utility_scripts/register_program_files_into_global_database.rb', line 46

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @program
  # ======================================================================= #
  @program = 'htop' # ← Need a default program.
  # ======================================================================= #
  # === @debug
  # ======================================================================= #
  @debug = false
  # ======================================================================= #
  # === @run_simulation
  # ======================================================================= #
  @run_simulation = false
end

#runObject

#

run

#


231
232
233
# File 'lib/rbt/utility_scripts/register_program_files_into_global_database.rb', line 231

def run
  register_this_program
end

#save_installed_files_into_yaml_database(data) ⇒ Object

#

save_installed_files_into_yaml_database

Use this method to store info in our yaml Database. Note that we must first load the yaml file if it exists, before we can save new information.

Important:

The argument `data` must be an array listing which files will
be added to the yaml database.
#


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
# File 'lib/rbt/utility_scripts/register_program_files_into_global_database.rb', line 94

def save_installed_files_into_yaml_database(data)
  if @debug
    ewarn "DEBUG INFO FROM save_installed_files_into_yaml_database"
    cliner { pp data }
    pp "^^^^ check this data ..."
  end
  if data.empty?
    opnwarn 'For the program `'+simp(@program.to_s)+'` we found '\
            'an error: '+@program.to_s
    opnwarn '(Line '+__LINE__.to_s+') Sorry, dataset to the '\
            'method save_installed_files_into_yaml_database (data) '\
            'is empty.'
  end
  _ = YAML_DATABASE_INSTALLED_FILES
  if @run_simulation
    opne simp('We run in simulation mode, hence we will not save '\
         'the program into the yaml file ')+sfile('  '+_)+
         simp(' now')+'.'
  else
    hash = {}
    name = data.last
    name = name.split('/')[2,2].join('-').downcase if name # assume the name of the entry here.
    begin
      hash[name.strip] = data.map {|x| x.chomp} # we hate newlines, so get rid of them.
      save_into_yaml_file_after_permission_check(_, hash)
    rescue Exception => error
      opnn; pp error
    end
  end
end

#save_into_yaml_file_after_permission_check(this_file, hash) ⇒ Object

#

save_into_yaml_file_after_permission_check

#


137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/rbt/utility_scripts/register_program_files_into_global_database.rb', line 137

def save_into_yaml_file_after_permission_check(this_file, hash)
  if File.exist? this_file
    if File.writable? this_file
      opne simp('Saving into the yaml file ')
      opne sfile("  #{this_file}")
      opne simp('now.')
      # =================================================================== #
      # Load in the old stuff into our hash.
      # =================================================================== #
      if hash && File.exist?(this_file) # if it exists, load it.
        hash = hash.merge( load_yaml_database() ) if File.size(this_file) > 0
      end
      save_yaml(this_file, hash)
    else
      opnwarn 'You do not have sufficient permissions to modify '
      opne sfile("  #{this_file}")
    end
  else
    opne "The file `#{sfile(this_file)}#{rev}` does not exist."
    opne 'Please create it.'
  end
end

#save_yaml(into, what) ⇒ Object

#

save_yaml

#


224
225
226
# File 'lib/rbt/utility_scripts/register_program_files_into_global_database.rb', line 224

def save_yaml(into, what)
  write_what_into(what, into)
end

#set_program(i) ⇒ Object

#

set_program

This method will set the @program variable.

#


68
69
70
71
72
# File 'lib/rbt/utility_scripts/register_program_files_into_global_database.rb', line 68

def set_program(i)
  i = return_pwd if i.nil?
  i = absolute_path(i)
  @program = i
end

#show_registered_keysObject

#

show_registered_keys

#


163
164
165
166
167
# File 'lib/rbt/utility_scripts/register_program_files_into_global_database.rb', line 163

def show_registered_keys
  keys = load_yaml_database.keys
  opne 'The registered keys in our database are:'
  opne  '  [ "'+keys.join('", "')+'" ]'
end