Class: RBT::Linux::Slackware::GenerateSlackDescFile

Inherits:
Base show all
Defined in:
lib/rbt/linux/slackware/generate_slack_desc_file.rb

Overview

RBT::Linux::Slackware::GenerateSlackDescFile

Constant Summary collapse

USE_THIS_FILE_SUFFIX =
#

USE_THIS_FILE_SUFFIX

A proper slack-desc file ends with a .slack-desc suffix.

#
'.slack-desc'
CHARACTERS_PER_LINE_MAXIMUM =
#

CHARACTERS_PER_LINE_MAXIMUM

#
68
HANDY_RULER =
#

HANDY_RULER

#
'       |-----handy-ruler------------------------------------------------------|'

Constants inherited from RBT::LeanPrototype

RBT::LeanPrototype::ALL_COLOUR_METHODS, RBT::LeanPrototype::ARRAY_KDE_KONSOLE_COLOURS_IN_USE, RBT::LeanPrototype::DAY_NAMES, RBT::LeanPrototype::NAMESPACE, RBT::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 RBT::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(this_program = ARGV, run_already = true, &block) ⇒ GenerateSlackDescFile

#

initialize

The first argument should be the name of the file in question.

#


59
60
61
62
63
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
92
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 59

def initialize(
    this_program = ARGV,
    run_already  = true,
    &block
  )
  reset
  # ======================================================================= #
  # === Handle blocks next
  # ======================================================================= #
  if block_given?
    yielded = yield
    case yielded
    # ===================================================================== #
    # === :use_short_name
    # ===================================================================== #
    when :use_short_name
      @use_long_name_or_short_name = :short_name
    # ===================================================================== #
    # === :also_show_the_content_of_the_generated_file
    # ===================================================================== #
    when :also_show_the_content_of_the_generated_file
      @show_the_content_of_the_generated_file = true
    # ===================================================================== #
    # === :also_show_the_content_of_the_generated_file_if_on_roebe
    # ===================================================================== #
    when :also_show_the_content_of_the_generated_file_if_on_roebe
      if is_on_roebe?
        @show_the_content_of_the_generated_file = true
      end
    end
  end
  set_this_program(this_program)
  run if run_already
end

Class Method Details

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

#

RBT::Linux::Slackware::GenerateSlackDescFile[]

#


345
346
347
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 345

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

Instance Method Details

#append_the_homepage_if_it_existsObject

#

append_the_homepage_if_it_exists

#


236
237
238
239
240
241
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 236

def append_the_homepage_if_it_exists
  homepage = homepage?
  if homepage and !homepage.empty?
    @_[-1] << " Homepage: #{homepage}"
  end
end

#chunk(string, size = CHARACTERS_PER_LINE_MAXIMUM) ⇒ Object

#

chunk

Split at 80 characters.

#


172
173
174
175
176
177
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 172

