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 =
'.yml'
- USE_THIS_EDITOR =
RBT.editor?
- OPEN_IN_EDITOR_AFTER_CREATION =
#
OPEN_IN_EDITOR_AFTER_CREATION
#
false
LeanPrototype::ALL_COLOUR_METHODS, LeanPrototype::ARRAY_KDE_KONSOLE_COLOURS_IN_USE, LeanPrototype::DAY_NAMES, LeanPrototype::NAMESPACE, LeanPrototype::SILENT_REDIRECTION
Class Method Summary
collapse
-
.[](i = ARGV) ⇒ Object
# === RBT::Cookbooks::CreateCookbookYamlFile[] ========================================================================= #.
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
#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
)
if block_given?
yielded = yield
case yielded
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_dependencies ⇒ Object
#
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 "# 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
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_editor ⇒ Object
#
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_editor ⇒ Object
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
387
388
389
|
# File 'lib/rbt/cookbooks/create_cookbook_yaml_file/create_cookbook_yaml_file.rb', line 387
def file?
@file
end
|
#homepage? ⇒ 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
|
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 (
i = commandline_arguments?
)
if i.is_a? Array
i.each {|entry| (entry) }
else
case i
when /^-?-?interactive$/i,
/^-?-?enter(_|-)?interactive(_|-)?part$/
enter_interactive_part
when /^-?-?help$/i,'h','-h'
show_help
exit
end
end
end
|
#name_of_the_program? ⇒ Boolean
Also known as:
program_name?, name?
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
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
|
#reset ⇒ Object
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 = USE_THIS_EDITOR
@template_file_to_use =
RBT.file_base_template_for_cookbook_yaml_files
@dataset = []
@hash_information_about_the_program = {}
@open_in_editor_after_creation = OPEN_IN_EDITOR_AFTER_CREATION
if is_on_roebe?
@open_in_editor_after_creation = true
end
@file = nil
end
|
#run ⇒ Object
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
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_dataset ⇒ Object
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
when /description: /
if @hash_information_about_the_program.has_key? :description
line = ' description: |'+N+
' '+description?
end
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? ':'
when / homepage:/
line = ' homepage: '+homepage?
when / required_deps_on:/
line = " required_deps_on:#{add_hint_for_dependencies}"
when /last_update: DD MM YYYY/
line = " last_update: #{dd_mm_yyyy}"
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_argument ⇒ Object
#
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+/)
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
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'
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 = '')
if i.include? '.' 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 end
|
#set_url1(i = '') ⇒ Object
Also known as:
set_url
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
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_help ⇒ Object
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:' 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_file ⇒ Object
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_dataset ⇒ Object
#
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
|