cli-template 3.1.0 → 3.2.0

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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/README.md +44 -5
  4. data/lib/cli-template/helpers.rb +3 -0
  5. data/lib/cli-template/sequence.rb +5 -4
  6. data/lib/cli-template/version.rb +1 -1
  7. data/lib/templates/colon_namespaces/%project_name%.gemspec.tt +30 -0
  8. data/lib/templates/colon_namespaces/.gitignore +16 -0
  9. data/lib/templates/colon_namespaces/.rspec +2 -0
  10. data/lib/templates/colon_namespaces/CHANGELOG.md +7 -0
  11. data/lib/templates/colon_namespaces/Gemfile.tt +6 -0
  12. data/lib/templates/colon_namespaces/Guardfile +19 -0
  13. data/lib/templates/colon_namespaces/LICENSE.txt.tt +22 -0
  14. data/lib/templates/colon_namespaces/README.md.tt +47 -0
  15. data/lib/templates/colon_namespaces/Rakefile +6 -0
  16. data/lib/templates/colon_namespaces/exe/%project_name%.tt +14 -0
  17. data/lib/templates/colon_namespaces/lib/%project_name%.rb.tt +12 -0
  18. data/lib/templates/colon_namespaces/lib/%underscored_name%/cli.rb.tt +166 -0
  19. data/lib/templates/colon_namespaces/lib/%underscored_name%/command.rb.tt +186 -0
  20. data/lib/templates/colon_namespaces/lib/%underscored_name%/completer.rb.tt +145 -0
  21. data/lib/templates/colon_namespaces/lib/%underscored_name%/completer/script.rb.tt +6 -0
  22. data/lib/templates/colon_namespaces/lib/%underscored_name%/completer/script.sh.tt +16 -0
  23. data/lib/templates/{default → colon_namespaces}/lib/%underscored_name%/completions.rb.tt +0 -0
  24. data/lib/templates/colon_namespaces/lib/%underscored_name%/help.rb.tt +9 -0
  25. data/lib/templates/{default → colon_namespaces}/lib/%underscored_name%/help/completions.md.tt +0 -0
  26. data/lib/templates/{default → colon_namespaces}/lib/%underscored_name%/help/completions/script.md.tt +0 -0
  27. data/lib/templates/colon_namespaces/lib/%underscored_name%/help/hello.md.tt +5 -0
  28. data/lib/templates/colon_namespaces/lib/%underscored_name%/help/main.md.tt +5 -0
  29. data/lib/templates/colon_namespaces/lib/%underscored_name%/help/sub/goodbye.md.tt +5 -0
  30. data/lib/templates/{default → colon_namespaces}/lib/%underscored_name%/main.rb.tt +0 -0
  31. data/lib/templates/{default → colon_namespaces}/lib/%underscored_name%/rake_command.rb.tt +0 -0
  32. data/lib/templates/colon_namespaces/lib/%underscored_name%/sub.rb.tt +12 -0
  33. data/lib/templates/colon_namespaces/lib/%underscored_name%/version.rb.tt +3 -0
  34. data/lib/templates/colon_namespaces/spec/lib/cli_spec.rb.tt +37 -0
  35. data/lib/templates/colon_namespaces/spec/spec_helper.rb.tt +29 -0
  36. data/lib/templates/default/.gitignore +1 -1
  37. data/lib/templates/default/Gemfile.lock.tt +64 -0
  38. data/lib/templates/default/LICENSE.txt +1 -1
  39. data/lib/templates/default/lib/%project_name%.rb.tt +1 -2
  40. data/lib/templates/default/lib/%underscored_name%/cli.rb.tt +24 -165
  41. data/lib/templates/default/lib/%underscored_name%/command.rb.tt +21 -151
  42. data/lib/templates/default/lib/%underscored_name%/completer.rb.tt +58 -57
  43. data/lib/templates/default/lib/%underscored_name%/completer/script.sh.tt +4 -10
  44. data/lib/templates/default/lib/%underscored_name%/completion.rb.tt +15 -0
  45. data/lib/templates/default/lib/%underscored_name%/help/completion.md.tt +22 -0
  46. data/lib/templates/default/lib/%underscored_name%/help/completion_script.md.tt +3 -0
  47. data/lib/templates/default/spec/lib/cli_spec.rb.tt +18 -17
  48. data/lib/templates/default/spec/spec_helper.rb.tt +2 -2
  49. data/spec/lib/cli_spec.rb +49 -38
  50. metadata +35 -7
