Class: RBT::Cookbooks::ToggleKeepExtractedValue

Inherits:
Base show all
Defined in:
lib/rbt/cookbooks/toggle_keep_extracted_value.rb

Overview

RBT::Cookbooks::ToggleKeepExtractedValue

Constant Summary collapse

REGEX_TO_OBTAIN_THE_BOOLEAN_VALUE_FROM_KEEP_EXTRACTED =
#

REGEX_TO_OBTAIN_THE_BOOLEAN_VALUE_FROM_KEEP_EXTRACTED

#
/^ keep_extracted: (.+)$/

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

#

initialize

#


43
44
45
46
47
48
49
50
51
52
# File 'lib/rbt/cookbooks/toggle_keep_extracted_value.rb', line 43

def initialize(
    of_this_program = nil,
    run_already     = true
  )
  reset
  set_modify_this_program(
    of_this_program
  )
  run if run_already
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

RBT::Cookbooks::ToggleKeepExtractedValue[]

#


252
253
254
# File 'lib/rbt/cookbooks/toggle_keep_extracted_value.rb', line 252

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

Instance Method Details

#backup_the_old_fileObject

#

backup_the_old_file (backup tag)

#


221
222
223
224
225
226
227
228
229
230
231
# File 'lib/rbt/cookbooks/toggle_keep_extracted_value.rb', line 221

def backup_the_old_file
  _ = path?
  if File.exist? _
    new_target = "#{rbt_log_dir?}CookbookDirectory/#{File.basename(_)}"
    base_dir = File.dirname(new_target)
    silently_create_this_directory_if_it_does_not_yet_exist(base_dir)
    opne "#{rev}Now copying the #{orange('old')} #{rev}file "\
         "`#{sfile(_)}#{rev}` to `#{sfile(new_target)}#{rev}`."
    copy_file(_, new_target)
  end
end

#determine_the_path_to_the_yaml_file(i = return_location_to_this_programs_yaml_file(which_program?.delete('_-'))) ⇒ Object

#

determine_the_path_to_the_yaml_file

This method will determine the path to the yaml file. Normally this will be at the individual cookbooks directory, but sometimes the user may want to use another path; thus explains why this method here exists.

#


116
117
118
119
120
121
122
123
# File 'lib/rbt/cookbooks/toggle_keep_extracted_value.rb', line 116

def determine_the_path_to_the_yaml_file(
    i = return_location_to_this_programs_yaml_file(which_program?.delete('_-'))
  )
  if i.nil? # In this case, use a default value.
    i = return_location_to_this_programs_yaml_file(which_program?.delete('_-'))
  end
  @use_this_path_to_the_yaml_file = i
end

#do_modify_this_program(this_program = which_program? ) ⇒ Object

#

do_modify_this_program

This is the do-action, the powerhorse method of this class.

It will combine the logic that is required in order to toggle the given value at hand.

#


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
169
170
# File 'lib/rbt/cookbooks/toggle_keep_extracted_value.rb', line 133

def do_modify_this_program(
    this_program = which_program?
  )
  location = @use_this_path_to_the_yaml_file
  if File.exist? location
    dataset = File.read(location)
    if dataset =~ /^ keep_extracted: /
      # =================================================================== #
      # Ok, the .yml file has a keep_extracted value, so we can continue.
      # We will apply a regex to grab the line.
      # =================================================================== #
      use_this_regex = use_which_regex?
      dataset =~ use_this_regex
      bool_value = $1.to_s.dup
      complement_to_the_bool_value = find_the_boolean_complement_to(bool_value)
      new_dataset = dataset.sub(
        use_this_regex, ' keep_extracted: '+complement_to_the_bool_value
      )
      # =================================================================== #
      # Now we can store this dataset.
      # =================================================================== #
      store_this_dataset(new_dataset, location)
      if is_on_roebe?
        # ================================================================= #
        # Also store it on my home system:
        # ================================================================= #
        _ = DIRECTORY_INDIVIDUAL_COOKBOOKS_AT_ROEBE_HOME.dup
        location = _+File.basename(location)
        store_this_dataset(new_dataset, location)
      end
    else
      opne "#{rev}No entry for #{sfancy(' keep_extracted: ')} "\
           "#{rev}could be found."
    end
  else
    no_file_exists_at(location)
  end
