Class: RBT::Action::Prefix

Inherits:
Base show all
Defined in:
lib/rbt/actions/individual_actions/prefix/prefix.rb

Overview

RBT::Action::Prefix

Constant Summary collapse

USR_PREFIX =
#

USR_PREFIX

#
'/usr/'
DEFAULT_PREFIX =

This is the default prefix.

USR_PREFIX

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, #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(optional_use_this_program_name = nil, run_already = true, &block) ⇒ Prefix

#

initialize

#


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 39

def initialize(
    optional_use_this_program_name = nil,
    run_already                    = true,
    &block
  )
  reset # Must always come first.
  if optional_use_this_program_name
    set_original_input(optional_use_this_program_name)
    set_program(optional_use_this_program_name)
  end
  # ======================================================================== #
  # === Handle blocks given to this method next
  # ======================================================================== #
  if block_given?
    yielded = yield
    case yielded
    # ====================================================================== #
    # === :ntrad
    # ====================================================================== #
    when :ntrad
      set_prefix(:ntrad)
    else
      run if run_already
    end
  else
    run if run_already
  end
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

RBT::Action::Prefix[]

#


399
400
401
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 399

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

.prefix?(i = nil) ⇒ Boolean

#

RBT::Prefix.prefix?

#

Returns:

  • (Boolean)


406
407
408
409
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 406

def self.prefix?(i = nil)
  _ = new(i)
  _.prefix? # Return value.
end

Instance Method Details

#<<(i) ⇒ Object

#

<<

#


289
290
291
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 289

def <<(i)
  @internal_hash[:prefix] << i
end

#_Boolean

#

prefix?

This query-method will output the prefix to use.

#

_

Returns:

  • (Boolean)


387
388
389
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 387

def prefix?
  @internal_hash[:prefix].to_s
end

#assign_prefix(i) ⇒ Object Also known as: assign_prefix=, use_this_prefix, set_use_this_prefix

#

assign_prefix

Simply assign the prefix, without any further checking.

#


341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 341

def assign_prefix(i)
  case i
  # ======================================================================= #
  # === :default
  # ======================================================================= #
  when :default,
       :default_prefix,
       nil
    i = DEFAULT_PREFIX
  end
  i = i.dup if i.frozen?
  i.strip!
  i << '/' unless i.end_with? '/'
  @internal_hash[:prefix] = i
end

#clear_programObject

#

clear_program

#


190
191
192
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 190

def clear_program
  @internal_hash[:program_name] = nil
end

#determine_the_prefix_anewObject Also known as: use_this_as_the_new_prefix=

#

determine_the_prefix_anew

#


362
363
364
365
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 362

def determine_the_prefix_anew
  _ = "#{programs_dir?}#{program_name?.capitalize}/#{program_version?}/"
  set_use_this_prefix(_)
end

#do_we_want_to_use_an_appdir_prefix?Boolean

#

do_we_want_to_use_an_appdir_prefix?

#

Returns:

  • (Boolean)


93
94
95
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 93

def do_we_want_to_use_an_appdir_prefix?
  @internal_hash[:do_we_want_to_use_an_appdir_prefix]
end

#eliminate_hyphensObject

#

eliminate_hyphens

#


197
198
199
200
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 197

def eliminate_hyphens
  program_name?.delete!('-')
  use_non_traditional_prefix # Also sync towards @internal_hash[:prefix] here.
end

#empty?Boolean

#

empty?

#

Returns:

  • (Boolean)


117
118
119
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 117

def empty?
  @internal_hash[:prefix].empty?
end

#end_with?(i) ⇒ Boolean

#

end_with?

Determine whether our prefix ends with a specific string.

#

Returns:

  • (Boolean)


133
134
135
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 133

def end_with?(i)
  @internal_hash[:prefix].end_with? i
end

#include?(i) ⇒ Boolean

#

include?

Use this to query whether we include a string.

#

Returns:

  • (Boolean)


