Class: RBT::Cookbooks::CreateCookbookYamlFile

Inherits:
Base show all
Defined in:
lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb

Overview

RBT::Cookbooks::CreateCookbookYamlFile

Constant Summary collapse

YAML_EXTENSION =
#

YAML_EXTENSION

#
'.yml'
USE_THIS_EDITOR =
#

USE_THIS_EDITOR

#
RBT.editor?
OPEN_IN_EDITOR_AFTER_CREATION =
#

OPEN_IN_EDITOR_AFTER_CREATION

#
false

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, #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(commandline_arguments = nil, run_already = true) ⇒ CreateCookbookYamlFile

#

initialize

The first argument to this class can be the full URL to the target program at hand.

#


65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 65

def initialize(
    commandline_arguments = nil,
    run_already           = true
  )
  reset
  set_commandline_arguments(
    commandline_arguments
  )
  # ======================================================================= #
  # === Handle blocks given to the class
  # ======================================================================= #
  if block_given?
    yielded = yield
    case yielded
    # ===================================================================== #
    # === :interactive_mode
    # ===================================================================== #
    when :interactive_mode
      append_to_the_commandline_arguments('--interactive'.dup)
    end
  end
  run if run_already
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

RBT::Cookbooks::CreateCookbookYamlFile[]

#


535
536
537
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 535

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

Instance Method Details

#add_hint_for_dependenciesObject

#

add_hint_for_dependencies

#


413
414
415
416
417
418
419
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 413

def add_hint_for_dependencies
  if is_on_roebe?
    ''
  else # Add this line to help newbies.
    "# The dependencies go in here.#{N}"
  end
end

#automatically_determine_the_program_name_based_on_the_url1_entry(i = ) ⇒ Object

#

automatically_determine_the_program_name_based_on_the_url1_entry

#


227
228
229
230
231
232
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 227

def automatically_determine_the_program_name_based_on_the_url1_entry(
    i = @hash_information_about_the_program[:url1]
  )
  program_information = ProgramInformation.new(File.basename(i))
  @hash_information_about_the_program[:program_name] = program_information.program_name?
end

#consider_opening_in_editor(this_file = file? ) ⇒ Object Also known as: edit_this_file

#

consider_opening_in_editor

We may use the newly created file in our main editor.

#


499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 499

def consider_opening_in_editor(
    this_file = file?
  )
  if this_file.nil? and !commandline_arguments?.empty?
    this_file = commandline_arguments?.first
    unless File.exist? this_file
      this_file = "#{this_file}.yml"
    end
  end
  if open_in_editor?
    _ = "#{@editor} #{this_file}"
    opne 'We will next open this file in our editor, as instructed due'
    opne 'to the ivar '+sfancy('@open_in_editor_after_creation')
    opne "#{rev}having been set to true."
    system(_)
  end
end

#description?Boolean

#

description?

#

Returns:

  • (Boolean)


380
381
382
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 380

def description?
  @hash_information_about_the_program[:description]
end

#do_not_open_in_editorObject

#

do_not_open_in_editor

#


366
367
368
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 366

def do_not_open_in_editor
  @open_in_editor_after_creation = false
end

#do_open_in_editorObject

#

do_open_in_editor

#


373
374
375
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 373

def do_open_in_editor
  @open_in_editor_after_creation = false
end

#enter_interactive_part(use_this_url = first_argument? ) ⇒ Object

#

enter_interactive_part

This method allows the user to specifically designate some parts of the recipe at hand, interactively.

Invocation example:

ccook --interactive
#


174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 174

def enter_interactive_part(
    use_this_url = first_argument?
  )
  @interactive_mode = true
  e 'A few questions may be asked next, about the values that should be'
  e 'added to the yaml file at hand.'
  e
  e 'Many of these can be skipped.'
  e
  if use_this_url
  else
    e slateblue('Remote URL?')
    set_url1($stdin.gets.chomp)
  end
  e
  e slateblue('Description of the program at hand? [Or just hit enter ')
  e slateblue('for no description at all]')
  set_description($stdin.gets.chomp)
  e
  e 'Done!'
end

#file?Boolean

#

file?

#

Returns:

  • (Boolean)


387
388
389
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 387

def file?
  @file
end

#homepage?Boolean

#

homepage?

#

Returns:

  • (Boolean)


459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 459

def homepage?
  require 'uri'
  _ = ''.dup
  if @hash_information_about_the_program.has_key? :url1
    use_this_url = @hash_information_about_the_program[:url1]
    if is_on_roebe?
      opne 'Using information from this url: '
      e
      e "  #{steelblue(use_this_url)}"
      e
    end
    uri = URI(use_this_url)
    if uri
      _ = "#{uri.scheme}://#{uri.host}"
    end
  end
  _