@@ -1,29 +1,29 @@
1
1
  # Code Explanation. This is mainly focused on the run method.
2
2
  #
3
- # There are 3 main branches of logic for completions:
3
+ # There are 3 main branches of logic for completion:
4
4
  #
5
5
  # 1. top-level commands - when there are zero completed words
6
- # 2. params completions - when a command has some required params
7
- # 3. options completions - when we have finished auto-completing the top-level command and required params, the rest of the completion words will be options
6
+ # 2. params completion - when a command has some required params
7
+ # 3. options completion - when we have finished auto-completing the top-level command and required params, the rest of the completion words will be options
8
8
  #
9
9
  # Terms:
10
10
  #
11
11
  # params - these are params in the command itself. Example: for the method `scale(service, count)` the params would be `service, count`.
12
12
  # options - these are cli options flags. Examples: --noop, --verbose
13
13
  #
14
- # When we are done processing method params, the completions will be only options. When the detected params size is greater than the arity we are have finished auto-completing the parameters in the method declaration. For example, say you had a method for a CLI command with the following form:
14
+ # When we are done processing method params, the completion will be only options. When the detected params size is greater than the arity we are have finished auto-completing the parameters in the method declaration. For example, say you had a method for a CLI command with the following form:
15
15
  #
16
16
  # scale(service, count) = arity of 2
17
17
  #
18
18
  # <%= project_name %> scale service count [TAB] # there are 3 params including the "scale" command
19
19
  #
20
- # So the completions will be something like:
20
+ # So the completion will be something like:
21
21
  #
22
22
  # --noop --verbose etc
23
23
  #
24
24
  # A note about artity values:
25
25
  #
26
- # We are using the arity of the command method to determine if we have finish auto-completing the params completions. When the ruby method has a splat param, it's arity will be negative. Here are some example methods and their arities.
26
+ # We are using the arity of the command method to determine if we have finish auto-completing the params completion. When the ruby method has a splat param, it's arity will be negative. Here are some example methods and their arities.
27
27
  #
28
28
  # ship(service) = 1
29
29
  # scale(service, count) = 2
@@ -34,22 +34,22 @@
34
34
  #
35
35
  # To test:
36
36
  #
37
- # <%= project_name %> completions
38
- # <%= project_name %> completions hello
39
- # <%= project_name %> completions hello name
40
- # <%= project_name %> completions hello name --
41
- # <%= project_name %> completions hello name --noop
37
+ # <%= project_name %> completion
38
+ # <%= project_name %> completion hello
39
+ # <%= project_name %> completion hello name
40
+ # <%= project_name %> completion hello name --
41
+ # <%= project_name %> completion hello name --noop
42
42
  #
43
- # <%= project_name %> completions
44
- # <%= project_name %> completions sub:goodbye
45
- # <%= project_name %> completions sub:goodbye name
43
+ # <%= project_name %> completion
44
+ # <%= project_name %> completion sub:goodbye
45
+ # <%= project_name %> completion sub:goodbye name
46
46
  #
47
47
  # Note when testing, the first top-level word must be an exact match
48
48
  #
49
- # <%= project_name %> completions hello # works fine
50
- # <%= project_name %> completions he # incomplete, this will just break
49
+ # <%= project_name %> completion hello # works fine
50
+ # <%= project_name %> completion he # incomplete, this will just break
51
51
  #
52
- # The completions assumes that the top-level word that is being passed in
52
+ # The completion assumes that the top-level word that is being passed in
53
53
  # from completor/scripts.sh will always match exactly. This must be the
54
54
  # case. For parameters, the word does not have to match exactly.
55
55
  #
@@ -57,56 +57,54 @@ module <%= project_class_name %>
57
57
  class Completer
58
58
  autoload :Script, '<%= underscored_name %>/completer/script'
59
59
 
60
- def initialize(*params)
60
+ def initialize(command_class, *params)
61
61
  @params = params
62
+ @current_command = @params[0]
63
+ @command_class = command_class # CLI initiall
62
64
  end
63
65
 
