generate_shell_completion 0.0.16

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a490a6fc92c57597553c6812c276c418b45788cf26db362db051030805a2cd09
4
+ data.tar.gz: b84865cd571afdb95ec7330c66ecdbe83eca28170fd3db157eed741bfbb4690d
5
+ SHA512:
6
+ metadata.gz: 13c074403c84c66f909283cce30da19f428f8e2686d14d0ebc2fbafcd1b815d2de4666264b85a76703325727582c8c535daea5add71ae06349704cac3d4a4479
7
+ data.tar.gz: 6da482a5b1ef233071e64a48e0898d2da81813ab08809d13b9eda8132b0ad3e768082c3d56194e635546e3b6c2562d6ca416ee0d2fa818fc1f8406e7cf875120
data/USAGE.md ADDED
@@ -0,0 +1,11 @@
1
+ = Usage of this Library
2
+
3
+ == Requiring it
4
+
5
+ require 'generate_shell_completion'
6
+
7
+ == Using it in a project
8
+
9
+ _ = Generate_shell_completion.new("science_news")
10
+ _.run
11
+
@@ -0,0 +1,41 @@
1
+ # =========================================================================== #
2
+ # Gemspec for Project generate_shell_completion.
3
+ # =========================================================================== #
4
+ require 'generate_shell_completion/version/version.rb'
5
+ require 'roebe'
6
+
7
+ Gem::Specification.new { |s|
8
+
9
+ s.name = 'generate_shell_completion'
10
+ s.version = GenerateShellCompletion::GenerateShellCompletion::VERSION
11
+ s.date = Time.now.strftime('%Y-%m-%d')
12
+
13
+ s.summary = <<-EOF
14
+ EOF
15
+
16
+ s.description = <<-EOF
17
+
18
+ This library is called generate_shell_completion.
19
+
20
+ EOF
21
+
22
+ s.extra_rdoc_files = %w()
23
+
24
+ s.authors = ['Robert A. Heiler']
25
+ s.email = Roebe.email?
26
+ s.files = Dir['**/*']
27
+ s.files << 'USAGE.md'
28
+ s.license = 'GPL-2.0'
29
+ s.homepage = 'https://rubygems.org/gems/generate_shell_completion'
30
+
31
+ s.required_ruby_version = '>= '+Roebe.third_most_stable_version_of_ruby
32
+ s.required_rubygems_version = '>= '+Gem::VERSION
33
+ s.rubygems_version = '>= '+Gem::VERSION
34
+
35
+ # ========================================================================= #
36
+ # Dependencies for the project:
37
+ # ========================================================================= #
38
+ s.add_dependency 'colours'
39
+ s.add_dependency 'save_file'
40
+
41
+ }
@@ -0,0 +1,267 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === GenerateShellCompletion::GenerateShellCompletion
6
+ #
7
+ # This class will generate a completion file for bash.
8
+ #
9
+ # I wanted to have a new class rather than bundle it inside of the
10
+ # project RBT.
11
+ #
12
+ # Usage example:
13
+ #
14
+ # GenerateShellCompletion::GenerateShellCompletion.new(ARGV)
15
+ #
16
+ # =========================================================================== #
17
+ # require 'generate_shell_completion'
18
+ # =========================================================================== #
19
+ require 'generate_shell_completion/version/version.rb'
20
+
21
+ module GenerateShellCompletion
22
+
23
+ class GenerateShellCompletion # === GenerateShellCompletion::GenerateShellCompletion
24
+
25
+ begin
26
+ require 'colours'
27
+ include Colours
28
+ rescue LoadError; end
29
+
30
+ require 'opn'
31
+ require 'save_file/module'
32
+
33
+ N = "\n"
34
+
35
+ # ========================================================================= #
36
+ # === STORE_HERE
37
+ # ========================================================================= #
38
+ STORE_HERE = 'completion.sh' # Default.
39
+
40
+ # ========================================================================= #
41
+ # === initialize
42
+ #
43
+ # _ = GenerateShellCompletion.new(, :dont_run_yet)
44
+ # ========================================================================= #
45
+ def initialize(
46
+ i = STORE_HERE,
47
+ run_already = true
48
+ )
49
+ reset
50
+ set_store_where(i)
51
+ if run_already.to_s.include? 'dont'
52
+ run_already = false
53
+ end
54
+ run if run_already
55
+ end
56
+
57
+ # ========================================================================= #
58
+ # === reset (reset tag)
59
+ # ========================================================================= #
60
+ def reset
61
+ @append_files_from_the_current_directory = false # Default.
62
+ @prepend_this = nil
63
+ set_name_of_the_shell_function 'completion_for_ry' # Default name.
64
+ set_dataset
65
+ set_aliases
66
+ end
67
+
68
+ # ========================================================================= #
69
+ # === set_dataset
70
+ #
71
+ # Here comes in your array.
72
+ # ========================================================================= #
73
+ def set_dataset(i = %w( abc def ghi ))
74
+ i = i.flatten if i.is_a? Array
75
+ @data = i
76
+ end
77
+
78
+ # ========================================================================= #
79
+ # === set_name_of_the_shell_function
80
+ #
81
+ # Set the name of the shell function here.
82
+ # ========================================================================= #
83
+ def set_name_of_the_shell_function(i)
84
+ @name_of_the_shell_function = i
85
+ end
86
+
87
+ # ========================================================================= #
88
+ # === set_store_where
89
+ # ========================================================================= #
90
+ def set_store_where(i = '/Depot/Temp/completion.sh')
91
+ i = i.first if i.is_a? Array
92
+ i = STORE_HERE if i.nil?
93
+ i = i.to_s.dup if i
94
+ @store_where = i
95
+ end; alias set_name set_store_where # === set_name
96
+ alias store_here set_store_where # === store_here
97
+ alias store_here= set_store_where # === store_here?
98
+
99
+ # ========================================================================= #
100
+ # === store_where
101
+ # ========================================================================= #
102
+ def store_where?
103
+ @store_where
104
+ end; alias store_here? store_where? # === store_here?
105
+
106
+ # ========================================================================= #
107
+ # === remove_old_file
108
+ # ========================================================================= #
109
+ def remove_old_file
110
+ File.delete(@store_where) if File.exist? @store_where
111
+ end
112
+
113
+ # ========================================================================= #
114
+ # === return_full_time
115
+ #
116
+ # Will return something like:
117
+ # ", at 20:51:53 o'clock."
118
+ # ========================================================================= #
119
+ def return_full_time
120
+ Time.now.strftime('%d.%m.%Y')+', at '+Time.now.strftime('%H:%M:%S')+" o'clock."
121
+ end
122
+
123
+ # ========================================================================= #
124
+ # === liner
125
+ # ========================================================================= #
126
+ def liner(i = :add_newline)
127
+ _ = '# '+('=' * 76)+' #'
128
+ _ << N if i == :add_newline
129
+ return _
130
+ end
131
+
132
+ # ========================================================================= #
133
+ # === name_of_the_shell_function?
134
+ # ========================================================================= #
135
+ def name_of_the_shell_function?
136
+ @name_of_the_shell_function
137
+ end
138
+
139
+ # ========================================================================= #
140
+ # === append_files_from_the_current_directory
141
+ #
142
+ # When this instance variable is set to true, we will always append
143
+ # the files found in the current working directory to the available
144
+ # tab-completable options.
145
+ # ========================================================================= #
146
+ def append_files_from_the_current_directory
147
+ @append_files_from_the_current_directory = true
148
+ end; alias use_files_in_directory_as_well append_files_from_the_current_directory
149
+
150
+ # ========================================================================= #
151
+ # === append_files_from_the_current_directory?
152
+ # ========================================================================= #
153
+ def append_files_from_the_current_directory?
154
+ @append_files_from_the_current_directory
155
+ end
156
+
157
+ # ========================================================================= #
158
+ # === add_names_for_how_to_invoke_the_completions
159
+ #
160
+ # Here come the names for the complete functionality. This
161
+ # will be invoked in run().
162
+ # ========================================================================= #
163
+ def add_names_for_how_to_invoke_the_completions
164
+ _ = ' # Next, available auto-completion for the commands '+
165
+ '"ry", "wis" and "url".'+N
166
+ @aliases.each {|entry|
167
+ _ << 'complete -F '+name_of_the_shell_function?+' '+entry+N
168
+ } if @aliases
169
+ return _
170
+ end
171
+
172
+ # ========================================================================= #
173
+ # === set_aliases
174
+ # ========================================================================= #
175
+ def set_aliases(i = nil)
176
+ if i.is_a? String
177
+ i = i.split(',') if i.include? ','
178
+ end
179
+ i = [i] unless i.is_a? Array
180
+ i = i.flatten if i.is_a? Array
181
+ @aliases = i # Must be an Array or nil.
182
+ end; alias set_alias set_aliases # === set_alias
183
+
184
+ # ========================================================================= #
185
+ # === inform_the_user_what_we_will_do
186
+ # ========================================================================= #
187
+ def inform_the_user_what_we_will_do
188
+ opn; e 'Now generating the shell script'
189
+ e
190
+ e ' `'+sfile(store_where?)+'`'
191
+ e
192
+ end
193
+
194
+ # ========================================================================= #
195
+ # === dataset?
196
+ # ========================================================================= #
197
+ def dataset?
198
+ @data
199
+ end
200
+
201
+ # ========================================================================= #
202
+ # === prepend_this_string
203
+ #
204
+ # This method can be used to prepend something on top of the file.
205
+ # Specifically, this is used for generation tab-completion for the
206
+ # zsh shell.
207
+ # ========================================================================= #
208
+ def prepend_this_string(i)
209
+ @prepend_this = i
210
+ end
211
+
212
+ # ========================================================================= #
213
+ # === save_dataset
214
+ #
215
+ # Use this method to save the file.
216
+ # ========================================================================= #
217
+ def save_dataset(i)
218
+ SaveFile.save_what_into(i, store_where?)
219
+ end
220
+
221
+ # ========================================================================= #
222
+ # === run (run tag)
223
+ # ========================================================================= #
224
+ def run
225
+ inform_the_user_what_we_will_do
226
+ array = dataset?
227
+ _ = ''.dup
228
+ _ << @prepend_this if @prepend_this
229
+ _ << liner+'# Automatically generated file, generated at '+return_full_time+N+
230
+ liner+'# A bash shell script.'+N+liner
231
+ _ << ''+name_of_the_shell_function?+'()
232
+ {
233
+ local cur prev all_programs
234
+
235
+ COMPREPLY=()
236
+ cur="${COMP_WORDS[COMP_CWORD]}"
237
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
238
+ all_programs="
239
+ '+array.join(N+' ')+'
240
+ "
241
+ '
242
+ # ======================================================================= #
243
+ # Whether to append files from the current directory or not:
244
+ # ======================================================================= #
245
+ if append_files_from_the_current_directory?
246
+ _ << ' append_this=`ls`
247
+ all_programs+=$append_this
248
+ '
249
+ end
250
+ _ << '
251
+ if [[ ${cur} == * ]] ; then
252
+ COMPREPLY=( $(compgen -W "${all_programs}" -- ${cur}) )
253
+ return 0
254
+ fi
255
+ }'
256
+ _ << add_names_for_how_to_invoke_the_completions
257
+ save_dataset(_)
258
+ end
259
+
260
+ end; end
261
+
262
+ if __FILE__ == $PROGRAM_NAME
263
+ _ = GenerateShellCompletion::GenerateShellCompletion.new(ARGV, :dont_run_yet)
264
+ _.set_name_of_the_shell_function 'beautiful_menu'
265
+ _.set_aliases 'rf'
266
+ _.run
267
+ end # generate_shell_completion
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ module GenerateShellCompletion
6
+
7
+ class GenerateShellCompletion
8
+
9
+ # ========================================================================= #
10
+ # === VERSION
11
+ # ========================================================================= #
12
+ VERSION = '0.0.16'
13
+
14
+ end; end
@@ -0,0 +1 @@
1
+ require 'generate_shell_completion/generate_shell_completion.rb'
@@ -0,0 +1,19 @@
1
+ require 'generate_shell_completion'
2
+
3
+ _ = GenerateShellCompletion::GenerateShellCompletion.new(nil,
4
+ :dont_run_yet)
5
+ array = %w(
6
+ --help
7
+ --norc
8
+ --extract
9
+ --version
10
+ --nocolours
11
+ --nohistory
12
+ --run-method
13
+ )
14
+ array = array + array.map {|entry| entry.delete('-') }
15
+ _.set_name_of_the_shell_function('diamond_shell_completion')
16
+ _.set_dataset(array)
17
+ _.set_alias('dia')
18
+ _.store_here = '/Depot/Temp/completion_for_diamond_shell.sh'
19
+ _.run
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: generate_shell_completion
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.16
5
+ platform: ruby
6
+ authors:
7
+ - Robert A. Heiler
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-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: save_file
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_shell_completion.
44
+
45
+ email: shevy@inbox.lt
46
+ executables: []
47
+ extensions: []
48
+ extra_rdoc_files: []
49
+ files:
50
+ - USAGE.md
51
+ - generate_shell_completion.gemspec
52
+ - lib/generate_shell_completion.rb
53
+ - lib/generate_shell_completion/generate_shell_completion.rb
54
+ - lib/generate_shell_completion/version/version.rb
55
+ - test/testing_generate_shell_completion.rb
56
+ homepage: https://rubygems.org/gems/generate_shell_completion
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.5.8
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 3.2.24
74
+ requirements: []
75
+ rubygems_version: 3.2.24
76
+ signing_key:
77
+ specification_version: 4
78
+ summary: ''
79
+ test_files: []
80
+ ...