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 +7 -0
- data/USAGE.md +11 -0
- data/generate_shell_completion.gemspec +41 -0
- data/lib/generate_shell_completion/generate_shell_completion.rb +267 -0
- data/lib/generate_shell_completion/version/version.rb +14 -0
- data/lib/generate_shell_completion.rb +1 -0
- data/test/testing_generate_shell_completion.rb +19 -0
- metadata +80 -0
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,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
|
+
...
|