Class: RBT::Action::BuildDirectory

Inherits:
RBT::Action show all
Defined in:
lib/rbt/actions/individual_actions/build_directory/build_directory.rb

Overview

RBT::Action::BuildDirectory

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

#

initialize

#


44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 44

def initialize(
    i           = nil, # This is deliberately nil by default.
    run_already = true,
    &block
  )
  reset
  set_commandline_arguments(i)
  try_to_determine_the_path_from_the_commandline_arguments
  # ======================================================================== #
  # === Handle blocks next
  # ======================================================================== #
  if block_given?
    yielded = yield
    case yielded
    when :do_not_run_yet
      run = false
    end
  end
  run if run_already
end

Class Method Details

.[](i = ARGV, &block) ⇒ Object

#

RBT::Action::BuildDirectory[]

#


333
334
335
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 333

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

Instance Method Details

#absolute_path_to_the_build_directory?Boolean Also known as: use_this_path?, use_which_path?, path?, full_path?, absolute_path?, use_this_as_build_directory?

#

absolute_path_to_the_build_directory?

This query-method will return the (absolute) path to the build-directory.

#

Returns:

  • (Boolean)


285
286
287
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 285

def absolute_path_to_the_build_directory?
  @internal_hash[:absolute_path_to_the_build_directory]
end

#cd_one_level_downwards(i = absolute_path? ) ⇒ Object

#

cd_one_level_downwards

#


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

def cd_one_level_downwards(
    i = absolute_path?
  )
  new_target_directory = File.dirname(i)
  change_directory(new_target_directory)
end

#cd_to_the_base_directoryObject Also known as: cd_to_the_build_directory, cd_into_the_build_directory

#

cd_to_the_base_directory

This method will always go to the default base-directory.

#


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

def cd_to_the_base_directory
  cd(:base_directory)
end

#change_directory(i = absolute_path_to_the_build_directory?, , be_verbose = be_verbose? ) ⇒ Object Also known as: do_change_directory, cd, chdir

#

change_directory (cd tag)

This method can be used to instruct class BuildDirectory to change to another directory. By default it will change to the build directory that was assigned to this class.

The actualy “change-directory” action will be silent by default.

#


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
254
255
256
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 211

def change_directory(
    i          = absolute_path_to_the_build_directory?,
    be_verbose = be_verbose?
  )
  case i
  # ======================================================================== #
  # === :be_verbose
  # ======================================================================== #
  when :be_verbose
    be_verbose = true
  end
  case i
  # ======================================================================== #
  # === :default
  # ======================================================================== #
  when :default,
       :start,
       :base_directory,
       nil
    i = absolute_path_to_the_build_directory?
  end
  # ======================================================================== #
  # === Handle blocks next
  # ======================================================================== #
  if block_given?
    yielded = yield
    case yielded
    # ====================================================================== #
    # === :ensure_that_the_directory_exists
    # ====================================================================== #
    when :ensure_that_the_directory_exists
      if i # But only for non-nil values.
        create_the_build_directory_if_it_does_not_yet_exist(i)
      end
    end
  end
  if i and File.directory?(i)
    if be_verbose
      orev "Now entering the directory `#{sdir(i)}#{rev}`."
    end
    Dir.chdir(i)
  else
    orev "Can not change directory to non-existing "\
         "path at `#{sfile(i.to_s)}#{rev}`." if be_verbose
  end
end

#consider_creating_the_build_directory_and_then_entering_it(shall_we_make_use_of_a_build_directory = shall_we_make_use_of_a_build_directory? ) ⇒ Object

#

consider_creating_the_build_directory_and_then_entering_it

#


182
183
184
185
186
187
188
189
190
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 182

def consider_creating_the_build_directory_and_then_entering_it(
    shall_we_make_use_of_a_build_directory = shall_we_make_use_of_a_build_directory?
  )
  _ = absolute_path_to_the_build_directory?
  if _ and shall_we_make_use_of_a_build_directory
    create_the_build_directory_if_it_does_not_yet_exist
    cd_into_the_build_directory { :be_quiet }
  end
end

#create_the_build_directory_if_it_does_not_yet_exist(i = absolute_path? ) ⇒ Object

#

create_the_build_directory_if_it_does_not_yet_exist

#


263
264
265
266
267
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 263

def create_the_build_directory_if_it_does_not_yet_exist(
    i = absolute_path?
  )
  mkdir(i) unless File.directory?(i)
end

#ensure_that_the_build_directory_exists(use_this_path = absolute_path? ) ⇒ Object Also known as: silently_make_sure_that_the_build_directory_exists

#

ensure_that_the_build_directory_exists

