Class: RBT::CreatePkgconfigFile

Inherits:
Base show all
Defined in:
lib/rbt/generate_files/create_pkgconfig_file.rb

Overview

RBT::CreatePkgconfigFile

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 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_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, #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(i = nil, run_already = true) ⇒ CreatePkgconfigFile

#

initialize

#


34
35
36
37
38
39
40
41
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 34

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

Class Method Details

.[](i = '') ⇒ Object

#

RBT::CreatePkgconfigFile[]

#


341
342
343
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 341

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

Instance Method Details

#add(i = '') ⇒ Object

#

add

#


167
168
169
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 167

def add(i = '')
  @store_this_string << i+N
end

#build_up_the_main_stringObject

#

build_up_the_main_string (main string, main tag)

This method depends on information made available prior to calling it, e. g. the method description? or prefix? and so forth.

#


295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 295

def build_up_the_main_string
  add 'prefix='+prefix?.to_s # Need .to_s here since we can also pass class Prefix.
  add 'exec_prefix=${prefix}'
  add 'libdir=${exec_prefix}/lib'
  add 'includedir=${prefix}/include'
  add
  add 'Name: '+program_name?.dup
  add "Description: #{word_wrapped_description?}"
  add 'Requires:'
  add 'Version: '+program_version?
  add (
        'Libs: -L${libdir} -l'+program_name?+' '+extra_libs?.to_s
      ).rstrip
  add 'Cflags: -I${includedir}'
end

#description?Boolean

#

description?

#

Returns:

  • (Boolean)


85
86
87
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 85

def description?
  @description
end

#ensure_that_the_pkgconfig_directory_exists_for(i) ⇒ Object

#

ensure_that_the_pkgconfig_directory_exists_for

#


284
285
286
287
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 284

def ensure_that_the_pkgconfig_directory_exists_for(i)
  i = File.dirname(i)
  mkdir(i, :be_quiet) unless File.directory? i
end

#extra_libs?Boolean

#

extra_libs?

#

Returns:

  • (Boolean)


314
315
316
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 314

def extra_libs?
  @extra_libs
end

#handle_special_programsObject

#

handle_special_programs

#


321
322
323
324
325
326
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 321

def handle_special_programs
  case raw_name_of_the_program?
  when 'lua'
    @extra_libs << '-lm -ldl'
  end
end

#input_hash?Boolean

#

input_hash?

#

Returns:

  • (Boolean)


143
144
145
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 143

def input_hash?
  @input_hash
end

#parse_input_hashObject

#

parse_input_hash

This method can be used to decompose the given input at hand. It is the first method that is called from within run() itself.

#


189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 189

def parse_input_hash
  _ = input_hash?
  # ======================================================================= #
  # === :pkgconfig_filename
  # ======================================================================= #
  if _.has_key? :pkgconfig_filename
    set_pkgconfig_filename(_.delete(:pkgconfig_filename))
  end
  # ======================================================================= #
  # === :prefix
  # ======================================================================= #
  if _.has_key? :prefix
    @prefix = _.delete(:prefix)
  end
  # ======================================================================= #
  # === :program_version
  # ======================================================================= #
  if _.has_key? :program_version
    set_program_version _.delete(:program_version)
  # ======================================================================= #
  # === :version
  # ======================================================================= #
  elsif _.has_key? :version
    set_program_version _.delete(:version)
  end
  # ======================================================================= #
  # === :description
  # ======================================================================= #
  if _.has_key? :description
    @description = _.delete(:description)
  end
end

#pkgconfig_filename?Boolean

#

pkgconfig_filename?

#

Returns:

  • (Boolean)


150
151
152
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 150

def pkgconfig_filename?
  @pkgconfig_filename
end

#prefix?Boolean

#

prefix?

#

Returns:

  • (Boolean)


92
93
94
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 92

def prefix?
  @prefix
end

#program_name?Boolean

#

program_name?

This method is guaranteed to return the name without the .pc name.

#

Returns:

  • (Boolean)


159
160
161
162
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 159

def program_name?
  File.basename(pkgconfig_filename?).
  delete_suffix('.pc').dup
end

#program_version?Boolean

#

program_version?

#

Returns:

  • (Boolean)


243
244
245
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 243

def program_version?
  @program_version
end

#raw_name_of_the_program?Boolean

#

raw_name_of_the_program?

#

Returns:

  • (Boolean)


277
278
279
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 277

def raw_name_of_the_program?
  return File.basename(pkgconfig_filename?.dup).delete_suffix('.pc')
end

#resetObject

#