64
- def current_command
65
- @params[0]
66
- end
67
-
68
- # Example: sub:goodbye => "sub"
69
- def namespace
70
- return nil unless current_command
71
-
72
- if current_command.include?(':')
73
- words = current_command.split(':')
74
- words.pop
75
- words.join(':')
66
+ def run
67
+ if subcommand?(@current_command)
68
+ subcommand_class = @command_class.subcommand_classes[@current_command]
69
+ @params.shift # destructive
70
+ Completer.new(subcommand_class, *@params).run # recursively use subcommand
71
+ return
76
72
  end
77
- end
78
-
79
- # Example: sub:goodbye => "goodbye"
80
- def trailing_command
81
- current_command.split(':').last
82
- end
83
73
 
84
- def run
85
- if @params.size == 0
74
+ # full command has been found!
75
+ unless found?(@current_command)
86
76
  puts all_commands
87
77
  return
88
78
  end
89
79
 
90
- # will only get to here if the top-level command has been fully auto-completed.
91
- arity = command_class.instance_method(trailing_command).arity.abs
80
+ # will only get to here if command aws found (above)
81
+ arity = @command_class.instance_method(@current_command).arity.abs
92
82
  if @params.size <= arity
93
- puts params_completions(current_command)
83
+ puts params_completion
94
84
  else
95
- puts options_completions(current_command)
85
+ puts options_completion
96
86
  end
97
87
  end
98
88
 
89
+ def subcommand?(command)
90
+ @command_class.subcommands.include?(command)
91
+ end
92
+
93
+ def found?(command)
94
+ public_methods = @command_class.public_instance_methods - Object.methods
95
+ command && public_methods.include?(command.to_sym)
96
+ end
97
+
99
98
  # all top-level commands
100
99
  def all_commands
101
- # Interesing, extra :help commands show up here but no whne using
102
- # <%= project_class_name %>::Command.help_list in main_help -> thor_list
103
- # We'll filter out :help for auto-completion.
104
- commands = <%= project_class_name %>::Command.namespaced_commands
105
- commands.reject { |c| c =~ /:help$/ }
100
+ commands = @command_class.all_commands.reject do |k,v|
101
+ v.is_a?(Thor::HiddenCommand)
102
+ end
103
+ commands.keys
106
104
  end
107
105
 
108
- def params_completions(current_command)
109
- method_params = command_class.instance_method(trailing_command).parameters
106
+ def params_completion
107
+ method_params = @command_class.instance_method(@current_command).parameters
110
108
  # Example:
111
109
  # >> Sub.instance_method(:goodbye).parameters
112
110
  # => [[:req, :name]]
@@ -118,21 +116,24 @@ module <%= project_class_name %>
118
116
  method_params[offset..-1].first
119
117
  end
120
118
 
121
- def options_completions(current_command)
119
+ def options_completion
122
120
  used = ARGV.select { |a| a.include?('--') } # so we can remove used options
123
121
 
124
- method_options = command_class.all_commands[trailing_command].options.keys
125
- class_options = command_class.class_options.keys
122
+ method_options = @command_class.all_commands[@current_command].options.keys
123
+ class_options = @command_class.class_options.keys
126
124
 
127
- all_options = method_options + class_options
125
+ all_options = method_options + class_options + ['help']
128
126
 
129
- all_options.map! { |o| "--#{o.to_s.dasherize}" }
127
+ all_options.map! { |o| "--#{o.to_s.gsub('_','-')}" }
130
128
  filtered_options = all_options - used
131
- filtered_options
129
+ filtered_options.uniq
132
130
  end
133
131
 
134
- def command_class
135
- @command_class ||= <%= project_class_name %>::Command.klass_from_namespace(namespace)
132
+ # Useful for debugging. Using puts messes up completion.
133
+ def log(msg)
134
+ File.open("/tmp/complete.log", "a") do |file|
135
+ file.puts(msg)
136
+ end
136
137
  end
137
138
  end
138
139
  end
@@ -1,16 +1,10 @@
1
1
  _<%= project_name %>() {
2
2
  COMPREPLY=()
3
3
  local word="${COMP_WORDS[COMP_CWORD]}"
4
-
5
- if [ "$COMP_CWORD" -eq 1 ]; then
6
- local completions=$(<%= project_name %> completions)
7
- COMPREPLY=( $(compgen -W "$completions" -- "$word") )
8
- else
9
- local words=("${COMP_WORDS[@]}")
10
- unset words[0]
11
- local completions=$(<%= project_name %> completions ${words[@]})
12
- COMPREPLY=( $(compgen -W "$completions" -- "$word") )
13
- fi
4
+ local words=("${COMP_WORDS[@]}")
5
+ unset words[0]
6
+ local completion=$(<%= project_name %> completion ${words[@]})
7
+ COMPREPLY=( $(compgen -W "$completion" -- "$word") )
14
8
  }