142
143
144
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 142

def include?(i)
  @internal_hash[:prefix].include? i
end

#is_an_appdir_prefix?Boolean Also known as: makes_use_of_an_appdir_prefix?, appdir?

#

is_an_appdir_prefix?

#

Returns:

  • (Boolean)


296
297
298
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 296

def is_an_appdir_prefix?
  prefix?.start_with?(program_directory?)
end

#prefix?Boolean

#

prefix?

This query-method will output the prefix to use.

#

Returns:

  • (Boolean)


381
382
383
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 381

def prefix?
  @internal_hash[:prefix].to_s
end

#program_name?Boolean Also known as: program?

#

program_name?

#

Returns:

  • (Boolean)


176
177
178
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 176

def program_name?
  @internal_hash[:program_name]
end

#program_name_and_program_version?Boolean

#

program_name_and_program_version?

#

Returns:

  • (Boolean)


258
259
260
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 258

def program_name_and_program_version?
  "#{program_name?}-#{program_version?}"
end

#program_version?Boolean

#

program_version?

#

Returns:

  • (Boolean)


183
184
185
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 183

def program_version?
  @internal_hash[:program_version]
end

#queryBoolean

#

prefix?

This query-method will output the prefix to use.

#

query

Returns:

  • (Boolean)


386
387
388
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 386

def prefix?
  @internal_hash[:prefix].to_s
end

#resetObject

#

reset (reset tag)

#


71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 71

def reset
  super()
  infer_the_namespace
  set_be_quiet
  # ======================================================================= #
  # === :prefix
  # ======================================================================= #
  set_prefix(nil) # nil initially. This is our prefix variable.
  set_program
  set_program_version
  # ======================================================================= #
  # === :do_we_want_to_use_an_appdir_prefix
  #
  # We want to be able to store here whether an AppDir prefix is to
  # be used.
  # ======================================================================= #
  @internal_hash[:do_we_want_to_use_an_appdir_prefix] = false
end

#return_non_traditional_prefix(i = program_name_and_program_version? ) ⇒ Object Also known as: do_use_appdir_prefix_from_this_input

#

return_non_traditional_prefix

This method will return a proper non-traditional prefix.

#


314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 314

def return_non_traditional_prefix(
    i = program_name_and_program_version?
  )
  program_information = ::ProgramInformation::ProgramInformation.new(
    i,
    true,
    be_verbose?
  ) # bl $RUBY_COOKBOOKS/lib/cookbooks/program_information.rb
  name    = program_information.name.to_s.capitalize.delete('-_').capitalize
  version = program_information.version
  i = "#{programs_dir?}#{name}/#{version}/".dup # This has the version name
  # ======================================================================= #
  # Ensure that it will always have a trailing '/' token.
  # ======================================================================= #
  i << '/' unless i.end_with? '/'
  # ======================================================================= #
  # As of May 2014 we get rid of all '-'.
  # ======================================================================= #
  i.delete!('-') if i.include? '-'
  return i # This here should usually return a string like "/Programs/Htop/1.1.0"
end

#runObject

#

run (run tag)

#


392
393
394
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 392

def run
  set_prefix
end

#set_original_input(i) ⇒ Object

#

set_original_input

#


124
125
126
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 124

def set_original_input(i)
  @internal_hash[:original_input] = i.to_s.dup
end

#set_prefix(i = program_name? ) ⇒ Object Also known as: prefix=, rebuild_prefix, update, set_new_prefix

#

set_prefix

This methods assigns to the instance variable @internal_hash which keeps the prefix in use. The prefix instance variable is stored in the variable @internal_hash.

Input should include the version, i.e. “htop-1.0” would be a proper input.

#


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
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 212

