Class: RBT::CreateSnapcraftFile
- Inherits:
-
Base
show all
- Defined in:
- lib/rbt/generate_files/create_snapcraft_file.rb
Overview
Constant Summary
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::CreateSnapcraftFile[] ========================================================================= #.
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(program_name = nil, run_already = true) ⇒ CreateSnapcraftFile
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 38
def initialize(
program_name = nil,
run_already = true
)
reset
set_program_name(
program_name
)
run if run_already
end
|
Class Method Details
.[](i = ARGV) ⇒ Object
#
RBT::CreateSnapcraftFile[]
#
423
424
425
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 423
def self.[](i = ARGV)
new(i)
end
|
Instance Method Details
#add(i = '', add_newline = true) ⇒ Object
#
add (add tag)
Add onto the main string through this method.
#
116
117
118
119
120
121
122
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 116
def add(
i = '',
add_newline = true
)
@snapcraft_file_content << i
@snapcraft_file_content << N if add_newline
end
|
#add_apps ⇒ Object
#
add_apps (apps tag)
This refers essentially to the binaries of a program.
#
375
376
377
378
379
380
381
382
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 375
def add_apps
_ = "apps:\n".dup
binaries?.each {|this_binary|
_ << " #{this_binary}:\n"
_ << " command: bin/#{this_binary}\n"
}
add(_)
end
|
#add_confinement(use_this_confinement = 'strict') ⇒ Object
#
add_confinement
Confinement describes the level of confinement that can be applied to the given app.
Can be either ‘devmode’ or ‘strict’.
Unconfined applications, specified with ‘devmode’, can only be released to the hidden “edge” channel.
#
206
207
208
209
210
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 206
def add_confinement(
use_this_confinement = 'strict'
)
add('confinement: '+use_this_confinement)
end
|
#add_everything ⇒ Object
387
388
389
390
391
392
393
394
395
396
397
398
399
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 387
def add_everything
add_name
add_program_version
add_program_summary
add_program_licence
add_program_description
add_the_proper_base
add_grade
add_confinement
add_newline
add_apps
add_parts
end
|
#add_grade(use_this_grade = 'stable') ⇒ Object
#
add_grade (grade tag)
The grade can be ‘devel’ or ‘stable’. Only stable will be used for release into candidate/stable channels.
#
189
190
191
192
193
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 189
def add_grade(
use_this_grade = 'stable'
)
add("grade: #{use_this_grade}")
end
|
#add_name ⇒ Object
169
170
171
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 169
def add_name
add('name: '+short_name?)
end
|
#add_newline ⇒ Object
#
add_newline
This method will simply add a newline to the snapcraft file.
#
129
130
131
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 129
def add_newline
add
end
|
#add_parts ⇒ Object
#
add_parts (parts tag)
This method denotes the necessary parts (components) of our program at hand.
#
280
281
282
283
284
285
286
287
288
289
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 280
def add_parts
heredoc_variable = <<-EOF
parts:
#{name_of_this_individual_program?}:
# See 'snapcraft plugins' for more information.
plugin: #{plugin_type?}
source: #{remote_url?}
EOF
add(heredoc_variable)
end
|
#add_program_description ⇒ Object
#
add_program_description (desc tag)
#
332
333
334
335
336
337
338
339
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 332
def add_program_description
description_to_use = "description: |#{N}".dup
_ = @dataset.description?
_.split(N).each {|line|
description_to_use << ' '+line+N
}
add(description_to_use.strip.chomp)
end
|
#add_program_licence ⇒ Object
229
230
231
232
233
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 229
def add_program_licence
if licence?
add("license: #{licence?}")
end
end
|
#add_program_summary ⇒ Object
222
223
224
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 222
def add_program_summary
add('summary: |'+N+' '+short_desc?)
end
|
#add_program_version ⇒ Object
#
add_program_version (version tag)
#
215
216
217
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 215
def add_program_version
add("version: '#{program_version?}'")
end
|
#add_the_proper_base ⇒ Object
#
add_the_proper_base
This will add a String such as:
'base: core18'
The base keyword declares which base snap to use with your project. A base snap is a special kind of snap that provides a run-time environment alongside a minimal set of libraries that are common to most applications.
For more documentation see:
https://snapcraft.io/docs/ruby-applications
#
324
325
326
327
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 324
def add_the_proper_base
add('base: core18')
add_newline
end
|
#binaries? ⇒ Boolean
294
295
296
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 294
def binaries?
@dataset.binaries?
end
|
#generate_the_snapcraft_file(into = into?
) ⇒ Object
#
generate_the_snapcraft_file
#
361
362
363
364
365
366
367
368
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 361
def generate_the_snapcraft_file(
into = into?
)
what = what?
remove_file(into) if File.exist? into
opne "Now saving the content into the file `#{sfile(into)}`."
write_what_into(what, into)
end
|
#into? ⇒ Boolean
#
into?
Where to store into - a file.
#
107
108
109
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 107
def into?
@internal_hash[:store_into_this_file]
end
|
#licence? ⇒ Boolean
249
250
251
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 249
def licence?
@dataset.licence?
end
|
#name_of_this_individual_program? ⇒ Boolean
#
name_of_this_individual_program?
#
263
264
265
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 263
def name_of_this_individual_program?
@name_of_this_individual_program
end
|
#notify_the_user_that_we_will_create_a_new_snapcraft_file_next(_ = programs?
) ⇒ Object
#
notify_the_user_that_we_will_create_a_new_snapcraft_file_next
#
344
345
346
347
348
349
350
351
352
353
354
355
356
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 344
def notify_the_user_that_we_will_create_a_new_snapcraft_file_next(
_ = programs?
)
result = 'Creating a snapcraft file next for the program'.dup
if _.is_a?(Array) and (_.size > 1)
result << 's'
end
if _.is_a? Array
_ = _.join(', ').strip
end
result << " called #{royalblue(_)}."
opne result
end
|
#plugin_type? ⇒ Boolean
#
plugin_type?
This is currently hardcoded.
#
303
304
305
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 303
def plugin_type?
'autotools'
end
|
#program_name? ⇒ Boolean
Also known as:
programs?
143
144
145
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 143
def program_name?
@program_name
end
|
#program_version? ⇒ Boolean
162
163
164
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 162
def program_version?
@dataset.program_version?
end
|
#remote_url? ⇒ Boolean
256
257
258
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 256
def remote_url?
@dataset.remote_url?
end
|
#reset ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 52
def reset
super()
infer_the_namespace
@snapcraft_file_content = ''.dup
@internal_hash[:store_into_this_file] = 'snapcraft.yaml'
end
|
#run ⇒ Object
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 404
def run
programs?.each {|this_program|
reset
try_to_find_corresponding_program(this_program) set_name_of_this_individual_program(this_program)
set_store_into_this_file(
this_program+'-'+program_version?+'-snapcraft'
)
notify_the_user_that_we_will_create_a_new_snapcraft_file_next(
this_program
)
add_everything
generate_the_snapcraft_file
}
end
|
#set_name_of_this_individual_program(i) ⇒ Object
#
set_name_of_this_individual_program
#
270
271
272
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 270
def set_name_of_this_individual_program(i)
@name_of_this_individual_program = i
end
|
#set_program_name(i = '') ⇒ Object
#
set_program_name
Denote onto which program we will work on.
#
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 85
def set_program_name(i = '')
if i.nil?
opne 'Please provide a valid name for a program to this class.'
exit
end
i = [i].flatten.compact
if i.first.is_a?(String) and i.first.include?(',')
i = i.map {|entry|
if entry.include? ','
entry = entry.split(',')
end
entry
}.flatten.compact
end
@program_name = i
end
|
#set_store_into_this_file(i) ⇒ Object
#
set_store_into_this_file
#
74
75
76
77
78
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 74
def set_store_into_this_file(i)
i = i.dup if i.frozen?
i << '.yaml' unless i.end_with? '.yaml'
@internal_hash[:store_into_this_file] = i
end
|
#short_desc? ⇒ Boolean
238
239
240
241
242
243
244
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 238
def short_desc?
_ = @dataset.short_desc?
if _.size > 66
_ = _[0 .. 60] end
return _
end
|
#short_name? ⇒ Boolean
#
short_name?
Tap into @dataset to find out the short name of the program at hand.
#
179
180
181
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 179
def short_name?
@dataset.short_name?
end
|
#try_to_find_corresponding_program(program_name = program_name?
) ⇒ Object
#
try_to_find_corresponding_program
This method attempts to find a corresponding entry from the individual yaml files.
#
153
154
155
156
157
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 153
def try_to_find_corresponding_program(
program_name = program_name?
)
@dataset = action(:SanitizeCookbook, program_name) { :fast }
end
|
#what? ⇒ Boolean
136
137
138
|
# File 'lib/rbt/generate_files/create_snapcraft_file.rb', line 136
def what?
@snapcraft_file_content
end
|