This method will be silent by default.

#


316
317
318
319
320
321
322
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 316

def ensure_that_the_build_directory_exists(
    use_this_path = absolute_path?
  )
  unless File.directory? use_this_path
    mkdir(use_this_path, :be_silent)
  end
end

#initialize_the_default_variablesObject Also known as: restore_the_default_values

#

initialize_the_default_variables

#


77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 77

def initialize_the_default_variables
  # ======================================================================== #
  # === :absolute_path_to_the_build_directory
  #
  # This variable must be nil initially.
  #
  # The variable :absolute_path_to_the_build_directory will keep track
  # of the build-directory, as absolute path. So, for instance, a
  # valid target here may be '/home/x/Temp/htop-3.1.2/BUILD_DIRECTORY/'.
  #
  # Outside of this method this variable should not be directly
  # changed; instead, the setter-method set_path() should be used.
  # ======================================================================== #
  @internal_hash[:absolute_path_to_the_build_directory] = nil
  # ======================================================================== #
  # === :shall_we_make_use_of_a_build_directory
  #
  # Before April 2024, this variable was called 'use_a_build_directory'.
  # ======================================================================== #
  @internal_hash[:shall_we_make_use_of_a_build_directory] = true
  # ======================================================================== #
  # === :be_verbose
  #
  # Determine the verbosity next - by default this class will be fairly
  # quiet.
  # ======================================================================== #
  set_be_quiet
end

#name?(i = absolute_path? ) ⇒ Boolean

#

name?

This method will just return the short-name of the path.

For example, if the absolute path is “/abc/def/build_dir/” then this method will simply return the following string:

"build_dir"
#

Returns:

  • (Boolean)


305
306
307
308
309
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 305

def name?(
    i = absolute_path?
  )
  return File.basename(i)
end

#resetObject

#

reset (reset tag)

#


68
69
70
71
72
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 68

def reset
  super()
  infer_the_namespace
  initialize_the_default_variables
end

#runObject

#

run (run tag)

#


327
328
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 327

def run
end

#set_absolute_path_to_the_build_directory(i = return_pwd) ⇒ Object Also known as: set_path, path_to_build_directory=, use_this_build_directory=, use_this_path=, this_is_the_build_directory, this_is_the_build_directory=

#

set_absolute_path_to_the_build_directory (set tag)

The path meant here is the full, absolute path towards the build directory.

#


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
171
172
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 142

def set_absolute_path_to_the_build_directory(
    i = return_pwd
  )
  # ======================================================================== #
  # The argument passed could be nil, so we have to keep this in mind here.
  # ======================================================================== #
  if i
    # ====================================================================== #
    # === Handle the case when the input is an Array
    # ====================================================================== #
    if i.is_a? Array
      i = i.join(' ').strip
    # ====================================================================== #
    # === Handle the case when the input is a Hash
    # ====================================================================== #
    elsif i.is_a? Hash
      # ==================================================================== #
      # === :path_to_build_directory
      # ==================================================================== #
      if i.has_key? :path_to_build_directory
        i = i[:path_to_build_directory]
      end
    end
    if i.is_a?(String)
      i = i.dup if i.frozen?
      i = File.absolute_path(i)
      i << '/' unless i.end_with?('/')
    end
  end
  @internal_hash[:absolute_path_to_the_build_directory] = i # We also allow nil-values here.
end

#set_shall_we_make_use_of_a_build_directory(i) ⇒ Object Also known as: use_a_build_directory=

#

set_shall_we_make_use_of_a_build_directory

#


120
121
122
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 120

def set_shall_we_make_use_of_a_build_directory(i)
  @internal_hash[:shall_we_make_use_of_a_build_directory] = i
end

#shall_we_make_use_of_a_build_directory?Boolean Also known as: use_a_build_directory?, do_we_use_a_build_directory?

#

shall_we_make_use_of_a_build_directory?

This method is required because the RBT::Action::SoftwareManager class may not always want to use a build directory.

#

Returns:

  • (Boolean)


112
113
114
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 112

def shall_we_make_use_of_a_build_directory?
  @internal_hash[:shall_we_make_use_of_a_build_directory]
end

#try_to_determine_the_path_from_the_commandline_argumentsObject

#

try_to_determine_the_path_from_the_commandline_arguments

#


127
128
129
130
131
132
133
134
# File 'lib/rbt/actions/individual_actions/build_directory/build_directory.rb', line 127

def try_to_determine_the_path_from_the_commandline_arguments
  _ = first_argument?
  if _
    set_absolute_path_to_the_build_directory(_)
  else
    set_absolute_path_to_the_build_directory(nil)
  end
end