reset (reset tag)

#


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/generate_files/create_pkgconfig_file.rb', line 46

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @store_this_string
  # ======================================================================= #
  @store_this_string  = ''.dup
  # ======================================================================= #
  # === @prefix
  # ======================================================================= #
  @prefix             = '/usr' # This is the default prefix.
  # ======================================================================= #
  # === @program_version
  # ======================================================================= #
  @program_version    = '1.0.0'
  # ======================================================================= #
  # === @pkgconfig_filename
  # ======================================================================= #
  @pkgconfig_filename = 'mad'
  # ======================================================================= #
  # === @description
  # ======================================================================= #
  @description        = ''
  # ======================================================================= #
  # === @extra_libs
  # ======================================================================= #
  @extra_libs         = ''.dup
end

#runObject

#

run (run tag)

#


331
332
333
334
335
336
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 331

def run
  parse_input_hash # Must parse the Hash prior to String build-up.
  handle_special_programs
  build_up_the_main_string
  store_pc_file
end

#sanitize_the_input_hash(i = @input_hash) ⇒ Object

#

sanitize_the_input_hash

The main idea for this method is to turn symbol input such as :htop, or pseudo-symbols such as ‘:htop’, into the real dataset.

#


126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 126

def sanitize_the_input_hash(
    i = @input_hash
  )
  if i.is_a?(Symbol) or (i.is_a?(String) and i.start_with?(':'))
    require 'rbt/requires/require_the_installer_class.rb'
    @input_hash = action(:installer, i, :do_not_run_yet)
    # ======================================================================= #
    # We will also generate another filename when RBT::Action::Installer
    # is used.
    # ======================================================================= #
    set_pkgconfig_filename(i)
  end
end

#set_input_hash(i = {}) ⇒ Object

#

set_input_hash

#


99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 99

def set_input_hash(
    i = {}
  )
  i = i.first if i.is_a? Array
  if i.is_a?(String) and i.start_with?(':')
    cookbook_dataset = action(:sanitize_cookbook, i.delete(':'))
    # ===================================================================== #
    # Build up the most important Hash next:
    # ===================================================================== #
    i = {
      prefix:             cookbook_dataset.prefix_to_use?,
      pkgconfig_filename: cookbook_dataset.prefix_to_use?+
                          '/lib/pkgconfig/'+cookbook_dataset.real_short_name?.to_s+'.pc',
      version:            cookbook_dataset.program_version?,
      description:        cookbook_dataset.short_description?
    }
  end
  @input_hash = i
  sanitize_the_input_hash
end

#set_pkgconfig_filename(i) ⇒ Object

#

set_pkgconfig_filename

#


174
175
176
177
178
179
180
181
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 174

def set_pkgconfig_filename(i)
  i = i.to_s.dup
  i = rds(i).dup
  if i.start_with? ':'
    i[0,1] = ''
  end
  @pkgconfig_filename = i
end

#set_program_version(i) ⇒ Object

#

set_program_version

#


236
237
238
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 236

def set_program_version(i)
  @program_version = i
end

#short_description?Boolean

#

short_description?

#

Returns:

  • (Boolean)


225
226
227
228
229
230
231
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 225

def short_description?
  if @input_hash.is_a? Hash
    @description
  elsif @input_hash.is_a? ::RBT::Action::Installer
    @input_hash.short_description?
  end
end

#store_pc_fileObject

#

store_pc_file

We must ensure that the pkgconfig/ directory also exists.

#


263
264
265
266
267
268
269
270
271
272
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 263

def store_pc_file
  what = main_string?
  into = File.basename(pkgconfig_filename?.dup)
  into << '.pc' unless into.end_with? '.pc'
  ensure_that_the_pkgconfig_directory_exists_for(into)
  opne "Now storing into the file `#{sfile(into)}`."
  opne 'This .pc file could be moved onto'
  opne sdir(pkgconfig_filename?)
  store_what_into(what, into)
end

#store_this_string?Boolean Also known as: main_string?

#

store_this_string?

#

Returns:

  • (Boolean)


78
79
80
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 78

def store_this_string?
  @store_this_string
end

#word_wrapped_description?Boolean

#

word_wrapped_description? (wrap tag)

Wrap the description a bit.

#

Returns:

  • (Boolean)


252
253
254
255
256
# File 'lib/rbt/generate_files/create_pkgconfig_file.rb', line 252

def word_wrapped_description?
  _ = short_description?.tr(N, ' ').squeeze(' ')
  _ = word_wrap(_, 68) if _.size > 66
  return _
end