cli-template 3.3.0 → 3.4.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/lib/cli-template/help/new.md +2 -2
- data/lib/cli-template/new.rb +1 -1
- data/lib/cli-template/version.rb +1 -1
- data/lib/templates/colon_namespaces/%project_name%.gemspec.tt +2 -4
- data/lib/templates/colon_namespaces/Rakefile +1 -1
- data/lib/templates/colon_namespaces/exe/%project_name%.tt +2 -5
- data/lib/templates/default/%project_name%.gemspec.tt +5 -4
- data/lib/templates/default/README.md.tt +5 -13
- data/lib/templates/default/Rakefile.tt +13 -0
- data/lib/templates/default/lib/%project_name%.rb.tt +6 -4
- data/lib/templates/default/lib/%underscored_name%/cli.rb.tt +3 -3
- data/lib/templates/default/lib/%underscored_name%/command.rb.tt +35 -0
- data/lib/templates/default/lib/%underscored_name%/completer.rb.tt +1 -1
- data/lib/templates/default/lib/%underscored_name%/help/completion.md.tt +9 -9
- data/lib/templates/default/lib/%underscored_name%/help/completion_script.md.tt +2 -2
- data/lib/templates/default/lib/%underscored_name%/help/hello.md.tt +3 -3
- data/lib/templates/default/lib/%underscored_name%/help/sub/goodbye.md.tt +3 -3
- metadata +4 -5
- data/lib/templates/default/Rakefile +0 -6
- data/lib/templates/default/lib/%underscored_name%/completion.rb.tt +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27407ac819b71368058edec6400c5489610b7446622c3636a423c49068da6fdf
|
4
|
+
data.tar.gz: ca8952b2291e00868fb233d611ad51970cf5964df8aba0e4f9e2cef11eff611f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 32911657ed62c3ceb799f2103f22d8fa62d0a85d94e8d1fe57a6ab25a94eed31a2369284a7e457b45546c77e0829d7528047ad62707147815cac15a8ed6073e3
|
7
|
+
data.tar.gz: e80cebb0c4e8b0c727ef6c0adf8e44045fd2ea84240e0b1a4ee6ecb217e61826bdc5987d42524fb7acc02aae89d2f6b0c171961ae32f288e9c13468844993c92
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,17 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
This project *tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
|
5
5
|
|
6
|
+
## [3.4.0]
|
7
|
+
- add class Error in generated class
|
8
|
+
- add cli_markdown and rake docs task
|
9
|
+
- add possible website url reference to cli help
|
10
|
+
- change help also available at
|
11
|
+
- move common commands to base Command class
|
12
|
+
- move version, completion commands back to the CLI class so subcommands dont inherit them
|
13
|
+
- override command_help to include description in long_description
|
14
|
+
- remove unused completion.rb, fix command_help override
|
15
|
+
- use 4 spaces for cli help
|
16
|
+
|
6
17
|
## [3.3.0]
|
7
18
|
- fix completer for thor group and use public_instance_methods(false)
|
8
19
|
- fix shared new options for thor group and cli
|
data/lib/cli-template/new.rb
CHANGED
@@ -27,7 +27,6 @@ module CliTemplate
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def make_executable
|
30
|
-
chmod("bin", 0755 & ~File.umask, verbose: false) if File.exist?("bin")
|
31
30
|
chmod("exe", 0755 & ~File.umask, verbose: false) if File.exist?("exe")
|
32
31
|
end
|
33
32
|
|
@@ -55,6 +54,7 @@ Congrats 🎉 You have successfully created a CLI project.
|
|
55
54
|
Test the CLI:
|
56
55
|
|
57
56
|
cd #{project_name}
|
57
|
+
bundle
|
58
58
|
exe/#{project_name} hello # top-level commands
|
59
59
|
exe/#{project_name} sub:goodbye # sub commands
|
60
60
|
bundle exec rspec
|
data/lib/cli-template/version.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
#
|
2
|
-
lib
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require "<%= underscored_name %>/version"
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require_relative "lib/<%= underscored_name %>/version"
|
5
3
|
|
6
4
|
Gem::Specification.new do |spec|
|
7
5
|
spec.name = "<%= project_name %>"
|
@@ -7,8 +7,5 @@ Signal.trap("INT") {
|
|
7
7
|
exit
|
8
8
|
}
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
require "<%= underscored_name %>/cli"
|
13
|
-
|
14
|
-
<%= project_class_name %>::CLI.start(ARGV)
|
10
|
+
require_relative "../lib/<%= project_name %>"
|
11
|
+
<%= project_class_name %>::CLI.start
|
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["tongueroo@gmail.com"]
|
11
11
|
spec.summary = "Generated with cli-template tool. Please write a gem summary"
|
12
12
|
spec.description = "Generated with cli-template tool. Write a longer description or delete this line."
|
13
|
-
spec.homepage = "
|
13
|
+
spec.homepage = ""
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
@@ -19,12 +19,13 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
-
spec.add_dependency "thor"
|
23
|
-
spec.add_dependency "colorize"
|
24
|
-
spec.add_dependency "rake"
|
25
22
|
spec.add_dependency "activesupport"
|
23
|
+
spec.add_dependency "colorize"
|
24
|
+
spec.add_dependency "thor"
|
26
25
|
|
27
26
|
spec.add_development_dependency "bundler"
|
28
27
|
spec.add_development_dependency "byebug"
|
28
|
+
spec.add_development_dependency "cli_markdown"
|
29
|
+
spec.add_development_dependency "rake"
|
29
30
|
spec.add_development_dependency "rspec"
|
30
31
|
end
|
@@ -11,10 +11,8 @@ TODO: Write a gem description
|
|
11
11
|
|
12
12
|
## Usage
|
13
13
|
|
14
|
-
|
15
|
-
<%= project_name %>
|
16
|
-
<%= project_name %> sub:goodbye yourname
|
17
|
-
```
|
14
|
+
<%= project_name %> hello yourname
|
15
|
+
<%= project_name %> sub:goodbye yourname
|
18
16
|
|
19
17
|
The CLI tool also detects and tasks in the current folder's Rakefile and delegate to those tasks.
|
20
18
|
|
@@ -22,21 +20,15 @@ The CLI tool also detects and tasks in the current folder's Rakefile and delegat
|
|
22
20
|
|
23
21
|
Add this line to your application's Gemfile:
|
24
22
|
|
25
|
-
|
26
|
-
gem "<%= project_name %>"
|
27
|
-
```
|
23
|
+
gem "<%= project_name %>"
|
28
24
|
|
29
25
|
And then execute:
|
30
26
|
|
31
|
-
|
32
|
-
bundle
|
33
|
-
```
|
27
|
+
bundle
|
34
28
|
|
35
29
|
Or install it yourself as:
|
36
30
|
|
37
|
-
|
38
|
-
gem install <%= project_name %>
|
39
|
-
```
|
31
|
+
gem install <%= project_name %>
|
40
32
|
|
41
33
|
## Contributing
|
42
34
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rspec/core/rake_task"
|
3
|
+
|
4
|
+
task default: :spec
|
5
|
+
|
6
|
+
RSpec::Core::RakeTask.new
|
7
|
+
|
8
|
+
require_relative "lib/<%= project_name %>"
|
9
|
+
require "cli_markdown"
|
10
|
+
desc "Generates cli reference docs as markdown"
|
11
|
+
task :docs do
|
12
|
+
CliMarkdown::Creator.create_all(cli_class: <%= project_class_name %>::CLI, cli_name: "<%= project_name %>")
|
13
|
+
end
|
@@ -2,10 +2,12 @@ $:.unshift(File.expand_path("../", __FILE__))
|
|
2
2
|
require "<%= underscored_name %>/version"
|
3
3
|
|
4
4
|
module <%= project_class_name %>
|
5
|
-
|
6
|
-
|
5
|
+
class Error < StandardError; end
|
6
|
+
|
7
7
|
autoload :CLI, "<%= underscored_name %>/cli"
|
8
|
-
autoload :
|
9
|
-
autoload :Completion, "<%= underscored_name %>/completion"
|
8
|
+
autoload :Command, "<%= underscored_name %>/command"
|
10
9
|
autoload :Completer, "<%= underscored_name %>/completer"
|
10
|
+
autoload :Completion, "<%= underscored_name %>/completion"
|
11
|
+
autoload :Help, "<%= underscored_name %>/help"
|
12
|
+
autoload :Sub, "<%= underscored_name %>/sub"
|
11
13
|
end
|
@@ -3,7 +3,7 @@ module <%= project_class_name %>
|
|
3
3
|
class_option :verbose, type: :boolean
|
4
4
|
class_option :noop, type: :boolean
|
5
5
|
|
6
|
-
desc "hello NAME", "
|
6
|
+
desc "hello NAME", "Say hello to NAME."
|
7
7
|
long_desc Help.text(:hello)
|
8
8
|
option :from, desc: "from person"
|
9
9
|
def hello(name="you")
|
@@ -15,13 +15,13 @@ module <%= project_class_name %>
|
|
15
15
|
long_desc Help.text(:sub)
|
16
16
|
subcommand "sub", Sub
|
17
17
|
|
18
|
-
desc "completion *PARAMS", "
|
18
|
+
desc "completion *PARAMS", "Prints words for auto-completion."
|
19
19
|
long_desc Help.text("completion")
|
20
20
|
def completion(*params)
|
21
21
|
Completer.new(CLI, *params).run
|
22
22
|
end
|
23
23
|
|
24
|
-
desc "completion_script", "
|
24
|
+
desc "completion_script", "Generates a script that can be eval to setup auto-completion."
|
25
25
|
long_desc Help.text("completion_script")
|
26
26
|
def completion_script
|
27
27
|
Completer::Script.generate
|
@@ -42,6 +42,41 @@ module <%= project_class_name %>
|
|
42
42
|
|
43
43
|
super
|
44
44
|
end
|
45
|
+
|
46
|
+
# Override command_help to include the description at the top of the
|
47
|
+
# long_description.
|
48
|
+
def command_help(shell, command_name)
|
49
|
+
meth = normalize_command_name(command_name)
|
50
|
+
command = all_commands[meth]
|
51
|
+
alter_command_description(command)
|
52
|
+
super
|
53
|
+
end
|
54
|
+
|
55
|
+
def alter_command_description(command)
|
56
|
+
return unless command
|
57
|
+
|
58
|
+
# Add description to beginning of long_description
|
59
|
+
long_desc = if command.long_description
|
60
|
+
"#{command.description}\n\n#{command.long_description}"
|
61
|
+
else
|
62
|
+
command.description
|
63
|
+
end
|
64
|
+
|
65
|
+
# add reference url to end of the long_description
|
66
|
+
unless website.empty?
|
67
|
+
full_command = [command.ancestor_name, command.name].compact.join('-')
|
68
|
+
url = "#{website}/reference/<%= project_name %>-#{full_command}"
|
69
|
+
long_desc += "\n\nHelp also available at: #{url}"
|
70
|
+
end
|
71
|
+
|
72
|
+
command.long_description = long_desc
|
73
|
+
end
|
74
|
+
private :alter_command_description
|
75
|
+
|
76
|
+
# meant to be overriden
|
77
|
+
def website
|
78
|
+
""
|
79
|
+
end
|
45
80
|
end
|
46
81
|
end
|
47
82
|
end
|
@@ -68,7 +68,7 @@ Sometimes the commands are not simple thor commands but are subcommands or Thor:
|
|
68
68
|
|
69
69
|
Auto-completion accounts for each of these type of commands.
|
70
70
|
=end
|
71
|
-
module
|
71
|
+
module <%= project_class_name %>
|
72
72
|
class Completer
|
73
73
|
autoload :Script, '<%= underscored_name %>/completer/script'
|
74
74
|
|
@@ -1,22 +1,22 @@
|
|
1
1
|
Example:
|
2
2
|
|
3
|
-
|
3
|
+
<%= project_name %> completion
|
4
4
|
|
5
5
|
Prints words for TAB auto-completion.
|
6
6
|
|
7
7
|
Examples:
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
<%= project_name %> completion
|
10
|
+
<%= project_name %> completion hello
|
11
|
+
<%= project_name %> completion hello name
|
12
12
|
|
13
13
|
To enable, TAB auto-completion add the following to your profile:
|
14
14
|
|
15
|
-
|
15
|
+
eval $(<%= project_name %> completion_script)
|
16
16
|
|
17
17
|
Auto-completion example usage:
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
<%= project_name %> [TAB]
|
20
|
+
<%= project_name %> hello [TAB]
|
21
|
+
<%= project_name %> hello name [TAB]
|
22
|
+
<%= project_name %> hello name --[TAB]
|
@@ -1,3 +1,3 @@
|
|
1
|
-
To use, add the following to your
|
1
|
+
To use, add the following to your `~/.bashrc` or `~/.profile`
|
2
2
|
|
3
|
-
|
3
|
+
eval $(<%= project_name %> completion_script)
|
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.
|
4
|
+
version: 3.4.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-
|
11
|
+
date: 2018-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -202,7 +202,7 @@ files:
|
|
202
202
|
- lib/templates/default/Guardfile
|
203
203
|
- lib/templates/default/LICENSE.txt
|
204
204
|
- lib/templates/default/README.md.tt
|
205
|
-
- lib/templates/default/Rakefile
|
205
|
+
- lib/templates/default/Rakefile.tt
|
206
206
|
- lib/templates/default/exe/%project_name%.tt
|
207
207
|
- lib/templates/default/lib/%project_name%.rb.tt
|
208
208
|
- lib/templates/default/lib/%underscored_name%/cli.rb.tt
|
@@ -210,7 +210,6 @@ files:
|
|
210
210
|
- lib/templates/default/lib/%underscored_name%/completer.rb.tt
|
211
211
|
- lib/templates/default/lib/%underscored_name%/completer/script.rb.tt
|
212
212
|
- lib/templates/default/lib/%underscored_name%/completer/script.sh.tt
|
213
|
-
- lib/templates/default/lib/%underscored_name%/completion.rb.tt
|
214
213
|
- lib/templates/default/lib/%underscored_name%/help.rb.tt
|
215
214
|
- lib/templates/default/lib/%underscored_name%/help/completion.md.tt
|
216
215
|
- lib/templates/default/lib/%underscored_name%/help/completion_script.md.tt
|
@@ -242,7 +241,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
242
241
|
version: '0'
|
243
242
|
requirements: []
|
244
243
|
rubyforge_project:
|
245
|
-
rubygems_version: 2.7.
|
244
|
+
rubygems_version: 2.7.6
|
246
245
|
signing_key:
|
247
246
|
specification_version: 4
|
248
247
|
summary: Generate a CLI tool quickly
|
@@ -1,15 +0,0 @@
|
|
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
|