Class: RBT::Cookbooks::UpdateKdePlasma

Inherits:
CheckForRemoteWebpages show all
Defined in:
lib/rbt/check_for_updates/update_kde_plasma.rb

Overview

RBT::Cookbooks::UpdateKdePlasma

Constant Summary

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 CheckForRemoteWebpages

#add_these_programs_were_updated, #array_these_programs_were_updated?, #commandline_size_query_was_issued?, #correct_for_common_mistakes_in_program_names, #dataset?, #distrowatch_url?, #do_use_wget, #ensure_download_mode_is_system_wget_from_now_on, #menu, #notify_the_user_that_no_downloads_have_occurred, #obtain_dataset_from_the_remote_webpage, #report_that_these_programs_were_updated, #report_the_remote_webpage, #return_local_version_of_this_program, #show_help, #that_remote_URL_should_be_at, #update_entry, #use_wget?

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

#

initialize

#


28
29
30
31
32
33
34
35
36
37
# File 'lib/rbt/check_for_updates/update_kde_plasma.rb', line 28

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

Class Method Details

.[](i = '') ⇒ Object

#

RBT::Cookbooks::UpdateKdePlasma[]

#


183
184
185
# File 'lib/rbt/check_for_updates/update_kde_plasma.rb', line 183

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

Instance Method Details

#decide_what_to_do_nextObject

#

decide_what_to_do_next

The first variant can be invoked via:

KDE_Plasma --size
#


82
83
84
85
86
87
88
89
# File 'lib/rbt/check_for_updates/update_kde_plasma.rb', line 82

def decide_what_to_do_next
  if commandline_size_query_was_issued?
    opne "There are #{sfancy(@scanned_results.size)} remote "\
         "KDE Plasma programs."
  else # else, enter the default "modus operandi".
    iterate_through_the_results_and_update_old_cookbooks_entries
  end
end

#iterate_through_the_results_and_update_old_cookbooks_entriesObject

#

iterate_through_the_results_and_update_old_cookbooks_entries

This will go over the dataset stored in @scanned_results, to then check on the program given there.

#


112
113
114
115
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/check_for_updates/update_kde_plasma.rb', line 112

def iterate_through_the_results_and_update_old_cookbooks_entries
  @scanned_results.each {|this_program| # ← That variable is e. g. 'plasma-vault-5.11.0'
    name_of_the_program, program_version = ::ProgramInformation.return_array_program_name_and_program_version(this_program)
    # ===================================================================== #
    # Next, we must compare it to the local dataset.
    # ===================================================================== #
    local_dataset = new_cookbook_instance_for(name_of_the_program)
    local_program_version = local_dataset.program_version?
    if local_program_version.nil?
      e
      e tomato('nil-value for ')+
        sfancy(name_of_the_program)+
        ' - the local_program_version was nil.'
      e
    elsif program_version.nil?
      e
      e tomato('nil-value for ')+
        sfancy(name_of_the_program)+
        ' - the program_version was nil.'
      e
    end
    shall_we_download_the_program = local_program_version < program_version
    shall_we_download_the_program = true if @download_the_program_without_any_additional_checks
    if shall_we_download_the_program
      # =================================================================== #
      # In this case, we have to update.
      # =================================================================== #
      @downloaded_n_programs += 1
      opne "#{rev}There is a more recent program version "\
           "available for `#{sfancy(name_of_the_program)}`."
      full_remote_url = remote_download_url?.dup
      full_remote_url << '/' unless full_remote_url.end_with? '/'
      full_remote_url << "#{program_version}/#{this_program}.tar.xz"
      that_remote_URL_should_be_at(full_remote_url)
      colourized_result = slateblue(
        "class RBT::UpdateEntry.new(#{full_remote_url})"
      )
      opne "Now delegating towards #{colourized_result}."
      update_entry(full_remote_url)
      # =================================================================== #
      # Keep track of which programs were updated:
      # =================================================================== #
      add_these_programs_were_updated(
        remove_archive_from_the_end(
          File.basename(full_remote_url)
        )
      )
    end
  }
  if @downloaded_n_programs == 0
    notify_the_user_that_no_downloads_have_occurred
  else
    report_that_these_programs_were_updated(
      array_these_programs_were_updated?
    )
  end
end

#main_url?Boolean Also known as: remote_url?, remote_webpage?, remote_website?

#

main_url?

#

Returns:

  • (Boolean)


61
62
63
# File 'lib/rbt/check_for_updates/update_kde_plasma.rb', line 61

def main_url?
  REMOTE_URL_FOR_KDE_PLASMA # ← e. g. "https://www.kde.org/info/plasma-5.13.5.php"
end

#remote_download_url?Boolean

#

remote_download_url?

#

Returns:

  • (Boolean)


70
71
72
# File 'lib/rbt/check_for_updates/update_kde_plasma.rb', line 70

def remote_download_url?
  REMOTE_DOWNLOAD_URL_FOR_KDE_PLASMA # => e. g. "https://download.kde.org/stable/plasma/"
end

#resetObject

#

reset (reset tag)

#


42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/rbt/check_for_updates/update_kde_plasma.rb', line 42

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @download_the_program_without_any_additional_checks
  #
  # If the following instance variable is set to true then we will
  # download the remote program anyway, without any additional
  # checks.
  #
  # By default this is set to false, but for debugging I may
  # sometimes set this to true.
  # ======================================================================= #
  @download_the_program_without_any_additional_checks = false
end

#runObject

#

run (run tag)

#


173
174
175
176
177
178
# File 'lib/rbt/check_for_updates/update_kde_plasma.rb', line 173

def run
  report_the_remote_webpage
  obtain_remote_dataset
  scan_for_all_results
  decide_what_to_do_next
end

#scan_for_all_resultsObject

#

scan_for_all_results

#


94
95
96
97
98
99
100
101
102
103
104
# File 'lib/rbt/check_for_updates/update_kde_plasma.rb', line 94

def scan_for_all_results
  # ======================================================================= #
  # See this entry for the following regex:
  #
  #   https://rubular.com/r/KsMYvnkFWk
  #
  # ======================================================================= #
  use_this_regex =
    /<td><a href="(http:\/\/download.kde.org\/stable\/plasma\/\d{0,1}.\d{0,2}.\d{0,2}\/)?(.+)\.tar\.xz">\D.+<\/a>/
  @scanned_results = @dataset.scan(use_this_regex).flatten.compact
end