Class: RBT::ParseConfigureHelp

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

Constant Summary collapse

CONFIGURE_STRING =
#

CONFIGURE_STRING

#
'./configure --help'
BE_VERBOSE =
#

BE_VERBOSE

#
false
RED =
#

Some hardcoded-colour definitions.

#
"\e[31m"
CYAN =
"\e[36m"
DEFAULT_COLOUR =
CYAN
GREEN =
"\e[32m"

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_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, #otomato, #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_name, #return_program_name_for_gobolinux_systems, #return_program_name_via_program_information, #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, #rpn, #run_simulation=, #run_simulation?, #sdir, #sdir_return_pwd, #set_be_silent, #set_be_verbose, #set_first_commandline_argument, #set_namespace, #set_use_colours, #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(commandline_arguments = nil, run_already = true) ⇒ ParseConfigureHelp

#

initialize

#


49
50
51
52
53
54
55
56
57
58
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 49

def initialize(
    commandline_arguments = nil,
    run_already           = true
  )
  reset
  set_commandline_arguments(
    commandline_arguments
  )
  run if run_already
end

Class Method Details

.[](i = '') ⇒ Object

#

RBT::ParseConfigureHelp[]

#


425
426
427
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 425

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

Instance Method Details

#colourize_environment_variablesObject

#

colourize_environment_variables

#


83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 83

