generate_shell_completion 0.0.15

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of generate_shell_completion might be problematic. Click here for more details.

checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 99de3eebe9a70778322dccaeec1e2519dac8503dcd7ee54a38858e03770add3f
4
+ data.tar.gz: c764dad299366c49d7e831f76b3febe94542c5f807ad36b910d6accf070e6f6e
5
+ SHA512:
6
+ metadata.gz: 0d5aa2972e40e8b153a60ee30eb727bec79dec08ac437baa09f09339248d5f1b9d41049abed5d9c67dc27312d6107155e29e2b4dba3cb8f173986fe0635f5b07
7
+ data.tar.gz: 909e82992165360cc542a66e4109055be116222d1496a47d4b2bfac234ebfe090f89d8469b224e7418ec9e82d3547f0411af0409e0e6603a36b874b24d0d0e81
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,48 @@
1
+ # =========================================================================== #
2
+ # Gemspec for Project generate_shell_completion.
3
+ # =========================================================================== #
4
+ require 'generate_shell_completion/version/version.rb'
5
+
6
+ Gem::Specification.new { |s|
7
+
8
+ s.name = 'generate_shell_completion'
9
+ s.version = GenerateShellCompletion::GenerateShellCompletion::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_shell_completion.
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 << 'USAGE.md'
35
+ s.license = 'GPL-2.0'
36
+ s.homepage = 'https://github.com/shevegen/generate_shell_completion'
37
+
38
+ s.required_ruby_version = '>= '+RUBY_VERSION
39
+ s.required_rubygems_version = '>= '+Gem::VERSION
40
+ s.rubygems_version = '>= '+Gem::VERSION
41
+
42
+ # ========================================================================= #
43
+ # Dependencies for the project:
44
+ # ========================================================================= #
45
+ s.add_dependency 'colours'
46
+ s.add_dependency 'save_file'
47
+
48
+ }
@@ -0,0 +1 @@
1
+ require 'generate_shell_completion/generate_shell_completion.rb'
@@ -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.15'
13
+
14
+ end; end
@@ -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.15
5
+ platform: ruby
6
+ authors:
7
+ - Robert A. Heiler
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-07-06 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: shevegen@gmail.com
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://github.com/shevegen/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.7.1
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 3.1.2
74
+ requirements: []
75
+ rubygems_version: 3.1.2
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: []