Class: RBT::Action::Ntrad

Inherits:
SimpleAppdirConfigure show all
Defined in:
lib/rbt/actions/individual_actions/ntrad/ntrad.rb

Overview

RBT::Action::Ntrad

Constant Summary

Constants inherited from SimpleAppdirConfigure

SimpleAppdirConfigure::BUILD_DIRECTORY

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 SimpleAppdirConfigure

#do_use_a_build_directory, #make_use_of_meson, #menu, #padded_esystem, #run_ninja_command, #run_ninja_install_command, #show_help, #use_a_build_directory?

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(these_programs = ARGV, additional_parameters = nil, run_already = true) ⇒ Ntrad

#

initialize

#


30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/rbt/actions/individual_actions/ntrad/ntrad.rb', line 30

def initialize(
    these_programs        = ARGV,
    additional_parameters = nil,
    run_already           = true
  )
  reset
  set_compile_these_programs_in_a_non_traditional_manner(
    these_programs
  )
  set_additional_parameters(
    additional_parameters
  )
  run if run_already
end

Class Method Details

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

#

RBT::Action::Ntrad[]

#


180
181
182
# File 'lib/rbt/actions/individual_actions/ntrad/ntrad.rb', line 180

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

Instance Method Details

#compile_these_programs_in_a_non_traditional_manner?Boolean

#

compile_these_programs_in_a_non_traditional_manner?

#

Returns:

  • (Boolean)


96
97
98
# File 'lib/rbt/actions/individual_actions/ntrad/ntrad.rb', line 96

def compile_these_programs_in_a_non_traditional_manner?
  @compile_these_programs_in_a_non_traditional_manner
end

#original_base_directory?Boolean

#

original_base_directory?

#

Returns:

  • (Boolean)


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

def original_base_directory?
  @original_base_directory
end

#remote_url?Boolean Also known as: url1?

#

remote_url?

#

Returns:

  • (Boolean)


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

def remote_url?
  @object_handling_the_installation_or_compilation.remote_url?
end

#resetObject

#

reset (reset tag)

#


48
49
50
51
52
# File 'lib/rbt/actions/individual_actions/ntrad/ntrad.rb', line 48

def reset
  super()
  infer_the_namespace
  @original_base_directory = return_pwd
end

#runObject

#

run (run tag)

#


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
169
170
171
172
173
174
175
# File 'lib/rbt/actions/individual_actions/ntrad/ntrad.rb', line 117

def run
  @compile_these_programs_in_a_non_traditional_manner.each {|this_program|
    original_input = this_program.dup
    if this_program.start_with?('http') and
      !RBT.is_this_a_registered_program?(this_program)
      # =================================================================== #
      # Assume that a remote URL was given in this case. On January 2023
      # it was discovered that this is too simplistic, because there
      # may be programs such as "httpd" (apache's httpd webserver). Thus,
      # we had to improve the check made above.
      # =================================================================== #
      action(:update_entry, this_program)
      this_program = ProgramInformation[this_program].program_name?
    end
    @object_handling_the_installation_or_compilation = action(:SoftwareManager, [this_program, :do_not_run_yet]) {
      :do_not_check_whether_the_program_exists
    }
    # ===================================================================== #
    # Check whether the input is an existing file - in this case we will
    # use it. This, however had, can lead to problems, as the given
    # input may also be a local directory, e. g. rbt/log_directory/mpfr
    # if the input given was "ntrad input". In that case the calls
    # below to ProgramInformation[] would also fail, as we cd-ed into
    # the log directory. Thus, since as of March 2023, we will actually
    # check the input for the original base directory.
    # ===================================================================== #
    target_at_the_original_base_directory = original_base_directory?+
                                            File.basename(this_program)
    if File.exist? target_at_the_original_base_directory
      program_name    = ::ProgramInformation[target_at_the_original_base_directory].program_name?
      program_version = ::ProgramInformation[target_at_the_original_base_directory].program_version?
      @object_handling_the_installation_or_compilation.set_program_name(program_name)
      @object_handling_the_installation_or_compilation.initialize_dataset(program_name) # Set it explicitely here.
      @object_handling_the_installation_or_compilation.cookbook_dataset.set_program_name(program_name)
      # =================================================================== #
      # Let's assume the URL next.
      # =================================================================== #
      use_this_guessed_url = RBT.guess_the_url_from_this(
        remote_url?,
        original_input
      )
      @object_handling_the_installation_or_compilation.cookbook_dataset.set_url1(use_this_guessed_url)
      @object_handling_the_installation_or_compilation.set_program_version(program_version)
      @object_handling_the_installation_or_compilation.set_program_name_and_program_version(:default)
      @object_handling_the_installation_or_compilation.set_archive_type(this_program)
      @object_handling_the_installation_or_compilation.set_base_dir return_pwd
      @object_handling_the_installation_or_compilation.set_program_full_name
      @object_handling_the_installation_or_compilation.rebuild_path
    end
    @object_handling_the_installation_or_compilation.set_compile_this_program(
      this_program
    )
    if @additional_parameters
      @object_handling_the_installation_or_compilation.menu(@additional_parameters)
    end
    @object_handling_the_installation_or_compilation.compile_in_a_non_traditional_manner
    @object_handling_the_installation_or_compilation.run
  }
end

#set_additional_parameters(i) ⇒ Object

#

set_additional_parameters

#


57
58
59
# File 'lib/rbt/actions/individual_actions/ntrad/ntrad.rb', line 57

def set_additional_parameters(i)
  @additional_parameters = i
end

#set_compile_these_programs_in_a_non_traditional_manner(i = '') ⇒ Object

#

set_compile_these_programs_in_a_non_traditional_manner

#


64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/rbt/actions/individual_actions/ntrad/ntrad.rb', line 64

def set_compile_these_programs_in_a_non_traditional_manner(
    i = ''
  )
  i = [i].flatten.compact
  # ======================================================================= #
  # === Handle pwd usage next (it is assumed to be a shortcut):
  # ======================================================================= #
  case i.first
  when 'pwd'
    i[0] = File.basename(return_pwd)
  end
  if i.empty?
    orev 'No input has been provided. We will attempt to obtain a'
    orev 'local file, as program instead.'
    # ===================================================================== #
    # Try to grab a random entry in this case, as the user has not
    # passed in any arguments.
    # ===================================================================== #
    random_entry = Dir['*'].sample
    i << ProgramInformation.return_program_name(random_entry)
  end
  if i.is_a? Array
    i.map! {|entry|
      entry.delete('-')
    }
  end
  @compile_these_programs_in_a_non_traditional_manner = i
end