def colourize_environment_variables
  # ======================================================================= #
  # The next Array is to be defined via a leading ' ' token.
  # ======================================================================= #
  %w(
    CC
    CPPFLAGS
    CPP
    CFLAGS
    CXXCPP
    CXX
    CXXFLAGS
    LDFLAGS
    LIBS
    X_CFLAGS
    X_LIBS
    LIBELF_CFLAGS
    LIBELF_LIBS
    LIBNOTIFY_CFLAGS
    LIBNOTIFY_LIBS
    WEBKIT_CFLAGS
    WEBKIT_LIBS
    ITSTOOL
    XMLLINT
    GTKDOC_DEPS_CFLAGS
    GTKDOC_DEPS_LIBS
    LT_SYS_LIBRARY_PATH         
    PKG_CONFIG_LIBDIR
    PKG_CONFIG_PATH
    PKG_CONFIG
    LIBNL3_CFLAGS
    LIBNL3_LIBS
    LIBNL3GENL_CFLAGS
    LIBNL3GENL_LIBS
    LIBNL3GENL_CFLAGS
    LIBNL3GENL_LIBS
    XINPUT_CFLAGS
    XINPUT_LIBS
    XI2_CFLAGS
    XI2_LIBS
    XI21_CFLAGS
    XI21_LIBS
    XI22_CFLAGS
    XI22_LIBS
    ZENITY_CFLAGS
    ZENITY_LIBS
  ).each {|line|
    if @string.include? " #{line}"
      @string.gsub!(/( #{line})/, darkcyan('\1'))
    end
  }
end

#colourize_the_stringObject

#

colourize_the_string

#


279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 279

def colourize_the_string
  # ======================================================================= #
  # Usually we wish to colourize the result, but if we debug this class
  # we may want to NOT colourize the result at all.
  # ======================================================================= #
  if @colourize_the_result and use_colours?
    @string.gsub!(/(`configure')/, seagreen('\1'))
    @string.gsub!(/(environment variables)/, yellowgreen('\1'))
    @string.gsub!(/(Usage:)/, crimson('\1'))
    @string.gsub!(/(VAR=VALUE)/, crimson('\1'))
    @string.gsub!(/(--bindir=DIR)/, orange('\1'))
    @string.gsub!(/(--sbindir=DIR)/, orange('\1'))
    @string.gsub!(/(--libexecdir=DIR)/, orange('\1'))
    @string.gsub!(/(--datadir=DIR)/, orange('\1'))
    @string.gsub!(/(--sysconfdir=DIR)/, orange('\1'))
    @string.gsub!(/(--sharedstatedir=DIR)/, orange('\1'))
    @string.gsub!(/(--localstatedir=DIR)/, orange('\1'))
    @string.gsub!(/(--runstatedir=DIR)/, orange('\1'))
    @string.gsub!(/(--libdir=DIR)/, orange('\1'))
    @string.gsub!(/(--includedir=DIR)/, orange('\1'))
    @string.gsub!(/(--oldincludedir=DIR)/, orange('\1'))
    @string.gsub!(/(--infodir=DIR)/, orange('\1'))
    @string.gsub!(/(--mandir=DIR)/, orange('\1'))
    @string.gsub!(/(--datarootdir=DIR)/, orange('\1'))
    @string.gsub!(/(--localedir=DIR)/, orange('\1'))
    @string.gsub!(/(--docdir=DIR)/, orange('\1'))
    @string.gsub!(/(--htmldir=DIR)/, orange('\1'))
    @string.gsub!(/(--dvidir=DIR)/, orange('\1'))
    @string.gsub!(/(--pdfdir=DIR)/, orange('\1'))
    @string.gsub!(/(--psdir=DIR)/, orange('\1'))
    @string.gsub!(/(Configuration:)/, dodgerblue('\1'))
    # ===================================================================== #
    # A bit royal-blue colourizing to be done next:
    # ===================================================================== #
    @string.gsub!(/(E?PREFIX\/)/, royalblue('\1'))
    @string.gsub!(/(DATAROOTDIR)/, royalblue('\1'))
    @string.gsub!(/(DOCDIR)/, royalblue('\1'))
    @string.gsub!(/\[(\/usr\/include)\]/, '['+royalblue('\1')+']')
    %w(
      --program-prefix=PREFIX
      --program-suffix=SUFFIX
      --program-transform-name=PROGRAM
      --build=BUILD
      --host=HOST
      --target=TARGET
    ).each {|line|
      @string.gsub!(/(#{line})/, plum('\1'))
    }
    %w(
      --disable-FEATURE
      --enable-FEATURE[=ARG]
      --enable-FEATURE=no
      --enable-maintainer-mode
      --with-PACKAGE[=ARG]
      --without-PACKAGE
      --with-helper-path-prefix=PATH
      --with-pic[=PKGS]
      --with-perl-options=OPTIONS
      --with-html-dir=PATH
      --with-release-version=STRING
      --with-proc=DIR
      --disable-option-checking
      --enable-silent-rules
      --disable-silent-rules
      --enable-dependency-tracking
      --disable-dependency-tracking
      --prefix=PREFIX
      --disable-rpath
      --enable-iso-c
      --enable-libnotify
      --disable-maintainer-mode
      --disable-nls
      --enable-static[=PKGS]
      --enable-shared[=PKGS]
      --enable-fast-install[=PKGS]
      --disable-libtool-lock
      --disable-perl-bindings
      --enable-gtk-doc
      --enable-gtk-doc-html
      --enable-gtk-doc-pdf
      --enable-debug[=no|minimum|yes|full]
      --disable-debug
      --enable-checks
      --disable-visibility
      --disable-linker-opts
      --enable-profiling
      --disable-selective-werror
      --enable-strict-compilation             
      --enable-proc
      --enable-openvz
      --enable-cgroup
      --enable-vserver
      --enable-ancient-vserver
      --enable-taskstats
      --enable-unicode
      --enable-linux-affinity
      --enable-hwloc
      --enable-setuid
      --enable-delayacct        
    ).each {|line|
      if @string.include? line
        @string.gsub!(
          /(#{Regexp.quote(line)})/, lightseagreen('\1')
        )
      end
    }
    [
      'Program names:',
      'Optional Features:',
      'Optional Packages:',
      'System types:',
      'Installation directories:',
      'Fine tuning of the installation directories:'
    ].each {|line|
      @string.gsub!(/(#{line})/, orangered('\1'))
    }
    if @string.include? '<http'
      @string.gsub!(/\<(https?:\/\/.+)\>/, '<'+springgreen('\1')+'>')
    end
    if @string.include? '@'
      # =================================================================== #
      # Colourize all emails.
      # =================================================================== #
      @string.gsub!(/<(\D{1,20}@\D{1,20}\.\D{1,5})>/, '<'+olivedrab('\1')+'>')
    end
    colourize_environment_variables
  end
end

#cyanObject

#

cyan

#


146
147
148
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 146

def cyan
  CYAN
end

#extract_this_archive(i) ⇒ Object

#

extract_this_archive

This is the part that helps the user in extracting a particular archive.

#


245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 245

def extract_this_archive(i)
  require 'extracter'
  this_target = temp_dir?
  suffix_target = remove_archive_at_the_end(File.basename(i))
  opne 'Extracting the archive at `'+sfile(i)+'` `'+
       sfancy(this_target+suffix_target)+'`.'
  Extracter.extract_this(
    i,
    to: this_target,
    verbosity: be_quiet
  )
  if File.directory?(this_target+suffix_target)
    change_directory(this_target+suffix_target)
  end
end

#include?(substring, be_verbose = @be_verbose) ⇒ Boolean

#

include?

Will return true if our flag could be found.

#

Returns:

  • (Boolean)


162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 162

def include?(substring, be_verbose = @be_verbose)
  substring = substring.dup if substring.frozen?
  substring.strip! # sanitize our input string
  substring.prepend '--' unless substring.start_with? '-'
  return false if @string.empty? # can never be true if @string is empty
  if @string.include? substring
    if be_verbose
      e '%-5s' % red+'  YES, the configure option `'+substring+'` is included.'+revert
    end
    return true 
  else
    if be_verbose
      e '%-5s' % cyan+'  No, the configure option `'+substring+'` is not included.'+revert
    end
    return false
  end
end
#

menu

#


209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 209

def menu(
    i = commandline_arguments?
  )
  if i.is_a? Array
    i.each {|entry| menu(entry) }
  else
    case i
    # ===================================================================== #
    # === rbt_configure_help --raw
    # ===================================================================== #
    when /^-?-?raw$/
      @colourize_the_result = false
    else
      # =================================================================== #
      # Handle existing archives here.
      # =================================================================== #
      if File.exist?(i) and is_an_archive?(i)
        extract_this_archive(i)
      end
    end
  end
end

#redObject

#

red

#


153
154
155
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 153

def red
  RED
end

#reportObject

#

report

#


235
236
237
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 235

def report
  e "#{rev}#{@string}"
end

#resetObject

#

reset (reset tag)

#


63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 63

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @string
  # ======================================================================= #
  @string = ''.dup # empty on default
  # ======================================================================= #
  # === @colourize_the_result
  # ======================================================================= #
  @colourize_the_result = true
  # ======================================================================= #
  # === :be_verbose
  # ======================================================================= #
  set_be_verbose(BE_VERBOSE)
end

#return_terse_versionObject

#

return_terse_version

Return a terse version of the string, only if it contains two ‘-’.

#


192
193
194
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 192

def return_terse_version
  @string.split(N).reject {|x| ! x.include? '--' }
end

#revertObject

#

revert

#


183
184
185
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 183

def revert # Return to default colour.
  DEFAULT_COLOUR
end

#runObject

#

run (run tag)

#


411
412
413
414
415
416
417
418
419
420
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 411

def run
  unless File.exist? 'configure'
    opne "#{rev}No file called #{sfile('configure')} #{rev}can be "\
         "found in the current directory."
    return
  end
  sanitize_string
  colourize_the_string
  report
end

#sanitize_string(this_string = CONFIGURE_STRING) ⇒ Object

#

sanitize_string

This method will essentially run “./configure –help” and capture the output/result.

#


267
268
269
270
271
272
273
274
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 267

def sanitize_string(
    this_string = CONFIGURE_STRING
  )
  # ======================================================================= #
  # Obtain the output from "configure --help" next.
  # ======================================================================= #
  @string = `#{this_string}`.to_s.strip
end

#string?Boolean Also known as: string

#

string?

#

Returns:

  • (Boolean)


139
140
141
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 139

def string?
  @string
end

#verbose_include?(s) ⇒ Boolean Also known as: vi?

#

verbose_include?

Wrapper towards the method above.

#

Returns:

  • (Boolean)


201
202
203
204
# File 'lib/rbt/utility_scripts/parse_configure_help.rb', line 201

def verbose_include?(s)
  set_be_verbose(true)
  include?(s)
end