Class: RBT::Cookbooks::ScanForMissingLastUpdateEntries

Inherits:
Base show all
Defined in:
lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb

Overview

RBT::Cookbooks::ScanForMissingLastUpdateEntries

Constant Summary collapse

SHALL_WE_EXIT_WHEN_ENCOUNTERING_PROBLEMS =
#

SHALL_WE_EXIT_WHEN_ENCOUNTERING_PROBLEMS

#
true

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_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(i = nil, run_already = true) ⇒ ScanForMissingLastUpdateEntries

#

initialize

#


34
35
36
37
38
39
40
41
42
43
44
# File 'lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb', line 34

def initialize(
    i           = nil,
    run_already = true
  )
  register_sigint
  reset
  set_input(
    i
  )
  run if run_already
end

Instance Method Details

#backup_this_file(i) ⇒ Object

#

backup_this_file

This will store into /Depot/Temp/BackupForCookbooks/

#


174
175
176
177
178
179
180
181
# File 'lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb', line 174

def backup_this_file(i)
  from_here = individual_cookbooks_directory?+File.basename(i)
  _ = rbt_log_dir?+'BackupForCookbooks/'
  mkdir(_) unless Dir.exist? _
  to_there = _+File.basename(i)
  opne 'We will backup the file '+sfile(i)+' to `'+sfile(to_there)+'`.'
  copy_file(from_here, to_there)
end

#do_scanObject

#

do_scan

#


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
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
# File 'lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb', line 186

def do_scan
  all_programs?.each {|program|
    program.downcase!
    _ = return_location_to_this_programs_yaml_file(program)
    if File.exist? _ # Ok, the file exists.
      begin
        dataset = YAML.load_file(_)
      rescue ArgumentError => error
        e 'An ArgumentError happened for the program `'+
          sfancy(program.to_s)+'`.'
        pp error
        e 'Please fix this.'
        exit
      end
      if dataset.nil?
        e 'Some problem was found for the file '+sfile(_)+'.'
      end
      program = program.to_s
      # =================================================================== #
      # Check whether the variable program still ends with '.yml'.
      # If so we chop this part away.
      # =================================================================== #
      if program.end_with? '.yml'
        program.sub!(/\.yml$/,'')
      end
      last_update = dataset[program] # ['last_update:']
      if last_update
        if last_update.has_key? 'last_update'
        else
          if @input.nil?
            opne "#{rev}A problem with #{sfancy(program.to_s)}#{rev}."
            opne rev+'Showcasing the data-structure:'
            pp last_update
            pp last_update.class
          end
          if @input
            opnn unless @input.include? 'besilent'
          end
          _ = File.basename(_)
          @array_with_the_results << _
          display_this_string = sfancy(_)
          if @input
            unless @input.include? 'besilent'
              display_this_string << ' has no last_update entry.'
            end
          end
          e display_this_string
          if fix_missing_entries?
            fix_this_missing_entry(_) # Fix this wrongful information.
          end
        end
      else
        opne rev+'Something went wrong for `'+simp(program.to_s)+rev+'`.'
        opne rev+'We could not find an entry called '+sfancy('last_update:')
        opne rev+'We will display the faulty dataset next.'
        cliner { pp dataset }
        if SHALL_WE_EXIT_WHEN_ENCOUNTERING_PROBLEMS
          opne 'Exiting now, as requested by the constant'
          opnn; efancy 'SHALL_WE_EXIT_WHEN_ENCOUNTERING_PROBLEMS.'
          exit
        end
      end
    else
      opne "The file at #{sfile(_)} does not exist. Exiting now."
      exit
    end
  }
end

#fix_missing_entries?Boolean

#

fix_missing_entries?

#

Returns:

  • (Boolean)


143
144
145
# File 'lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb', line 143

def fix_missing_entries?
  @fix_missing_entries
end

#fix_this_missing_entry(i) ⇒ Object