end
#

menu (menu tag)

#


128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 128

def menu(
    i = commandline_arguments?
  )
  if i.is_a? Array
    i.each {|entry| menu(entry) }
  else
    case i
    # ======================================================================= #
    # === --interactive
    #
    # This entry point enters the interactive component of this class.
    # ======================================================================= #
    when /^-?-?interactive$/i,
         /^-?-?enter(_|-)?interactive(_|-)?part$/
      enter_interactive_part
    # ======================================================================= #
    # === --help
    # ======================================================================= #
    when /^-?-?help$/i,'h','-h'
      show_help
      exit
    end
  end
end

#name_of_the_program?Boolean Also known as: program_name?, name?

#

name_of_the_program?

#

Returns:

  • (Boolean)


199
200
201
202
203
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 199

def name_of_the_program?
  File.basename(
    first_argument?
  )
end

#open_in_editor?Boolean

#

open_in_editor?

#

Returns:

  • (Boolean)


452
453
454
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 452

def open_in_editor?
  @open_in_editor_after_creation
end

#resetObject

#

reset (reset tag)

#


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
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 92

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @editor
  # ======================================================================= #
  @editor = USE_THIS_EDITOR
  # ======================================================================= #
  # === @template_file_to_use
  # ======================================================================= #
  @template_file_to_use =
    RBT.file_base_template_for_cookbook_yaml_files
  # ======================================================================= #
  # === @dataset
  # ======================================================================= #    
  @dataset = []
  # ======================================================================= #
  # === @hash_information_about_the_program
  # ======================================================================= #
  @hash_information_about_the_program = {}
  # ======================================================================= #
  # === @open_in_editor_after_creation
  # ======================================================================= #
  @open_in_editor_after_creation = OPEN_IN_EDITOR_AFTER_CREATION
  if is_on_roebe?
    @open_in_editor_after_creation = true
  end
  # ======================================================================= #
  # === @file
  # ======================================================================= #
  @file = nil
end

#runObject

#

run (run tag)

#


520
521
522
523
524
525
526
527
528
529
530
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 520

def run
  sanitize_first_argument
  menu # Should come before 
  verbose_make_use_of_the_template_file_and_then_sanitize_the_dataset
  if @dataset.empty?
    opne 'Empty dataset - can not store anything.'
  else
    store_dataset_into_file
    consider_opening_in_editor
  end
end

#sanitize_datasetObject Also known as: update

#

sanitize_dataset (sanitize tag)

This method will, in particular, replace some of the generic MACROS in the file with corresponding “sane” values.

#


251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 251

def sanitize_dataset
  @dataset.map! {|line|
    case line
    # ===================================================================== #
    # === description:
    # ===================================================================== #
    when /description: /
      if @hash_information_about_the_program.has_key? :description
        line = ' description: |'+N+
               '  '+description?
      end
    # ===================================================================== #
    # === NAME_OF_THE_PROGRAM
    # ===================================================================== #
    when /NAME_OF_THE_PROGRAM/
      line = program_name?.dup
      if @hash_information_about_the_program.has_key? :url1
        unless @hash_information_about_the_program.has_key? :program_name
          automatically_determine_the_program_name_based_on_the_url1_entry
        end
        line = @hash_information_about_the_program[:program_name].dup
      end
      line << ':' unless line.end_with? ':'
    # ===================================================================== #
    # === homepage:
    # ===================================================================== #
    when / homepage:/
      line = ' homepage: '+homepage?
    # ===================================================================== #
    # === required_deps_on:
    # ===================================================================== #
    when / required_deps_on:/
      line = " required_deps_on:#{add_hint_for_dependencies}"
    # ===================================================================== #
    # === last_update
    # ===================================================================== #
    when /last_update: DD MM YYYY/
      line = " last_update: #{dd_mm_yyyy}"
    # ===================================================================== #
    # === url1
    # ===================================================================== #
    when /url1:/
      if @hash_information_about_the_program.has_key? :url1
        line = ' url1: '+@hash_information_about_the_program[:url1]
      end
    end
    line
  }
end

#sanitize_first_argumentObject

#

sanitize_first_argument

#


481
482
483
484
485
486
487
488
489
490
491
492
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 481

def sanitize_first_argument
  _ = first_argument?
  if _.include? '-' and (_ =~ /\d+/)
    # ===================================================================== #
    # In this case assume a remote URL:
    # ===================================================================== #
    program_information = ProgramInformation.new(File.basename(_))
    @hash_information_about_the_program[:program_name]    = program_information.program_name?
    @hash_information_about_the_program[:program_version] = program_information.program_version?
    set_url1 _
  end
