Class: RBT::Action::ToCurrent
- Inherits:
-
RBT::Action
show all
- Defined in:
- lib/rbt/actions/individual_actions/to_current/to_current.rb
Overview
Constant Summary
LeanPrototype::ALL_COLOUR_METHODS, LeanPrototype::ARRAY_KDE_KONSOLE_COLOURS_IN_USE, LeanPrototype::DAY_NAMES, LeanPrototype::NAMESPACE, LeanPrototype::SILENT_REDIRECTION
Class Method Summary
collapse
-
.[](i = ARGV) ⇒ Object
# === RBT::Action::ToCurrent[] ========================================================================= #.
Instance Method Summary
collapse
#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(program_version = nil, run_already = true) ⇒ ToCurrent
#
initialize
The input to this method should be a String such as “/Programs/Python/3.6.2/”.
#
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
67
68
69
70
71
72
73
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 42
def initialize(
program_version = nil,
run_already = true
)
reset
set_symlink_this_program_version(program_version.dup)
if block_given?
yielded = yield
case yielded
when :do_not_register
@internal_hash[:also_do_register_into_the_yaml_database] = false
else
if yielded.is_a? Hash
if yielded.has_key? :use_this_symlink_program_instance
set_symlink_program(
yielded.delete(:use_this_symlink_program_instance)
)
end
end
end
end
run if run_already
end
|
Class Method Details
.[](i = ARGV) ⇒ Object
#
RBT::Action::ToCurrent[]
#
312
313
314
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 312
def self.[](i = ARGV)
new(i)
end
|
Instance Method Details
#also_do_register_into_the_yaml_database? ⇒ Boolean
#
also_do_register_into_the_yaml_database?
#
297
298
299
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 297
def also_do_register_into_the_yaml_database?
@internal_hash[:also_do_register_into_the_yaml_database]
end
|
#considering_deleting_the_current_symlink_if_it_exists ⇒ Object
#
considering_deleting_the_current_symlink_if_it_exists
#
213
214
215
216
217
218
219
220
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 213
def considering_deleting_the_current_symlink_if_it_exists
_ = current_target? if File.symlink? _
orev "There already is a symlink at `#{sfile(_)}#{rev}`. "\
"It will be removed next."
delete(_)
end
end
|
#current_target? ⇒ Boolean
#
current_target?
This method will assemble the target residing under the /Programs hierarchy.
#
248
249
250
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 248
def current_target?
"#{programs_dir?}#{program_name?}/Current"
end
|
#do_create_the_new_symlink ⇒ Object
#
do_create_the_new_symlink
#
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 225
def do_create_the_new_symlink
_ = current_target? orev "Creating a new symlink at `#{sfile(_)}#{rev}`."
new_target = full_program_version_target?
orev "This symlink will point towards `#{sfile(new_target)}#{rev}`."
if File.directory? new_target
symlink(program_version?, _)
rnsymc(new_target)
end
end
|
#full_program_version_target? ⇒ Boolean
#
full_program_version_target?
This method is assumed to point to a directory.
#
268
269
270
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 268
def full_program_version_target?
"#{programs_dir?}#{program_name?.capitalize}/#{program_version?}/"
end
|
#infer_the_program_version ⇒ Object
#
infer_the_program_version
#
255
256
257
258
259
260
261
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 255
def infer_the_program_version
_ = Dir[programs_dir?+program_name?+'/*'].select {|entry|
File.directory? entry
}.sort.reverse
version = File.basename(_.first)
return version
end
|
#program_name? ⇒ Boolean
206
207
208
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 206
def program_name?
@program_name
end
|
#program_version? ⇒ Boolean
114
115
116
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 114
def program_version?
@symlink_this_program_version
end
|
#reset ⇒ Object
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 78
def reset
super()
infer_the_namespace
@internal_hash[:also_do_register_into_the_yaml_database] = true
@symlink_program_to_use = RBT::SymlinkFromToCurrent.new(nil, :do_not_run_yet)
set_program_name end
|
#rnsymc(i = full_program_version_target?
) ⇒ Object
#
rnsymc
This method delegates towards class RBT::SymlinkFromToCurrent.
The argument to this method will default to a String such as:
/home/Programs/Python/3.8.3/
#
282
283
284
285
286
287
288
289
290
291
292
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 282
def rnsymc(
i = full_program_version_target?
)
@symlink_program_to_use.set_use_this_program(i)
if also_do_register_into_the_yaml_database?
else
@symlink_program_to_use.do_not_register
end
@symlink_program_to_use.do_symlink
end
|
#run ⇒ Object
304
305
306
307
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 304
def run
considering_deleting_the_current_symlink_if_it_exists
do_create_the_new_symlink
end
|
#set_program_name(i = nil) ⇒ Object
#
set_program_name
The setter of the program name.
#
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 123
def set_program_name(i = nil)
i = i.first if i.is_a? Array
if i.nil?
_ = return_pwd
if _.include? programs_dir? and
(_.count('/') > 1)
i = _
end
end
i = i.to_s.dup
i = File.basename(i) if i.include? '/'
i.capitalize!
@program_name = i
end
|
#set_symlink_program(i) ⇒ Object
#
set_symlink_program
This method can be used to assign towards the symlink-program that will be used. For example, class RBT::Compile can pass its own modified variant into this method here, thus being able to control what class RBT::ToCurrent is doing at the symlink-progam step.
#
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 100
def set_symlink_program(i)
@symlink_program_to_use = i
end
|
#set_symlink_this_program_version(i) ⇒ Object
Also known as:
set_program_version
#
set_symlink_this_program_version
This setter keeps track of the particular program version that we will use. For example, if we have an input such as “/Programs/Python/3.6.2”, then the program_version will be 3.6.2.
#
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
# File 'lib/rbt/actions/individual_actions/to_current/to_current.rb', line 150
def set_symlink_this_program_version(i)
i = i.first if i.is_a? Array
if i.nil? entries = Dir['*'] if entries.size > 1 i = entries.select {|line| line =~ /\d+/ }.first
else
i = entries.first
end
end
if i.end_with? '/'
i = i.dup if i.frozen?
i.chop!
end
if i.include? programs_dir? and
(i =~ /\d+/) and
(i.count('/') > 1) splitted = i.split('/').reject(&:empty?)
use_this_program_name = splitted[-2]
set_program_name(use_this_program_name)
i = splitted[-1]
end
unless (i =~ /\d+/)
set_program_name(i) unless i.include? '/'
i = infer_the_program_version end
@symlink_this_program_version = i
end
|