15
9
 
16
10
  complete -F _<%= project_name %> <%= project_name %>
@@ -0,0 +1,15 @@
1
+ module <%= project_class_name %>
2
+ class Completion < Command
3
+ desc "script", "generates script that can be eval to setup auto-completion"
4
+ long_desc Help.text("completion:script")
5
+ def script
6
+ Completer::Script.generate
7
+ end
8
+
9
+ desc "completions *PARAMS", "prints words for auto-completion"
10
+ long_desc Help.text("completion:list")
11
+ def list(*params)
12
+ Completer.new(*params).run
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,22 @@
1
+ Example:
2
+
3
+ <%= project_name %> completion
4
+
5
+ Prints words for TAB auto-completion.
6
+
7
+ Examples:
8
+
9
+ <%= project_name %> completion
10
+ <%= project_name %> completion hello
11
+ <%= project_name %> completion hello name
12
+
13
+ To enable, TAB auto-completion add the following to your profile:
14
+
15
+ eval $(<%= project_name %> completion script)
16
+
17
+ Auto-completion example usage:
18
+
19
+ <%= project_name %> [TAB]
20
+ <%= project_name %> hello [TAB]
21
+ <%= project_name %> hello name [TAB]
22
+ <%= project_name %> hello name --[TAB]
@@ -0,0 +1,3 @@
1
+ To use, add the following to your ~/.bashrc or ~/.profile
2
+
3
+ eval $(<%= project_name %> completion script)
@@ -12,26 +12,27 @@ describe <%= project_class_name %>::CLI do
12
12
  end
13
13
 
14
14
  it "goodbye" do
15
- out = execute("exe/<%= project_name %> sub:goodbye world #{@args}")
15
+ out = execute("exe/<%= project_name %> sub goodbye world #{@args}")
16
16
  expect(out).to include("from: Tung\nGoodbye world")
17
17
  end
18
18
 
19
- it "completions" do
20
- out = execute("exe/<%= project_name %> completions")
21
- expect(out).to include("hello")
22
- expect(out).to include("sub:goodbye")
23
-
24
- out = execute("exe/<%= project_name %> completions hello")
25
- expect(out).to include("name")
26
-
27
- out = execute("exe/<%= project_name %> completions hello name")
28
- expect(out).to include("--from")
29
-
30
- out = execute("exe/<%= project_name %> completions sub:goodbye")
31
- expect(out).to include("name")
32
-
33
- out = execute("exe/<%= project_name %> completions sub:goodbye name")
34
- expect(out).to include("--from")
19
+ commands = {
20
+ "hell" => "hello",
21
+ "hello" => "name",
22
+ "hello -" => "--from",
23
+ "hello name" => "--from",
24
+ "hello name --" => "--from",
25
+ "sub goodb" => "goodbye",
26
+ "sub goodbye" => "name",
27
+ "sub goodbye name" => "--from",
28
+ "sub goodbye name --" => "--from",
29
+ "sub goodbye name --from" => "--help",
30
+ }
31
+ commands.each do |command, expected_word|
32
+ it "completion #{command}" do
33
+ out = execute("exe/<%= project_name %> completion #{command}")
34
+ expect(out).to include(expected_word) # only checking for one word for simplicity
35
+ end
35
36
  end
36
37
  end
37
38
  end
@@ -5,8 +5,8 @@ ENV["TEST"] = "1"
5
5
  # SimpleCov.start
6
6
 
7
7
  require "pp"
8
-
9
- root = File.expand_path("../../", __FILE__)
8
+ require "byebug"
9
+ root = File.expand_path("../", File.dirname(__FILE__))
10
10
  require "#{root}/lib/<%= project_name %>"
11
11
 
12
12
  module Helpers
@@ -12,49 +12,60 @@ require 'spec_helper'
12
12
  #
13
13
  # Because it shells out tests take about 20 seconds to run this spec file.