end

#set_description(i = 'Default description of the program.') ⇒ Object

#

set_description

#


156
157
158
159
160
161
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 156

def set_description(
    i = 'Default description of the program.'
  )
  i = i.to_s.dup
  @hash_information_about_the_program[:description] = i
end

#set_file(i) ⇒ Object

#

set_file

This method is not allowed to do any modifications - it will simply assign towards the @file variable.

#


445
446
447
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 445

def set_file(i)
  @file = i
end

#set_filename(i) ⇒ Object Also known as: set_real_name

#

set_filename

This method will store the filename, i.e. where to store the file.

#


426
427
428
429
430
431
432
433
434
435
436
437
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 426

def set_filename(i)
  i = i.to_s.dup
  i = return_program_information(i)
  if i
    i << YAML_EXTENSION unless i.end_with? '.yml'
    # ===================================================================== #
    # Since as of March 2014 we will also downcase the name.
    # ===================================================================== #
    i.downcase!
  end
  set_file(i)
end

#set_program_name(i = '') ⇒ Object Also known as: set_short_name

#

set_program_name

This sets the short name of the program in question.

#


211
212
213
214
215
216
217
218
219
220
221
222
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 211

def set_program_name(i = '')
  # ======================================================================= #
  # First, do some sanitization.
  # ======================================================================= #
  if i.include? '.' # Assume that a file extension was given. Chop it away thus.
    i = i.to_s.dup
    i.sub!(/#{File.extname(i)}/,'')
  end
  i.delete!('_') if i.include? '_'
  i.downcase!
  @hash_information_about_the_program[:program_name] = i # This variable can be inferred from the url.
end

#set_url1(i = '') ⇒ Object Also known as: set_url

#

set_url1

#


348
349
350
351
352
353
354
355
356
357
358
359
360
361
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 348

def set_url1(
    i = ''
  )
  @hash_information_about_the_program[:url1] = i
  unless i.empty?
    i = return_program_information(
          remove_archive_stuff_at_the_end(
            File.basename(i)
          )
        )
    set_filename(i)
    set_short_name(i)
  end
end

#short_program_name?Boolean

#

short_program_name?

#

Returns:

  • (Boolean)


237
238
239
240
241
242
243
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 237

def short_program_name?
  _ = program_name?
  if @hash_information_about_the_program.has_key? :program_name
    _ = @hash_information_about_the_program[:program_name]
  end
  _
end

#show_helpObject

#

show_help (help tag)

#


394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 394

def show_help
  e
  e 'How to create a new cookbook:' # newcookbook --help
  e
  e 'Simply provide the name of the .yml file, such as:'
  e
  e '   newcookbook php.yml'
  e
  e 'Alternatively, provide a remote URL which we will use to '\
    'generate such a file.'
  e
  e '  --interactive # this will ask you several questions before'
  e '                # the new .yml file will be created'
  e
end

#store_dataset_into_fileObject Also known as: store, save, consider_creating_a_new_cookbook_file

#

store_dataset_into_file (store tag)

This method will store the dataset describing out .yml file into a (local) .yml file finally.

#


307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 307

def store_dataset_into_file
  what = @dataset.join(N)
  into = short_program_name?+'.yml'
  if File.exist? into
    if File.directory? into
      opne sdir(into)+swarn(' seems to be a directory. Will not overwrite it.')
    else
      opnwarn 'But there already is a file at '+sfile(into)+swarn('.')
      opnwarn 'Shall we really overwrite this file?'+
               steelblue(' [y/n]')
      case $stdin.gets.chomp
      when 'y','yes','j','ja'
        opnwarn 'Overwriting `'+sfile(into)+swarn('` now.')
        write_what_into(what, into)
      else
        opnwarn 'Ok - not overwriting.'
      end
    end
  else
    opne "Saving into the file `#{sfile(into)}#{rev}` next."
    write_what_into(what, into)
  end
end

#verbose_make_use_of_the_template_file_and_then_sanitize_the_datasetObject

#

verbose_make_use_of_the_template_file_and_then_sanitize_the_dataset

#


336
337
338
339
340
341
342
343
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 336

def verbose_make_use_of_the_template_file_and_then_sanitize_the_dataset
  _ = @template_file_to_use
  if File.exist? _
    opne "Making use of a template file (#{sfile(File.basename(_))}#{rev})."
    @dataset = File.readlines(_).map(&:chomp)
    sanitize_dataset
  end
end