def set_prefix(
    i = program_name?
  )
  case i.to_s # case tag
  # ======================================================================= #
  # === gobolinux
  #
  # This entry point essentially means "make use of an AppDir-like prefix.
  # ======================================================================= #
  when 'gobolinux',
       'gobolinux_prefix',
       'ntrad',
       'false',
       'default',
       'app_dir_like',
       /^app(_|-)?dir/
    we_will_use_an_appdir_prefix
    i = return_non_traditional_prefix(
      program_name_and_program_version?
    ).to_s # defined in this file here.
    # ===================================================================== #
    # As of May 2014 we get rid of all '-'
    # ===================================================================== #
    i.delete!('-') if i.include?('-')
  # ======================================================================= #
  # === true
  # ======================================================================= #
  when 'true',
       't',
       'trad',
       'traditional',
       'tra',
       'def' # True means "usr" prefix.
    i = USR_PREFIX
  else # Else default to USR_PREFIX.
    # i = USR_PREFIX
  end
  assign_prefix(i) if i # Now, simply assign it here.
end

#set_program_name(i = nil) ⇒ Object Also known as: set_program, assign

#

set_program_name

Use this method to set the instance variable @internal_hash.

It shall be kept like that. The input can contain a ‘-’.

#


153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 153

def set_program_name(i = nil)
  case i
  # ======================================================================= #
  # === :traditional
  # ======================================================================= #
  when :traditional,
       :trad
    set_prefix(i)
    i = nil
  # ======================================================================= #
  # === :nontrad
  # ======================================================================= #
  when :nontrad,
       :ntrad
    we_will_use_an_appdir_prefix
  end
  @internal_hash[:program_name] = i # Can contain something like htop.
end

#set_program_version(i = '1.0.0') ⇒ Object

#

set_program_version

#


370
371
372
373
374
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 370

def set_program_version(
    i = '1.0.0'
  )
  @internal_hash[:program_version] = i
end

#strip!Object

#

strip!

#


282
283
284
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 282

def strip!
  @internal_hash[:prefix].strip!
end

#sub!(old, new) ⇒ Object

#

sub!

#


110
111
112
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 110

def sub!(old, new)
  @internal_hash[:prefix].sub!(old, new)
end

#sync_cookbook_dataset_program_version_onto_the_prefix_objectObject

#

sync_cookbook_dataset_program_version_onto_the_prefix_object

#


265
266
267
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 265

def sync_cookbook_dataset_program_version_onto_the_prefix_object
  use_non_traditional_prefix
end

#text?Boolean

#

prefix?

This query-method will output the prefix to use.

#

text?

Returns:

  • (Boolean)


385
386
387
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 385

def prefix?
  @internal_hash[:prefix].to_s
end

#to_sBoolean

#

prefix?

This query-method will output the prefix to use.

#

to_s

Returns:

  • (Boolean)


384
385
386
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 384

def prefix?
  @internal_hash[:prefix].to_s
end

#to_strBoolean

#

prefix?

This query-method will output the prefix to use.

#

to_str

Returns:

  • (Boolean)


383
384
385
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 383

def prefix?
  @internal_hash[:prefix].to_s
end

#use_appdir_prefix_for_this_program(i) ⇒ Object

#

use_appdir_prefix_for_this_program

#


304
305
306
307
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 304

def use_appdir_prefix_for_this_program(i)
  set_program(i)
  set_prefix(:ntrad)
end

#use_non_traditional_prefixObject Also known as: gobolinux_prefix, enable_non_traditional_compilation

#

use_non_traditional_prefix

This method will assign to a non-traditional (gobolinux) prefix.

#


274
275
276
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 274

def use_non_traditional_prefix
  set_prefix(:gobolinux)
end

#we_will_use_an_appdir_prefixObject Also known as: do_use_appdir_prefix

#

we_will_use_an_appdir_prefix

This method can be used to determine that an app-dir prefix is to be used.

#


103
104
105
# File 'lib/rbt/actions/individual_actions/prefix/prefix.rb', line 103

def we_will_use_an_appdir_prefix
  @internal_hash[:do_we_want_to_use_an_appdir_prefix] = true
end