generate_rc_file 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: be06714601a7769a8e1546dfc29574a0a98bacaa20c7d2e36fc07065c3d9e00f
4
+ data.tar.gz: 90ae2caf6b683250c5a4c86a3095c8ad8b44da9a59144f324c23b21eef7105ff
5
+ SHA512:
6
+ metadata.gz: 0de91c889002b64a3406b829048e8738cf75dfb983b14df5e3f36516d203a5af14c7c598587e095ff7676614f7b8d1aaacef5e4fdfe58092799c5fdf79ecbeb4
7
+ data.tar.gz: da47f4293c224e59ee0efe445f669f168e9b0f5e3b93b4255410a051a616ef9677839b2cf121f387d888077e5145c0576cbde1bdeb0ebd1d23a2c41ed87e2f14
@@ -0,0 +1,11 @@
1
+ = Usage of this Library
2
+
3
+ == Requiring it
4
+
5
+ require 'generate_rc_file'
6
+
7
+ == Using it in a project
8
+
9
+ _ = GenerateRc_file.new("science_news")
10
+ _.run
11
+
@@ -0,0 +1,47 @@
1
+ # =========================================================================== #
2
+ # Gemspec for Project GenerateRcFile.
3
+ # =========================================================================== #
4
+ require 'generate_rc_file/version/version.rb'
5
+
6
+ Gem::Specification.new { |s|
7
+
8
+ s.name = 'generate_rc_file'
9
+ s.version = GenerateRcFile::VERSION
10
+ s.date = Time.now.strftime('%Y-%m-%d')
11
+
12
+ s.summary = <<-EOF
13
+
14
+ If you have specific suggestions to make this gem more
15
+ useful for others, please drop me an email at:
16
+
17
+ shevegen@gmail.com
18
+
19
+ Thank you.
20
+
21
+ EOF
22
+
23
+ s.description = <<-EOF
24
+
25
+ This library is called generate_rc_file.
26
+
27
+ EOF
28
+
29
+ s.extra_rdoc_files = %w()
30
+
31
+ s.authors = ['Robert A. Heiler']
32
+ s.email = 'shevegen@gmail.com'
33
+ s.files = Dir['**/*']
34
+ # s.files << 'README.md'
35
+ s.files << 'USAGE.md'
36
+ s.license = 'GPL-2.0'
37
+ s.homepage = 'https://github.com/shevegen/generate_rc_file'
38
+
39
+ s.required_ruby_version = '>= '+RUBY_VERSION
40
+ s.required_rubygems_version = '>= '+Gem::VERSION
41
+ s.rubygems_version = '>= '+Gem::VERSION
42
+
43
+ # Dependencies for the project:
44
+ s.add_dependency 'colours'
45
+ s.add_dependency 'opn'
46
+
47
+ }
@@ -0,0 +1 @@
1
+ require 'generate_rc_file/generate_rc_file.rb'
@@ -0,0 +1,86 @@
1
+ #!/System/Index/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'generate_rc_file/constants.rb'
6
+ # =========================================================================== #
7
+ class GenerateRcFile
8
+
9
+ N = "\n"
10
+
11
+ # ========================================================================= #
12
+ # === ISO_ENCODING
13
+ # ========================================================================= #
14
+ ISO_ENCODING = 'ISO-8859-1'
15
+
16
+ # ========================================================================= #
17
+ # === LINUX_YAML
18
+ # ========================================================================= #
19
+ if ENV['LINUX_YAML']
20
+ LINUX_YAML = ENV['LINUX_YAML']+'/' # '/Users/x/DATA/PC/OS/LINUX/YAML/'
21
+ else
22
+ LINUX_YAML = '/Users/x/DATA/PC/OS/LINUX/YAML/'
23
+ end
24
+
25
+ # ========================================================================= #
26
+ # === RCFILE_GENERATOR_YAML_DIRECTORY
27
+ #
28
+ # Hardcoded path for now.
29
+ # ========================================================================= #
30
+ RCFILE_GENERATOR_YAML_DIRECTORY =
31
+ '/Users/x/DATA/PROGRAMMING_LANGUAGES/RUBY/src/'\
32
+ 'rcfiles/lib/rcfiles/yaml/'
33
+
34
+ # ========================================================================= #
35
+ # === ARRAY_WHICH_FILES_TO_ALIAS
36
+ # ========================================================================= #
37
+ ARRAY_WHICH_FILES_TO_ALIAS = %w(
38
+ aliases
39
+ cd_aliases
40
+ programs_aliases
41
+ german_umlaute
42
+ special_aliases
43
+ ) # ^^^ Which files we will alias.
44
+
45
+ # ========================================================================= #
46
+ # === ARRAY_WHICH_FILES_TO_EXPORT
47
+ # ========================================================================= #
48
+ ARRAY_WHICH_FILES_TO_EXPORT = %w(
49
+ compile
50
+ file_information
51
+ gnome
52
+ kde
53
+ kernel
54
+ roeberia_settings
55
+ system_settings
56
+ video
57
+ ) # ^^^ Which files we will EXPORT.
58
+
59
+ # ========================================================================= #
60
+ # === ARRAY_ALL_FILES
61
+ # ========================================================================= #
62
+ ARRAY_ALL_FILES = (
63
+ ARRAY_WHICH_FILES_TO_ALIAS+ARRAY_WHICH_FILES_TO_EXPORT
64
+ ).flatten
65
+
66
+ # ========================================================================= #
67
+ # === BASE_DIR
68
+ #
69
+ # Where to store. The base directory. We need to keep in mind that on
70
+ # some systems this directory does not exist but also can not be
71
+ # created, due to lack of permissions, for instance.
72
+ # ========================================================================= #
73
+ BASE_DIR = '/AUTOGENERATED/'
74
+
75
+ # ========================================================================= #
76
+ # === HEADER1
77
+ # ========================================================================= #
78
+ HEADER1 = '
79
+ # =========================================================================== #
80
+ # Automatically generated file at '+Time.now.strftime('%d.%m.%Y')+'
81
+ # /AUTOGENERATED/'
82
+ HEADER2 = '# from:
83
+ # $RSRC/generate_rc_file/lib/generate_rc_file/generate_rc_file.rb
84
+ # =========================================================================== #'+N+N
85
+
86
+ end
@@ -0,0 +1,274 @@
1
+ #!/System/Index/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === GenerateRcFile
6
+ #
7
+ # This class will generate a single standalone rc file.
8
+ # =========================================================================== #
9
+ require 'opn'
10
+ begin
11
+ require 'colours'
12
+ rescue LoadError; end
13
+ require 'yaml'
14
+ require 'fileutils'
15
+ require 'generate_rc_file/version/version.rb'
16
+ require 'generate_rc_file/constants.rb'
17
+
18
+ class GenerateRcFile # require 'x/tools/generate_rc_file.rb'; GenerateRcFile.new
19
+
20
+ include Colours
21
+
22
+ attr_accessor :use_putty_style_aliases
23
+
24
+ # ========================================================================= #
25
+ # === initialize
26
+ # ========================================================================= #
27
+ def initialize(
28
+ i = ARGV,
29
+ run_already = true
30
+ )
31
+ reset
32
+ set_commandline(i)
33
+ parse_commandline
34
+ run if run_already
35
+ end
36
+
37
+ # ========================================================================= #
38
+ # === base_directory?
39
+ # ========================================================================= #
40
+ def base_directory?
41
+ @base_dir
42
+ end; alias base_dir? base_directory? # === base_dir?
43
+
44
+ # ========================================================================= #
45
+ # === reset
46
+ # ========================================================================= #
47
+ def reset
48
+ set_base_dir(BASE_DIR)
49
+ @use_putty_style_aliases = false # if true we use putty-style aliases.
50
+ end
51
+
52
+ # ========================================================================= #
53
+ # === enable_putty_style
54
+ # ========================================================================= #
55
+ def enable_putty_style
56
+ @use_putty_style_aliases = true
57
+ end
58
+
59
+ # ========================================================================= #
60
+ # === ensure_main_encoding
61
+ #
62
+ # Ensure a uniform encoding here.
63
+ # ========================================================================= #
64
+ def ensure_main_encoding(
65
+ i,
66
+ use_this_encoding = ISO_ENCODING
67
+ )
68
+ if i.is_a?(String)
69
+ i = i.dup if i.frozen?
70
+ i = i.force_encoding(use_this_encoding)
71
+ end
72
+ i
73
+ end
74
+
75
+ # ========================================================================= #
76
+ # === show_help (help tag)
77
+ # ========================================================================= #
78
+ def show_help
79
+ e
80
+ e 'You can use another target directory.'
81
+ e
82
+ e 'To do this, do:'
83
+ e
84
+ e ' generate_rc_file --dir=~/AUTOGENERATED'
85
+ e
86
+ end
87
+
88
+ # ========================================================================= #
89
+ # === parse_commandline
90
+ # ========================================================================= #
91
+ def parse_commandline(i = @commandline)
92
+ @commandline.each {|entry|
93
+ case entry # case tag
94
+ # ===================================================================== #
95
+ # === gcfile --dir=~/AUTOGENERATED
96
+ # ===================================================================== #
97
+ when /-?-?dir=(.+)/ # See: http://rubular.com/r/kF3uKcOoL9
98
+ set_base_dir($1.to_s.dup)
99
+ try_to_create_the_base_directory_if_it_does_not_exist(base_dir?) # Also ensure that the directory exists.
100
+ # ===================================================================== #
101
+ # === --help
102
+ # ===================================================================== #
103
+ when /-?-?help/i
104
+ show_help
105
+ exit
106
+ end
107
+ }
108
+ purge_entries_with_two_hyphens
109
+ end; alias menu parse_commandline # === menu
110
+
111
+ # ========================================================================= #
112
+ # === purge_entries_with_two_hyphens
113
+ # ========================================================================= #
114
+ def purge_entries_with_two_hyphens
115
+ @commandline.reject! {|entry| entry.to_s.start_with? '--' }
116
+ end
117
+
118
+ # ========================================================================= #
119
+ # === set_commandline
120
+ # ========================================================================= #
121
+ def set_commandline(i)
122
+ i = [i] unless i.is_a? Array
123
+ @commandline = i
124
+ end
125
+
126
+ # ========================================================================= #
127
+ # === set_store_here
128
+ #
129
+ # The argument to this method shall always be the absolute path.
130
+ # ========================================================================= #
131
+ def set_store_here(i)
132
+ @store_here = i
133
+ end
134
+
135
+ # ========================================================================= #
136
+ # === add_header_for
137
+ #
138
+ # Use this method if you want to return the default header.
139
+ # ========================================================================= #
140
+ def add_header_for(this_file) # Add the default header here.
141
+ HEADER1+this_file+'_rc'+N+HEADER2
142
+ end
143
+
144
+ # ========================================================================= #
145
+ # === load_yaml
146
+ # ========================================================================= #
147
+ def load_yaml(i) # A simple, failsafe yaml-wrapper.
148
+ begin
149
+ YAML.load_file(i)
150
+ rescue Exception => error
151
+ opn; e 'We encountered an error in GenerateRCFile, in '\
152
+ 'the method load_yaml():'
153
+ pp error
154
+ end
155
+ end
156
+
157
+ # ========================================================================= #
158
+ # === do_generate_the_rc_file
159
+ # ========================================================================= #
160
+ def do_generate_the_rc_file(use_this_input = @commandline)
161
+ if use_this_input.is_a? Array
162
+ if use_this_input.empty?
163
+ use_this_input << ARRAY_ALL_FILES # Add all possible rc files here.
164
+ else
165
+ case use_this_input
166
+ when 'all',:all
167
+ use_this_input << ARRAY_ALL_FILES
168
+ when 'cd',:cd
169
+ use_this_input << 'cd_aliases'
170
+ end
171
+ end
172
+ end
173
+ use_this_input.flatten.each {|generate_this_file|
174
+ generate_this_file = generate_this_file.to_s # We need a String.
175
+ full_path_to_the_file = LINUX_YAML+generate_this_file+'.yml'
176
+ # ===================================================================== #
177
+ # Next, add some exceptions:
178
+ # ===================================================================== #
179
+ if full_path_to_the_file.include? 'aliases.yml'
180
+ full_path_to_the_file = RCFILE_GENERATOR_YAML_DIRECTORY+'aliases.yml'
181
+ elsif full_path_to_the_file.include? 'cd_aliases.yml'
182
+ full_path_to_the_file = RCFILE_GENERATOR_YAML_DIRECTORY+'cd_aliases.yml'
183
+ elsif full_path_to_the_file.include? 'programs_aliases.yml'
184
+ full_path_to_the_file = RCFILE_GENERATOR_YAML_DIRECTORY+'programs_aliases.yml'
185
+ end
186
+ hash_dataset = load_yaml(full_path_to_the_file)
187
+ _ = ''.dup
188
+ _ << add_header_for(generate_this_file) # Add the default header here.
189
+ # ===================================================================== #
190
+ # We have to find out whether we will use alias-style or export-style
191
+ # next. For alias-style, we also may have to use putty-style or
192
+ # normal-style.
193
+ # ===================================================================== #
194
+ if ARRAY_WHICH_FILES_TO_ALIAS.include? generate_this_file
195
+ # =================================================================== #
196
+ # Ok, alias-style comes here.
197
+ # =================================================================== #
198
+ hash_dataset.each_pair {|key, value|
199
+ key = ensure_main_encoding(key.to_s)
200
+ value = ensure_main_encoding(value.to_s).strip
201
+ if @use_putty_style_aliases
202
+ _ << "alias "+key.to_s+'="'+value+'"'+N
203
+ else
204
+ if value.include? "'" # Need to use another syntax for included ' characters.
205
+ _ << "alias '#{key}'=\"#{value}\"#{N}"
206
+ else
207
+ _ << "alias '#{key}'='#{value}'#{N}"
208
+ end
209
+ end
210
+ }
211
+ else
212
+ # =================================================================== #
213
+ # Ok, in this case we assume export-style.
214
+ # =================================================================== #
215
+ hash_dataset.each_pair {|key, value|
216
+ value = value.to_s
217
+ _ << "export "+key.to_s+'="'+value+'"'+N
218
+ }
219
+ end
220
+ set_store_here(@base_dir+generate_this_file+'_rc')
221
+ store_what_where(_, @store_here)
222
+ }
223
+ end
224
+
225
+ # ========================================================================= #
226
+ # === set_base_dir
227
+ # ========================================================================= #
228
+ def set_base_dir(i = BASE_DIR)
229
+ i = i.to_s.dup # Work on a "fresh" copy.
230
+ # ======================================================================= #
231
+ # Must check if the input contains a ~ character, which is then assumed
232
+ # to refer to the home dir of the user.
233
+ # ======================================================================= #
234
+ if i.include? '~'
235
+ i = File.expand_path(i)
236
+ end
237
+ i << '/' unless i.end_with? '/'
238
+ @base_dir = i
239
+ end
240
+
241
+ # ========================================================================= #
242
+ # === try_to_create_the_base_directory_if_it_does_not_exist
243
+ # ========================================================================= #
244
+ def try_to_create_the_base_directory_if_it_does_not_exist(i = @base_dir)
245
+ unless File.directory? i
246
+ FileUtils.mkdir_p(i) if File.writable?(File.dirname(i))
247
+ end
248
+ end
249
+
250
+ # ========================================================================= #
251
+ # === store_what_where
252
+ # ========================================================================= #
253
+ def store_what_where(
254
+ what = @_,
255
+ where = base_directory?+'aliases_rc'
256
+ ) # store what, where.
257
+ opn; e 'Now storing at `'+sfile(where)+'`.'
258
+ File.open(where, 'w+') {|f| f.puts what }
259
+ end
260
+
261
+ # ========================================================================= #
262
+ # === run
263
+ # ========================================================================= #
264
+ def run
265
+ do_generate_the_rc_file
266
+ end
267
+
268
+ end
269
+
270
+ if __FILE__ == $PROGRAM_NAME
271
+ GenerateRcFile.new(ARGV)
272
+ end # generate_rc_file --help
273
+ # generate_rc_file all
274
+ # generate_rc_file cd_aliases
@@ -0,0 +1,14 @@
1
+ #!/System/Index/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'generate_rc_file/version/version.rb'
6
+ # =========================================================================== #
7
+ class GenerateRcFile
8
+
9
+ # ========================================================================= #
10
+ # === GenerateRcFile::VERSION
11
+ # ========================================================================= #
12
+ VERSION = '0.0.17'
13
+
14
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: generate_rc_file
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.17
5
+ platform: ruby
6
+ authors:
7
+ - Robert A. Heiler
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-08-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: colours
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: opn
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: |2+
42
+
43
+ This library is called generate_rc_file.
44
+
45
+ email: shevegen@gmail.com
46
+ executables: []
47
+ extensions: []
48
+ extra_rdoc_files: []
49
+ files:
50
+ - USAGE.md
51
+ - generate_rc_file.gemspec
52
+ - lib/generate_rc_file.rb
53
+ - lib/generate_rc_file/constants.rb
54
+ - lib/generate_rc_file/generate_rc_file.rb
55
+ - lib/generate_rc_file/version/version.rb
56
+ homepage: https://github.com/shevegen/generate_rc_file
57
+ licenses:
58
+ - GPL-2.0
59
+ metadata: {}
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 2.6.3
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 3.0.4
74
+ requirements: []
75
+ rubygems_version: 3.0.4
76
+ signing_key:
77
+ specification_version: 4
78
+ summary: 'If you have specific suggestions to make this gem more useful for others,
79
+ please drop me an email at: shevegen@gmail.com Thank you.'
80
+ test_files: []