14
14
  describe CliTemplate::CLI do
15
- before(:all) do
16
- @args = "--noop"
15
+ before(:each) do
16
+ FileUtils.rm_rf("tmp")
17
+ FileUtils.mkdir("tmp")
17
18
  end
18
19
 
19
- describe "new" do
20
- context("simple single name") do
21
- it "should generate" do
22
- out = execute("cd tmp && ../exe/cli-template new hello #{@args}")
23
- expect(out).to include("Creating new project called hello")
24
- expect(out).to include("You have successfully created a CLI project")
25
- out = execute("cd tmp/hello && rake")
26
- expect(out).to include("0 failures")
27
- end
28
- end
20
+ def create_new(name)
21
+ execute("cd tmp && ../exe/cli-template new #{name}")
22
+ end
29
23
 
30
- context("underscored name") do
31
- it "should generate" do
32
- out = execute("cd tmp && ../exe/cli-template new my_cli #{@args}")
33
- expect(out).to include("Creating new project called my_cli")
34
- expect(out).to include("You have successfully created a CLI project")
35
- out = execute("cd tmp/my_cli && rake")
36
- expect(out).to include("0 failures")
37
- end
38
- end
24
+ templates = %w[default colon_namespaces]
25
+ templates.each do |template|
26
+ ENV['TEMPLATE'] = template
27
+ context("template #{template}") do
28
+ describe "cli-template new" do
29
+ context("simple single name") do
30
+ it "should generate new" do
31
+ out = create_new("hello")
32
+ expect(out).to include("Creating new project called hello")
33
+ expect(out).to include("You have successfully created a CLI project")
34
+ out = execute("cd tmp/hello && rake")
35
+ expect(out).to include("0 failures")
36
+ end
37
+ end
39
38
 
40
- context("dasherized name") do
41
- it "should generate" do
42
- out = execute("cd tmp && ../exe/cli-template new my-cli #{@args}")
43
- expect(out).to include("Creating new project called my-cli")
44
- expect(out).to include("You have successfully created a CLI project")
45
- out = execute("cd tmp/my-cli && rake")
46
- expect(out).to include("0 failures")
47
- end
48
- end
39
+ context("underscored name") do
40
+ it "should generate my_cli" do
41
+ out = create_new("my_cli")
42
+ expect(out).to include("Creating new project called my_cli")
43
+ expect(out).to include("You have successfully created a CLI project")
44
+ out = execute("cd tmp/my_cli && rake")
45
+ expect(out).to include("0 failures")
46
+ end
47
+ end
48
+
49
+ context("dasherized name") do
50
+ it "should generate my-cli" do
51
+ out = create_new("my-cli")
52
+ expect(out).to include("Creating new project called my-cli")
53
+ expect(out).to include("You have successfully created a CLI project")
54
+ out = execute("cd tmp/my-cli && rake")
55
+ expect(out).to include("0 failures")
56
+ end
57
+ end
49
58
 
50
- # CamelCase is ugly :(
51
- context("simple CamelCase name") do
52
- it "should generate" do
53
- out = execute("cd tmp && ../exe/cli-template new MyCli #{@args}")
54
- expect(out).to include("Creating new project called MyCli")
55
- expect(out).to include("You have successfully created a CLI project")
56
- out = execute("cd tmp/MyCli && rake")
57
- expect(out).to include("0 failures")
59
+ # CamelCase is ugly :(
60
+ context("simple CamelCase name") do
61
+ it "should generate MyCli" do
62
+ out = create_new("MyCli")
63
+ expect(out).to include("Creating new project called MyCli")
64
+ expect(out).to include("You have successfully created a CLI project")
65
+ out = execute("cd tmp/MyCli && rake")
66
+ expect(out).to include("0 failures")
67
+ end
68
+ end
58
69
  end
59
70
  end
60
71
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cli-template
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-10 00:00:00.000000000 Z
11
+ date: 2018-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -164,10 +164,40 @@ files:
164
164
  - lib/cli-template/new.rb
165
165
  - lib/cli-template/sequence.rb
166
166
  - lib/cli-template/version.rb