def chunk(
    string, size = CHARACTERS_PER_LINE_MAXIMUM
  )
  size -= length_of_program_name?
  string.gsub(/(.{1,#{size}})(\s+|$)/, "\\1\n")
end

#consider_showing_the_content_of_the_generated_fileObject

#

consider_showing_the_content_of_the_generated_file

#


298
299
300
301
302
303
304
305
306
307
308
309
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 298

def consider_showing_the_content_of_the_generated_file
  if @show_the_content_of_the_generated_file
    _ = path?
    if File.exist?(_)
      e
      e "Showing the content of the file #{sfile(_)}:"
      e
      e File.read(_)
      e
    end
  end
end

#create_slack_desk_file(into = path? ) ⇒ Object

#

create_slack_desk_file

#


281
282
283
284
285
286
287
288
289
290
291
292
293
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 281

def create_slack_desk_file(
    into = path?
  )
  opnn { :no_trailing }
  e
  e
  e "#{rev}Now creating a #{springgreen('slack-desc file')}#{rev} for "+
    "#{File.basename(into).delete_suffix('.slack-desc')}"
  e "#{rev}(#{sfile(into)}#{rev})."
  e
  what = @_.join(N)+N # Grab the content and adjust it a little.
  write_what_into(what, into)
end

#description?Boolean

#

description?

#

Returns:

  • (Boolean)


148
149
150
151
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 148

def description?
  return @dataset.description?.to_s.dup.
         tr("\n",' ') # Replace newlines.
end

#file?Boolean

#

file?

#

Returns:

  • (Boolean)


321
322
323
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 321

def file?
  @dataset.file?
end

#generate_main_stringObject

#

generate_main_string

This will generate the main String, into the variable @_.

#


184
185
186
187
188
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
221
222
223
224
225
226
227
228
229
230
231
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 184

def generate_main_string
  result = ''.dup
  _ = name_of_program?
  _ = _.dup
  if short_description?
    _ << " (#{short_description?})" unless short_description?.empty?
  else
    e swarn('No short_description entry could be found for:')
    e steelblue("  #{_}")
    if description? and !description?.empty?
      opne 'Substituting via the :description entry for this instead.'
      _ << " (#{description?})"
    end
  end
  _ << N
  result << _
  result << N
  result << chunk(description?)
  if result.is_a? String
    result = result.split(N)
  end
  @_ << result
  @_.flatten!
  # ======================================================================= #
  # Next, fill in the missing slots:
  # ======================================================================= #
  (11 - @_.size).times {
    @_ << ''
  }
  # ======================================================================= #
  # And then, prepend the program name to it.
  # ======================================================================= #
  @_.map! {|line|
    line = line.dup if line.frozen?
    if line.empty?
      line.prepend("#{program_name?}:")
    else
      line.prepend("#{program_name?}: ")
    end
    line
  }
  # ======================================================================= #
  # Next, we could add a handy ruler - but I personally find this
  # useless, so the following line is commented away.
  # ======================================================================= #
  # @_[0,0] = return_handy_ruler+N
  append_the_homepage_if_it_exists
end

#homepage?Boolean

#

homepage?

#

Returns:

  • (Boolean)


163
164
165
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 163

def homepage?
  @dataset.send(__method__)
end

#length_of_program_name?Boolean

#

length_of_program_name?

#

Returns:

  • (Boolean)


141
142
143
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 141

def length_of_program_name?
  @this_program.size
end

#obtain_main_dataset(i = program?) ) ⇒ Object

#

obtain_main_dataset

#


314
315
316
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 314

def obtain_main_dataset(i = program?)
  @dataset = action(:SanitizeCookbook, i) { :fast }
end

#path?Boolean

#

path?

#

Returns:

  • (Boolean)


260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 260

def path?
  path = return_pwd.dup
  case @use_long_name_or_short_name # case tag
  # ======================================================================= #
  # === :long_name
  # ======================================================================= #
  when :long_name,
       :default # This is the default.
    path << return_name_of_slack_desc_file
  # ======================================================================= #
  # === :short_name
  # ======================================================================= #
  when :short_name
    path << return_short_name_of_slack_desc_file
  end
  path
end

#resetObject

#

reset

#


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

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @use_long_name_or_short_name
  # ======================================================================= #
  @use_long_name_or_short_name = :long_name
  # ======================================================================= #
  # === @_
  #
  # Should be an Array.
  # ======================================================================= #
  @_ = []
  # ======================================================================= #
  # === @show_the_content_of_the_generated_file
  #
  # If the following instance variable is set to true then the class
  # will also show the content of the generated file (if the file
  # exists, too).
  # ======================================================================= #
  @show_the_content_of_the_generated_file = false
end

#return_handy_rulerObject

#

return_handy_ruler

#


328
329
330
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 328

def return_handy_ruler
  HANDY_RULER
end

#return_name_of_slack_desc_fileObject

#

return_name_of_slack_desc_file

#


246
247
248
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 246

def return_name_of_slack_desc_file
  program_name?+USE_THIS_FILE_SUFFIX
end

#return_short_nameObject Also known as: return_short_name_of_slack_desc_file

#

return_short_name

#


253
254
255
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 253

def return_short_name
  USE_THIS_FILE_SUFFIX.delete('.')
end

#runObject

#

run

#


335
336
337
338
339
340
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 335

def run
  obtain_main_dataset
  generate_main_string
  create_slack_desk_file
  consider_showing_the_content_of_the_generated_file
end

#set_this_program(i) ⇒ Object

#

set_this_program

#


123
124
125
126
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 123

def set_this_program(i)
  i = i.first if i.is_a? Array
  @this_program = i
end

#short_description?Boolean

#

short_description?

#

Returns:

  • (Boolean)


156
157
158
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 156

def short_description?
  @dataset.send(__method__)
end

#this_program?Boolean Also known as: name?, program?, name_of_program?, program_name?

#

this_program?

#

Returns:

  • (Boolean)


131
132
133
# File 'lib/rbt/linux/slackware/generate_slack_desc_file.rb', line 131

def this_program?
  @this_program
end