Class: RBT::BuildDetector

Inherits:
Base show all
Defined in:
lib/rbt/utility_scripts/build_detector.rb

Overview

RBT::BuildDetector

Constant Summary collapse

DEFAULT_BUILD_TYPE =
#

DEFAULT_BUILD_TYPE

#
:unknown

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_options, #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_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_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_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) ⇒ BuildDetector

#

initialize

#


43
44
45
46
47
48
49
50
# File 'lib/rbt/utility_scripts/build_detector.rb', line 43

def initialize(
    i           = nil,
    run_already = true
  )
  reset
  set_input(i)
  run if run_already
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

RBT::BuildDetector[]

#


233
234
235
# File 'lib/rbt/utility_scripts/build_detector.rb', line 233

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

.do_guess_build_typeObject

#

RBT::BuildDetector.do_guess_build_type

This method can be used to guess the build type of a target archive. Prefer to use the method RBT.build_type? instead, though, since it is more convenient.

#


244
245
246
# File 'lib/rbt/utility_scripts/build_detector.rb', line 244

def self.do_guess_build_type
  new.build_type?
end

Instance Method Details

#build_type?Boolean

#

build_type?

#

Returns:

  • (Boolean)


199
200
201
# File 'lib/rbt/utility_scripts/build_detector.rb', line 199

def build_type?
  @build_type
end

#determine_build_type(use_this_as_target_directory = base_dir? ) ⇒ Object

#

determine_build_type

#


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
# File 'lib/rbt/utility_scripts/build_detector.rb', line 154

def determine_build_type(
    use_this_as_target_directory = base_dir?
  )
  files_from_pwd = Dir[use_this_as_target_directory+'*']
  files_from_pwd_but_only_their_filenames = files_from_pwd.map { |entry|
    File.basename(entry)
  }
  # ======================================================================= #
  # Check for cmake build types first
  # ======================================================================= #
  if files_from_pwd_but_only_their_filenames.include? 'CMakeLists.txt'
    is_cmake_build_type
  # ======================================================================= #
  # Next, check for meson build types
  # ======================================================================= #
  elsif files_from_pwd_but_only_their_filenames.include?('meson.build')
    is_meson_build_type
  # ======================================================================= #
  # Next, check for waf-based build types
  # ======================================================================= #  
  elsif files_from_pwd_but_only_their_filenames.include?('waf') or
        files_from_pwd_but_only_their_filenames.include?('wscript')
    is_waf_build_type
  # ======================================================================= #
  # Next, scheck for "scons"-based build types
  # ======================================================================= #
  elsif files_from_pwd_but_only_their_filenames.include?('SConscript') and
        files_from_pwd_but_only_their_filenames.include?('SConstruct')
    is_scons_build_type
  # ======================================================================= #
  # Next, GNU configure-based scripts
  # ====================================================================== #
  elsif files_from_pwd_but_only_their_filenames.include?('configure')
    is_configure_build_type
  # ====================================================================== #
  # Else we do not know the build-type.
  # ====================================================================== #
  else # This is the default value.
    set_build_type
  end
end

#determine_whether_the_input_is_an_existing_directoryObject

#

determine_whether_the_input_is_an_existing_directory

By default, this class will use the current directory as the input directory that is to be checked.

#


70
71
72
73
74
75
76
77
# File 'lib/rbt/utility_scripts/build_detector.rb', line 70

def determine_whether_the_input_is_an_existing_directory
  if File.exist? @input and File.directory? @input
    # ===================================================================== #
    # In this case, use that input as directory.
    # ===================================================================== #
    set_main_dir(@input)
  end
end

#input?Boolean

#

input?

#

Returns:

  • (Boolean)


92
93
94
# File 'lib/rbt/utility_scripts/build_detector.rb', line 92

def input?
  @input
end

#is_cmake_build_typeObject

#

is_cmake_build_type

#


119
120
121
# File 'lib/rbt/utility_scripts/build_detector.rb', line 119

def is_cmake_build_type
  set_build_type :cmake
end

#is_configure_build_typeObject

#

is_configure_build_type

#


147
148
149
# File 'lib/rbt/utility_scripts/build_detector.rb', line 147

def is_configure_build_type
  set_build_type :configure
end

#is_meson_build_typeObject

#

is_meson_build_type

#


126
127
128
# File 'lib/rbt/utility_scripts/build_detector.rb', line 126

def is_meson_build_type
  set_build_type :meson
end

#is_scons_build_typeObject

#

is_scons_build_type

#


140
141
142
# File 'lib/rbt/utility_scripts/build_detector.rb', line 140

def is_scons_build_type
  set_build_type :scons
end

#is_waf_build_typeObject

#

is_waf_build_type

#


133
134
135
# File 'lib/rbt/utility_scripts/build_detector.rb', line 133

def is_waf_build_type
  set_build_type :waf
end

#reportObject

#

report (report tag)

#


215
216
217
218
219
220
# File 'lib/rbt/utility_scripts/build_detector.rb', line 215

def report
  # ======================================================================= #
  # The build type is stored in the variable called @build_type.
  # ======================================================================= #
  e "#{rev}The guessed build type is `#{sfancy(@build_type)}#{rev}`."
end

#resetObject

#

reset (reset tag)

#


55
56
57
58
59
60
61
62
# File 'lib/rbt/utility_scripts/build_detector.rb', line 55

def reset
  super()
  # ======================================================================= #
  # === @build_type
  # ======================================================================= #
  @build_type = DEFAULT_BUILD_TYPE
  set_use_this_base_directory
end

#runObject

#

run (run tag)

#


225
226
227
228
# File 'lib/rbt/utility_scripts/build_detector.rb', line 225

def run
  determine_whether_the_input_is_an_existing_directory
  determine_build_type
end

#set_build_type(i = DEFAULT_BUILD_TYPE) ⇒ Object

#

set_build_type

The @build_type variable will always be a Symbol.

#


208
209
210
# File 'lib/rbt/utility_scripts/build_detector.rb', line 208

def set_build_type(i = DEFAULT_BUILD_TYPE)
  @build_type = i
end

#set_input(i = '') ⇒ Object

#

set_input

#


82
83
84
85
86
87
# File 'lib/rbt/utility_scripts/build_detector.rb', line 82

def set_input(i = '')
  i = i.first if i.is_a? Array
  i = return_pwd if i.nil?
  i = i.to_s.dup
  @input = i
end

#set_use_this_base_directory(i = return_pwd) ⇒ Object Also known as: set_main_dir

#

set_use_this_base_directory

#


99
100
101
102
103
104
105
106
107
# File 'lib/rbt/utility_scripts/build_detector.rb', line 99

def set_use_this_base_directory(
    i = return_pwd
  )
  unless i.end_with? '/'
    i = i.dup if i.frozen?
    i << '/'
  end
  @use_this_base_directory = i
end

#use_this_base_directory?Boolean Also known as: base_dir?

#

use_this_base_directory?

#

Returns:

  • (Boolean)


112
113
114
# File 'lib/rbt/utility_scripts/build_detector.rb', line 112

def use_this_base_directory?
  @use_this_base_directory
end