#

fix_this_missing_entry

Use this method to fix a wrongful entry among the individual cookbook entries.

#


128
129
130
131
132
133
134
135
136
137
138
# File 'lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb', line 128

def fix_this_missing_entry(i)
  i = individual_cookbooks_directory?+File.basename(i)
  what = N+' last_update: '+return_proper_time
  opne rev+'We will next append `'+simp(what.delete(N))+rev+
       '` into the file at: `'+sfile(temp_directory?+File.basename(i))+
       rev+'`.'
  backup_this_file(i)
  copy_file(i, temp_directory?)
  into = temp_directory?+File.basename(i)
  append_what_into(what, into)
end
#

menu

#


150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# File 'lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb', line 150

def menu(
    i = @input
  )
  case i # case tag
  # ======================================================================= #
  # === scanmissing --help
  # ======================================================================= #
  when /^-?-?help?$/i,
       'he'
    show_help
    exit
  # ======================================================================= #
  # === scanmissing --fix
  # ======================================================================= #
  when /FIX/,/-?-?fix/ # FIX_ALL
    @fix_missing_entries = true
  end
end

#report_how_many_programs_are_missing_the_last_update_entryObject

#

report_how_many_programs_are_missing_the_last_update_entry

#


88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb', line 88

def report_how_many_programs_are_missing_the_last_update_entry
  opne "We have a total of #{sfancy(results?.size.to_s)}"\
       " #{rev}programs without a #{swarn('last_update: entry')}."
  if results?.size.to_i == 0
    opne 'Excellent! That means that all cookbook files are valid,'
    opne rev+"in regards to the #{sfancy('last_update tag')}#{rev}. "+
         gold(return_cheering_person)
    e
    e rev+'The directory that was checked for this was the following one:'
    e
    e "  #{sdir(individual_cookbooks_directory?)}"
    e 
  end
end

#resetObject

#

reset (reset tag)

#


49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb', line 49

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @array_with_the_results
  # ======================================================================= #
  @array_with_the_results = []
  # ======================================================================= #
  # === @fix_missing_entries
  #
  # By default we will not auto-fix flawed entries.
  # ======================================================================= #
  @fix_missing_entries = false
end

#results?Boolean

#

results?

#

Returns:

  • (Boolean)


106
107
108
# File 'lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb', line 106

def results?
  @array_with_the_results
end

#return_proper_timeObject

#

return_proper_time

This will return a string such as:

"Apr 2014"
#


118
119
120
# File 'lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb', line 118

def return_proper_time
  Date::MONTHNAMES[Date.today.month]+Time.now.strftime(' %Y')
end

#runObject

#

run (run tag)

#


271
272
273
274
275
276
# File 'lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb', line 271

def run
  check_against_menu
  do_scan # Do the scan part now.
  report_how_many_programs_are_missing_the_last_update_entry # We finally report how many "faulty" programs we have discovered.
  try_to_show_problematic_programs
end

#set_input(i = '') ⇒ Object

#

set_input

#


67
68
69
70
71
72
73
74
# File 'lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb', line 67

def set_input(i = '')
  i = i.first if i.is_a? Array
  if i
    i = i.to_s.dup
    i = i.delete('_')
  end
  @input = i
end

#show_helpObject

#

show_help

#


79
80
81
82
83
# File 'lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb', line 79

def show_help # help tag
  e
  opnn; ecomment ' FIX # Use this to fix wrongful entries'
  e
end

#try_to_show_problematic_programsObject

#

try_to_show_problematic_programs

#


258
259
260
261
262
263
264
265
266
# File 'lib/rbt/checks_and_validations/scan_for_missing_last_update_entries.rb', line 258

def try_to_show_problematic_programs
  _ = results?
  unless _.empty?
    _.each {|this_program|
      opne "#{rev}This program has a problematic last_entry: "\
           "#{sfancy(this_program)}"
    }
  end
end