thunder 0.5.0 → 0.5.1
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.
- data/bin/thunder-completion +61 -0
- data/lib/thunder/version.rb +1 -1
- metadata +5 -3
@@ -0,0 +1,61 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'thunder'
|
4
|
+
require 'erb'
|
5
|
+
|
6
|
+
def thunder_commands(bolt)
|
7
|
+
bolt[:commands].map(&:first).map(&:to_s)
|
8
|
+
end
|
9
|
+
|
10
|
+
def thunder_options(command)
|
11
|
+
return nil unless command[:options]
|
12
|
+
|
13
|
+
result = []
|
14
|
+
command[:options].each do |opt, option|
|
15
|
+
result << "--#{opt}"
|
16
|
+
next unless option[:short]
|
17
|
+
result << "-#{option[:short]}"
|
18
|
+
end
|
19
|
+
return result
|
20
|
+
end
|
21
|
+
|
22
|
+
module Thunder
|
23
|
+
def start(args=ARGV.dup, options={})
|
24
|
+
template = ERB.new <<-TEMPLATE, nil, "%"
|
25
|
+
#!/bin/bash
|
26
|
+
|
27
|
+
% progname = File.basename(ARGV.first)
|
28
|
+
__<%= progname %>_command_list() {
|
29
|
+
echo "<%= thunder_commands(thunder).join(" ") %>"
|
30
|
+
}
|
31
|
+
|
32
|
+
#TODO: get the options to be completed as well
|
33
|
+
% thunder[:commands].each do |name, command|
|
34
|
+
% next unless command[:options]
|
35
|
+
__<%= progname %>_<%= name.to_s %>_options_list() {
|
36
|
+
echo "<%= thunder_options(command).join(" ") %>"
|
37
|
+
}
|
38
|
+
% end
|
39
|
+
|
40
|
+
__<%= progname %>_complete() {
|
41
|
+
COMPREPLY=($(compgen -W "$(__<%= progname %>_command_list)" -- ${COMP_WORDS[COMP_CWORD]}))
|
42
|
+
}
|
43
|
+
|
44
|
+
complete -o default -o nospace -F __<%= progname %>_complete <%= progname %>
|
45
|
+
|
46
|
+
TEMPLATE
|
47
|
+
context = (proc { |thiz, thunder|
|
48
|
+
binding
|
49
|
+
}).call(self, self.class.thunder)
|
50
|
+
puts template.result(context)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
if ARGV.size != 1
|
55
|
+
puts "Usage: thunder-completion THUNDER_SCRIPT"
|
56
|
+
puts
|
57
|
+
puts "Prints out the suggested template for a bash completion script for the given thunder script"
|
58
|
+
exit 1
|
59
|
+
end
|
60
|
+
|
61
|
+
load File.expand_path(ARGV.first)
|
data/lib/thunder/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thunder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-31 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Thunder does command line interfaces. Nothing more, nothing less.
|
15
15
|
email: steven.karas@gmail.com
|
16
|
-
executables:
|
16
|
+
executables:
|
17
|
+
- thunder-completion
|
17
18
|
extensions: []
|
18
19
|
extra_rdoc_files: []
|
19
20
|
files:
|
@@ -26,6 +27,7 @@ files:
|
|
26
27
|
- Rakefile
|
27
28
|
- DESIGN.md
|
28
29
|
- README.md
|
30
|
+
- bin/thunder-completion
|
29
31
|
homepage: http://stevenkaras.github.com/thunder
|
30
32
|
licenses: []
|
31
33
|
post_install_message:
|