167
+ - lib/templates/colon_namespaces/%project_name%.gemspec.tt
168
+ - lib/templates/colon_namespaces/.gitignore
169
+ - lib/templates/colon_namespaces/.rspec
170
+ - lib/templates/colon_namespaces/CHANGELOG.md
171
+ - lib/templates/colon_namespaces/Gemfile.tt
172
+ - lib/templates/colon_namespaces/Guardfile
173
+ - lib/templates/colon_namespaces/LICENSE.txt.tt
174
+ - lib/templates/colon_namespaces/README.md.tt
175
+ - lib/templates/colon_namespaces/Rakefile
176
+ - lib/templates/colon_namespaces/exe/%project_name%.tt
177
+ - lib/templates/colon_namespaces/lib/%project_name%.rb.tt
178
+ - lib/templates/colon_namespaces/lib/%underscored_name%/cli.rb.tt
179
+ - lib/templates/colon_namespaces/lib/%underscored_name%/command.rb.tt
180
+ - lib/templates/colon_namespaces/lib/%underscored_name%/completer.rb.tt
181
+ - lib/templates/colon_namespaces/lib/%underscored_name%/completer/script.rb.tt
182
+ - lib/templates/colon_namespaces/lib/%underscored_name%/completer/script.sh.tt
183
+ - lib/templates/colon_namespaces/lib/%underscored_name%/completions.rb.tt
184
+ - lib/templates/colon_namespaces/lib/%underscored_name%/help.rb.tt
185
+ - lib/templates/colon_namespaces/lib/%underscored_name%/help/completions.md.tt
186
+ - lib/templates/colon_namespaces/lib/%underscored_name%/help/completions/script.md.tt
187
+ - lib/templates/colon_namespaces/lib/%underscored_name%/help/hello.md.tt
188
+ - lib/templates/colon_namespaces/lib/%underscored_name%/help/main.md.tt
189
+ - lib/templates/colon_namespaces/lib/%underscored_name%/help/sub/goodbye.md.tt
190
+ - lib/templates/colon_namespaces/lib/%underscored_name%/main.rb.tt
191
+ - lib/templates/colon_namespaces/lib/%underscored_name%/rake_command.rb.tt
192
+ - lib/templates/colon_namespaces/lib/%underscored_name%/sub.rb.tt
193
+ - lib/templates/colon_namespaces/lib/%underscored_name%/version.rb.tt
194
+ - lib/templates/colon_namespaces/spec/lib/cli_spec.rb.tt
195
+ - lib/templates/colon_namespaces/spec/spec_helper.rb.tt
167
196
  - lib/templates/default/%project_name%.gemspec.tt
168
197
  - lib/templates/default/.gitignore
169
198
  - lib/templates/default/.rspec
170
199
  - lib/templates/default/CHANGELOG.md
200
+ - lib/templates/default/Gemfile.lock.tt
171
201
  - lib/templates/default/Gemfile.tt
172
202
  - lib/templates/default/Guardfile
173
203
  - lib/templates/default/LICENSE.txt
@@ -180,14 +210,12 @@ files:
180
210
  - lib/templates/default/lib/%underscored_name%/completer.rb.tt
181
211
  - lib/templates/default/lib/%underscored_name%/completer/script.rb.tt
182
212
  - lib/templates/default/lib/%underscored_name%/completer/script.sh.tt
183
- - lib/templates/default/lib/%underscored_name%/completions.rb.tt
213
+ - lib/templates/default/lib/%underscored_name%/completion.rb.tt
184
214
  - lib/templates/default/lib/%underscored_name%/help.rb.tt
185
- - lib/templates/default/lib/%underscored_name%/help/completions.md.tt
186
- - lib/templates/default/lib/%underscored_name%/help/completions/script.md.tt
215
+ - lib/templates/default/lib/%underscored_name%/help/completion.md.tt
216
+ - lib/templates/default/lib/%underscored_name%/help/completion_script.md.tt
187
217
  - lib/templates/default/lib/%underscored_name%/help/hello.md.tt
188
218
  - lib/templates/default/lib/%underscored_name%/help/sub/goodbye.md.tt
189
- - lib/templates/default/lib/%underscored_name%/main.rb.tt
190
- - lib/templates/default/lib/%underscored_name%/rake_command.rb.tt
191
219
  - lib/templates/default/lib/%underscored_name%/sub.rb.tt
192
220
  - lib/templates/default/lib/%underscored_name%/version.rb.tt
193
221
  - lib/templates/default/spec/lib/cli_spec.rb.tt