generate_rc_file 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []