Class: RBT::Action::AggregateInformationFromTheExpandedCookbooks

Inherits:
RBT::Action show all
Defined in:
lib/rbt/actions/individual_actions/information/aggregate_information_from_the_expanded_cookbooks.rb

Overview

RBT::Action::AggregateInformationFromTheExpandedCookbooks

Constant Summary collapse

STORE_THE_NEW_YAML_FILE_HERE =
#

STORE_THE_NEW_YAML_FILE_HERE

Since as of August 2022 we use a dedicated, separate directory for storing the .yml file. Before tha twe stored into the expanded cookbook directory directly, and this caused subsequent scripts to struggle as old assumptions such as “one .yml file per expanded cookbook dataset” in the given directory was no longer correct.

#
"#{RBT.log_directory?}"\
"expanded_cookbook_dataset_from_all_programs/expanded_cookbook_dataset_from_all_programs.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 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, #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_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(i = ARGV, run_already = true, &block) ⇒ AggregateInformationFromTheExpandedCookbooks

#

initialize

#


51
52
53
54
55
56
57
58
59
# File 'lib/rbt/actions/individual_actions/information/aggregate_information_from_the_expanded_cookbooks.rb', line 51

def initialize(
    i           = ARGV,
    run_already = true,
    &block
  )
  reset
  set_commandline_arguments(i)
  run if run_already
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

RBT::Action::AggregateInformationFromTheExpandedCookbooks[]

#


161
162
163
# File 'lib/rbt/actions/individual_actions/information/aggregate_information_from_the_expanded_cookbooks.rb', line 161

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

Instance Method Details

#hash?Boolean

#

hash?

#

Returns:

  • (Boolean)


78
79
80
# File 'lib/rbt/actions/individual_actions/information/aggregate_information_from_the_expanded_cookbooks.rb', line 78

def hash?
  @hash
end

#is_the_main_hash_empty?Boolean

#

is_the_main_hash_empty?

#

Returns:

  • (Boolean)


118
119
120
# File 'lib/rbt/actions/individual_actions/information/aggregate_information_from_the_expanded_cookbooks.rb', line 118

def is_the_main_hash_empty?
  @hash.empty?
end

#load_up_the_existing_dataset(from_here = STORE_THE_NEW_YAML_FILE_HERE) ⇒ Object

#

load_up_the_existing_dataset

This method can be used to load the existing dataset from a .yml file that has been generated before.

#


109
110
111
112
113
# File 'lib/rbt/actions/individual_actions/information/aggregate_information_from_the_expanded_cookbooks.rb', line 109

def load_up_the_existing_dataset(
    from_here = STORE_THE_NEW_YAML_FILE_HERE
  ) 
  @hash = YAML.load_file(from_here)
end

#resetObject

#

reset (reset tag)

#


64
65
66
67
68
69
70
71
72
73
# File 'lib/rbt/actions/individual_actions/information/aggregate_information_from_the_expanded_cookbooks.rb', line 64

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @hash
  #
  # This is our main Hash storing everything. \o/
  # ======================================================================= #
  @hash = {}
end

#runObject

#

run (run tag)

#


143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/rbt/actions/individual_actions/information/aggregate_information_from_the_expanded_cookbooks.rb', line 143

def run
  _ = directory_expanded_cookbooks?
  if File.directory? _
    work_through_the_cookbook_dataset_found_in_this_directory(_)
    if is_the_main_hash_empty?
      opne "Unfortunately no entries could be found."
      opne "#{rev}Is the directory at #{sdir(_)} #{rev}empty?"
    else
      store_the_big_hash_into_a_new_yaml_file
    end
  else
    opnn; no_file_exists_at(_)
  end
end

#store_the_big_hash_into_a_new_yaml_fileObject

#

store_the_big_hash_into_a_new_yaml_file

#


125
126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/rbt/actions/individual_actions/information/aggregate_information_from_the_expanded_cookbooks.rb', line 125

def store_the_big_hash_into_a_new_yaml_file
  e "#{rev}Next storing this big hash ("+
    "#{@hash.keys.size.to_s}#{rev}) in a new .yml file."
  what = YAML.dump(@hash)
  into = STORE_THE_NEW_YAML_FILE_HERE
  unless File.dirname(into)
    mkdir(into) { :be_quiet }
  end
  e 'The specific file will stored here:'
  e
  e sfile("  #{into}")
  e
  write_what_into(what, into)
end

#work_through_the_cookbook_dataset_found_in_this_directory(i) ⇒ Object

#

work_through_the_cookbook_dataset_found_in_this_directory

#


85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/rbt/actions/individual_actions/information/aggregate_information_from_the_expanded_cookbooks.rb', line 85

def work_through_the_cookbook_dataset_found_in_this_directory(i)
  opnn { :no_trailing }
  e
  e
  e "#{rev}Obtaining all entries from"
  e "#{rev}  #{sdir(i)}"
  e "#{rev}next - this may take a while."
  all_entries = Dir["#{i}*.yml"]
  all_entries.each {|this_yaml_file|
    name_of_the_program = File.basename(this_yaml_file).
                               sub(/#{File.extname(this_yaml_file)}$/,'')
    dataset = YAML.load_file(this_yaml_file)
    new_hash = {}
    new_hash[name_of_the_program] = dataset
    @hash.update(new_hash)
  }
end