end

#find_the_boolean_complement_to(i) ⇒ Object

#

find_the_boolean_complement_to

We honour the length - “f” will complement to “t”, and vice versa, and “false” will complement to “true”, and vice versa.

#


178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
# File 'lib/rbt/cookbooks/toggle_keep_extracted_value.rb', line 178

def find_the_boolean_complement_to(i)
  case i
  when 'f'
    't'
  when 't'
    'f'
  when 'false'
    'true'
  when 'true'
    'false'
  when 'yes'
    'no'
  when 'no'
    'yes'
  else
    e "Unhandled cased: #{steelblue(i.to_s)}"
  end
end

#modify_this_program?Boolean Also known as: modify_which_program?, which_program?

#

modify_this_program?

#

Returns:

  • (Boolean)


103
104
105
# File 'lib/rbt/cookbooks/toggle_keep_extracted_value.rb', line 103

def modify_this_program?
  @modify_this_program
end

#resetObject

#

reset (reset tag)

#


57
58
59
60
61
62
63
64
# File 'lib/rbt/cookbooks/toggle_keep_extracted_value.rb', line 57

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @use_this_path_to_the_yaml_file
  # ======================================================================= #
  @use_this_path_to_the_yaml_file = nil
end

#runObject

#

run (run tag)

#


236
237
238
239
240
241
242
243
244
245
246
247
# File 'lib/rbt/cookbooks/toggle_keep_extracted_value.rb', line 236

def run
  # ======================================================================= #
  # First, we must handle the case where the user provided no program name.
  # ======================================================================= #
  if modify_this_program?
    determine_the_path_to_the_yaml_file(@use_this_path_to_the_yaml_file)
    opne 'We will next attempt to toggle the '+
          orange('keep_extracted:')+' value'
    opne "#{rev}for the program #{sfancy(which_program?)}#{rev}."
    do_modify_this_program
  end
end

#set_modify_this_program(i = nil) ⇒ Object

#

set_modify_this_program

#


83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/rbt/cookbooks/toggle_keep_extracted_value.rb', line 83

def set_modify_this_program(i = nil)
  i = i.first if i.is_a? Array
  if i.nil?
    opne "#{rev}Please provide the #{simp('name of a program')} "\
         "#{rev}to this method."
  end
  i = i.to_s.dup unless i.nil?
  @modify_this_program = i
  if i and File.exist?(i)
    # ===================================================================== #
    # This entry point exists when the user input the location to
    # a real (local) file.
    # ===================================================================== #
    determine_the_path_to_the_yaml_file(@modify_this_program)
  end
end

#store_this_dataset(what, into = which_program? ) ⇒ Object

#

store_this_dataset

This method can be used to store the dataset into a file.

We will, however had, keep a backup file too.

#


204
205
206
207
208
209
210
211
212
213
214
215
216
# File 'lib/rbt/cookbooks/toggle_keep_extracted_value.rb', line 204

def store_this_dataset(
    what,
    into = which_program?
  )
  unless into.end_with? '.yml'
    into = into.dup if into.frozen?
    into << '.yml'
  end
  backup_the_old_file
  opne "#{steelblue('Storing the new dataset')} #{rev}into "\
       "the file `#{sfile(into)}#{rev}`."
  write_what_into(what, into)
end

#use_this_path_to_the_yaml_file?Boolean Also known as: path?

#

use_this_path_to_the_yaml_file?

#

Returns:

  • (Boolean)


69
70
71
# File 'lib/rbt/cookbooks/toggle_keep_extracted_value.rb', line 69

def use_this_path_to_the_yaml_file?
  @use_this_path_to_the_yaml_file
end

#use_which_regex?Boolean

#

use_which_regex?

#

Returns:

  • (Boolean)


76
77
78
# File 'lib/rbt/cookbooks/toggle_keep_extracted_value.rb', line 76

def use_which_regex?
  REGEX_TO_OBTAIN_THE_BOOLEAN_VALUE_FROM_KEEP_EXTRACTED
end