thunder-1.8.7 0.5.2 → 0.5.3
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/README.md +4 -0
- data/bin/thunder-completion +45 -35
- data/bin/thunder-spec +1 -1
- data/lib/thunder/version.rb +1 -1
- metadata +37 -19
data/README.md
CHANGED
@@ -7,6 +7,10 @@ Usage
|
|
7
7
|
|
8
8
|
gem install thunder
|
9
9
|
|
10
|
+
or if you're running [ruby 1.8.7](http://www.ruby-lang.org/en/news/2011/10/06/plans-for-1-8-7):
|
11
|
+
|
12
|
+
gem install thunder-1.8.7
|
13
|
+
|
10
14
|
see '[sample](http://github.com/stevenkaras/thunder/blob/master/sample)' for a quick overview of all features
|
11
15
|
|
12
16
|
Philosophy
|
data/bin/thunder-completion
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
require 'thunder'
|
4
4
|
require 'erb'
|
5
5
|
|
6
|
-
def thunder_commands(
|
7
|
-
|
6
|
+
def thunder_commands(spec)
|
7
|
+
spec[:commands].map(&:first).map(&:to_s)
|
8
8
|
end
|
9
9
|
|
10
10
|
def thunder_options(command)
|
@@ -19,53 +19,63 @@ def thunder_options(command)
|
|
19
19
|
return result
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
def indent(text, amount, indent=" ")
|
23
|
+
result = ""
|
24
|
+
text.lines do |line|
|
25
|
+
result << indent * amount + line
|
26
|
+
end
|
27
|
+
return result
|
28
|
+
end
|
26
29
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
30
|
+
def thunder_completion(depth, spec)
|
31
|
+
template = ERB.new <<-TEMPLATE, nil, "%>"
|
32
|
+
if ((COMP_CWORD == <%= depth+1 %>)); then
|
33
|
+
# display only commands
|
34
|
+
words="<%= thunder_commands(spec).join(" ") %>"
|
35
|
+
else
|
36
|
+
case ${COMP_WORDS[<%= depth+1 %>]} in
|
37
|
+
% spec[:commands].each do |name, command|
|
32
38
|
% name = name.to_s
|
39
|
+
<%= name %>)
|
40
|
+
% if name == "help"
|
41
|
+
words="<%= thunder_commands(spec).join(" ") %>"
|
42
|
+
% end
|
33
43
|
% if command[:options]
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
44
|
+
if [[ ${COMP_WORDS[COMP_CWORD]:0:1} == "-" ]]; then
|
45
|
+
words="<%= thunder_options(command).join(" ") %>"
|
46
|
+
fi
|
47
|
+
% end
|
48
|
+
% if command[:subcommand]
|
49
|
+
<%= indent(thunder_completion(depth+1, command[:subcommand].class.thunder), 8) %>
|
38
50
|
% end
|
51
|
+
;;
|
39
52
|
% end
|
53
|
+
esac
|
54
|
+
fi
|
55
|
+
TEMPLATE
|
56
|
+
return template.result(binding)
|
57
|
+
end
|
40
58
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
elif ((COMP_CWORD == 1)); then
|
51
|
-
# display only commands
|
52
|
-
words=$(__<%= progname %>_commands)
|
53
|
-
fi
|
59
|
+
module Thunder
|
60
|
+
def start(args=ARGV.dup, options={})
|
61
|
+
template = ERB.new <<-TEMPLATE, nil, "%>"
|
62
|
+
#!/bin/bash
|
63
|
+
|
64
|
+
% progname = File.basename(ARGV.first)
|
65
|
+
__<%= progname %>_completion() {
|
66
|
+
local words=""
|
67
|
+
<%= indent(thunder_completion(0, self.class.thunder), 4) %>
|
54
68
|
COMPREPLY=($(compgen -W "$words" -- ${COMP_WORDS[COMP_CWORD]}))
|
55
69
|
}
|
56
70
|
|
57
|
-
complete -o default -o nospace -F __<%= progname %>
|
58
|
-
|
71
|
+
complete -o default -o nospace -F __<%= progname %>_completion <%= progname %>
|
59
72
|
TEMPLATE
|
60
|
-
|
61
|
-
binding
|
62
|
-
}).call(self, self.class.thunder)
|
63
|
-
puts template.result(context)
|
73
|
+
puts template.result(binding)
|
64
74
|
end
|
65
75
|
end
|
66
76
|
|
67
77
|
if ARGV.size != 1
|
68
|
-
puts "Usage:
|
78
|
+
puts "Usage: #{File.basename(__FILE__)} THUNDER_SCRIPT"
|
69
79
|
puts
|
70
80
|
puts "Prints out the suggested template for a bash completion script for the given thunder script"
|
71
81
|
exit 1
|
data/bin/thunder-spec
CHANGED
@@ -18,7 +18,7 @@ def renderThunderSpec(spec)
|
|
18
18
|
end
|
19
19
|
|
20
20
|
if ARGV.size != 1
|
21
|
-
puts "Usage:
|
21
|
+
puts "Usage: #{File.basename(__FILE__)} THUNDER_SCRIPT"
|
22
22
|
puts
|
23
23
|
puts "Dumps the thunder spec to the command line for debugging and analysis"
|
24
24
|
exit 1
|
data/lib/thunder/version.rb
CHANGED
metadata
CHANGED
@@ -1,24 +1,33 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: thunder-1.8.7
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 13
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 5
|
9
|
+
- 3
|
10
|
+
version: 0.5.3
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Steven Karas
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
17
|
+
|
18
|
+
date: 2013-01-02 00:00:00 Z
|
13
19
|
dependencies: []
|
20
|
+
|
14
21
|
description: Thunder does command line interfaces. Nothing more, nothing less.
|
15
22
|
email: steven.karas@gmail.com
|
16
|
-
executables:
|
23
|
+
executables:
|
17
24
|
- thunder-spec
|
18
25
|
- thunder-completion
|
19
26
|
extensions: []
|
27
|
+
|
20
28
|
extra_rdoc_files: []
|
21
|
-
|
29
|
+
|
30
|
+
files:
|
22
31
|
- lib/thunder/help/default.rb
|
23
32
|
- lib/thunder/version.rb
|
24
33
|
- lib/thunder/options/optparse.rb
|
@@ -32,27 +41,36 @@ files:
|
|
32
41
|
- bin/thunder-completion
|
33
42
|
homepage: http://stevenkaras.github.com/thunder
|
34
43
|
licenses: []
|
44
|
+
|
35
45
|
post_install_message:
|
36
46
|
rdoc_options: []
|
37
|
-
|
47
|
+
|
48
|
+
require_paths:
|
38
49
|
- lib
|
39
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
40
51
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
hash: 3
|
56
|
+
segments:
|
57
|
+
- 0
|
58
|
+
version: "0"
|
59
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
46
60
|
none: false
|
47
|
-
requirements:
|
48
|
-
- -
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
hash: 3
|
65
|
+
segments:
|
66
|
+
- 0
|
67
|
+
version: "0"
|
51
68
|
requirements: []
|
69
|
+
|
52
70
|
rubyforge_project:
|
53
71
|
rubygems_version: 1.8.24
|
54
72
|
signing_key:
|
55
73
|
specification_version: 3
|
56
74
|
summary: Thunder makes command lines apps easy!
|
57
75
|
test_files: []
|
58
|
-
|
76
|
+
|