thor-zsh_completion 0.1.2 → 0.1.8
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 +5 -5
- data/.rubocop.yml +127 -0
- data/CHANGELOG.md +46 -0
- data/Gemfile +6 -1
- data/bin/rspec +29 -0
- data/bin/rubocop +29 -0
- data/lib/thor/zsh_completion/generator.rb +32 -19
- data/lib/thor/zsh_completion/template/main.erb +2 -2
- data/lib/thor/zsh_completion/template/subcommand_function.erb +12 -4
- data/lib/thor/zsh_completion/version.rb +1 -1
- data/thor-zsh_completion.gemspec +7 -10
- metadata +16 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5c434b47625fe4feb58ca29949aaf4779c35b83274b15f45c5e2cb7fdd0f2999
|
4
|
+
data.tar.gz: c57e8350114e0455a693b6adae1ead9d231e07923fe6cab73a770be23bf3dd08
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 176936a07f7b4873cadf6002b8ef1e42832c066c51c6fc5ba208677888cae3962845ad2ee2f4bcd9cc56de37ce531bc0ca0f2478d15b0b17d88deed2e2a7996a
|
7
|
+
data.tar.gz: f0b5a195a450729a04e8a6b3429fc9fe1b9d411a4ad7b144518692f5a0b78f1eea7e70959ec4a4a20aa438da8fc916d2cd82102e5b31ce80c804065a86b4d56d
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
AllCops:
|
2
|
+
Exclude:
|
3
|
+
- bin/*
|
4
|
+
- node_modules/**/*
|
5
|
+
NewCops: enable
|
6
|
+
|
7
|
+
Layout/CaseIndentation:
|
8
|
+
EnforcedStyle: end
|
9
|
+
|
10
|
+
Layout/EndAlignment:
|
11
|
+
EnforcedStyleAlignWith: variable
|
12
|
+
|
13
|
+
Layout/LineLength:
|
14
|
+
Enabled: false
|
15
|
+
|
16
|
+
Layout/EmptyLinesAroundAccessModifier:
|
17
|
+
EnforcedStyle: only_before
|
18
|
+
|
19
|
+
Layout/SpaceInLambdaLiteral:
|
20
|
+
EnforcedStyle: require_space
|
21
|
+
|
22
|
+
Layout/SpaceInsideBlockBraces:
|
23
|
+
SpaceBeforeBlockParameters: false
|
24
|
+
|
25
|
+
Layout/SpaceInsideHashLiteralBraces:
|
26
|
+
EnforcedStyle: no_space
|
27
|
+
|
28
|
+
Metrics/AbcSize:
|
29
|
+
Enabled: false
|
30
|
+
|
31
|
+
Metrics/BlockLength:
|
32
|
+
Enabled: false
|
33
|
+
|
34
|
+
Metrics/ClassLength:
|
35
|
+
Enabled: false
|
36
|
+
|
37
|
+
Metrics/CyclomaticComplexity:
|
38
|
+
Enabled: false
|
39
|
+
|
40
|
+
Metrics/MethodLength:
|
41
|
+
Enabled: false
|
42
|
+
|
43
|
+
Metrics/ModuleLength:
|
44
|
+
Enabled: false
|
45
|
+
|
46
|
+
Metrics/PerceivedComplexity:
|
47
|
+
Enabled: false
|
48
|
+
|
49
|
+
Naming/HeredocDelimiterNaming:
|
50
|
+
Enabled: false
|
51
|
+
|
52
|
+
Naming/MethodParameterName:
|
53
|
+
Enabled: false
|
54
|
+
|
55
|
+
Naming/PredicateName:
|
56
|
+
Enabled: false
|
57
|
+
|
58
|
+
Style/Alias:
|
59
|
+
EnforcedStyle: prefer_alias_method
|
60
|
+
|
61
|
+
Style/AsciiComments:
|
62
|
+
Enabled: false
|
63
|
+
|
64
|
+
Style/BlockDelimiters:
|
65
|
+
Enabled: false
|
66
|
+
|
67
|
+
Style/Documentation:
|
68
|
+
Enabled: false
|
69
|
+
|
70
|
+
Style/EmptyCaseCondition:
|
71
|
+
Enabled: false
|
72
|
+
|
73
|
+
Style/EmptyMethod:
|
74
|
+
EnforcedStyle: expanded
|
75
|
+
|
76
|
+
Style/FrozenStringLiteralComment:
|
77
|
+
Enabled: false
|
78
|
+
|
79
|
+
Style/HashSyntax:
|
80
|
+
Exclude:
|
81
|
+
- Rakefile
|
82
|
+
- "**/*.rake"
|
83
|
+
|
84
|
+
Style/Lambda:
|
85
|
+
EnforcedStyle: literal
|
86
|
+
|
87
|
+
Style/IfUnlessModifier:
|
88
|
+
Enabled: false
|
89
|
+
|
90
|
+
Style/MultilineBlockChain:
|
91
|
+
Enabled: false
|
92
|
+
|
93
|
+
Style/NumericLiterals:
|
94
|
+
Enabled: false
|
95
|
+
|
96
|
+
Style/NumericPredicate:
|
97
|
+
Enabled: false
|
98
|
+
|
99
|
+
Style/PercentLiteralDelimiters:
|
100
|
+
PreferredDelimiters:
|
101
|
+
'%i': '()'
|
102
|
+
'%w': '()'
|
103
|
+
'%r': '()'
|
104
|
+
|
105
|
+
Style/SpecialGlobalVars:
|
106
|
+
Enabled: false
|
107
|
+
|
108
|
+
Style/StringLiterals:
|
109
|
+
EnforcedStyle: double_quotes
|
110
|
+
|
111
|
+
Style/StringLiteralsInInterpolation:
|
112
|
+
EnforcedStyle: double_quotes
|
113
|
+
|
114
|
+
Style/SymbolArray:
|
115
|
+
Enabled: false
|
116
|
+
|
117
|
+
Style/TrailingCommaInArguments:
|
118
|
+
EnforcedStyleForMultiline: consistent_comma
|
119
|
+
|
120
|
+
Style/TrailingCommaInArrayLiteral:
|
121
|
+
EnforcedStyleForMultiline: consistent_comma
|
122
|
+
|
123
|
+
Style/TrailingCommaInHashLiteral:
|
124
|
+
EnforcedStyleForMultiline: consistent_comma
|
125
|
+
|
126
|
+
Style/ZeroLengthPredicate:
|
127
|
+
Enabled: false
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
### 0.1.8
|
2
|
+
|
3
|
+
Misc
|
4
|
+
|
5
|
+
- update `thor` dependency
|
6
|
+
|
7
|
+
### 0.1.7
|
8
|
+
|
9
|
+
Misc
|
10
|
+
|
11
|
+
- fix the generation of zsh completion scripts to prevent all [ShellCheck](https://www.shellcheck.net/) warnings
|
12
|
+
|
13
|
+
### 0.1.6
|
14
|
+
|
15
|
+
Misc
|
16
|
+
|
17
|
+
- fix the generation of zsh completion scripts to prevent [ShellCheck](https://www.shellcheck.net/) warnings (@joehorsnell)
|
18
|
+
|
19
|
+
### 0.1.5
|
20
|
+
|
21
|
+
Bugfixes
|
22
|
+
|
23
|
+
- remove unnecessary `local state` in generated script. (reported by @aoyama-val)
|
24
|
+
|
25
|
+
### 0.1.4
|
26
|
+
|
27
|
+
Bugfixes
|
28
|
+
|
29
|
+
- support `Thor.map`. (by @Zhomart)
|
30
|
+
|
31
|
+
### 0.1.3
|
32
|
+
|
33
|
+
Bugfixes
|
34
|
+
|
35
|
+
- fix invalid script generation bug for option description. (by @tbpgr)
|
36
|
+
- fix invalid script generation bug for not aliased option.
|
37
|
+
|
38
|
+
### 0.1.1
|
39
|
+
|
40
|
+
Features
|
41
|
+
|
42
|
+
- support ruby 1.9.3.
|
43
|
+
|
44
|
+
### 0.1.0
|
45
|
+
|
46
|
+
- initial release.
|
data/Gemfile
CHANGED
data/bin/rspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rspec' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rspec-core", "rspec")
|
data/bin/rubocop
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rubocop' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rubocop", "rubocop")
|
@@ -47,7 +47,7 @@ class Thor
|
|
47
47
|
name: "__#{name}",
|
48
48
|
description: nil,
|
49
49
|
options: [],
|
50
|
-
subcommands: subcommand_metadata(thor)
|
50
|
+
subcommands: subcommand_metadata(thor),
|
51
51
|
}
|
52
52
|
|
53
53
|
erb = File.read("#{File.dirname(__FILE__)}/template/main.erb")
|
@@ -65,33 +65,42 @@ class Thor
|
|
65
65
|
depth = prefix.size + 1
|
66
66
|
|
67
67
|
source << SUBCOMMAND_FUNCTION_TEMPLATE.result(binding)
|
68
|
-
|
69
|
-
|
68
|
+
|
69
|
+
subcommand[:subcommands].each do |nested|
|
70
|
+
source << render_subcommand_function(nested, prefix: prefix)
|
70
71
|
end
|
71
72
|
source.join("\n").strip + "\n"
|
72
73
|
end
|
73
74
|
|
74
75
|
def subcommand_metadata(thor)
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
76
|
+
result = []
|
77
|
+
thor.tasks.each do |(name, command)|
|
78
|
+
aliases = thor.map.select {|_, original_name|
|
79
|
+
name == original_name
|
80
|
+
}.map(&:first)
|
81
|
+
result << generate_command_information(thor, name, command, aliases)
|
82
|
+
end
|
83
|
+
result
|
84
|
+
end
|
85
|
+
|
86
|
+
def generate_command_information(thor, name, command, aliases)
|
87
|
+
subcommands = if (subcommand_class = thor.subcommand_classes[name])
|
88
|
+
subcommand_metadata(subcommand_class)
|
89
|
+
else
|
90
|
+
[]
|
88
91
|
end
|
92
|
+
{name: hyphenate(name),
|
93
|
+
aliases: aliases.map {|a| hyphenate(a) },
|
94
|
+
usage: command.usage,
|
95
|
+
description: command.description,
|
96
|
+
options: thor.class_options.map {|_, o| option_metadata(o) } +
|
97
|
+
command.options.map {|(_, o)| option_metadata(o) },
|
98
|
+
subcommands: subcommands,}
|
89
99
|
end
|
90
100
|
|
91
101
|
def option_metadata(option)
|
92
|
-
{
|
93
|
-
|
94
|
-
}
|
102
|
+
{names: ["--#{option.name}"] + option.aliases.map {|a| "-#{a}" },
|
103
|
+
description: option.description,}
|
95
104
|
end
|
96
105
|
|
97
106
|
def quote(s)
|
@@ -110,6 +119,10 @@ class Thor
|
|
110
119
|
"{" + names.join(",") + "}"
|
111
120
|
end
|
112
121
|
end
|
122
|
+
|
123
|
+
def hyphenate(s)
|
124
|
+
s.gsub("_", "-")
|
125
|
+
end
|
113
126
|
end
|
114
127
|
end
|
115
128
|
end
|
@@ -3,30 +3,38 @@
|
|
3
3
|
readonly local DEPTH=<%= depth %>
|
4
4
|
|
5
5
|
case $CURRENT in
|
6
|
-
$DEPTH)
|
6
|
+
"$DEPTH")
|
7
7
|
_arguments \
|
8
8
|
<%- subcommand[:options].each do |option| -%>
|
9
9
|
<%= escape_option_names(option[:names]) %><%= quote(bracket(option[:description])) if option[:description] %> \
|
10
10
|
<%- end -%>
|
11
11
|
'*: :->subcommands'
|
12
12
|
|
13
|
-
case $state in
|
13
|
+
case ${state:?} in
|
14
14
|
subcommands)
|
15
15
|
_values \
|
16
16
|
'subcommand' \
|
17
17
|
<%- subcommand[:subcommands].each do |subcommand| -%>
|
18
18
|
<%= quote(subcommand[:name] + bracket(subcommand[:description])) %> \
|
19
|
+
<%- subcommand[:aliases].each do |_alias| -%>
|
20
|
+
<%= quote(_alias + bracket(subcommand[:description])) %> \
|
21
|
+
<%- end -%>
|
19
22
|
<%- end -%>
|
20
23
|
;
|
21
24
|
;;
|
22
25
|
esac
|
23
26
|
;;
|
24
27
|
*)
|
25
|
-
case $words[$DEPTH] in
|
28
|
+
case ${words[$DEPTH]:?} in
|
26
29
|
<%- subcommand[:subcommands].each do |subcommand| -%>
|
27
30
|
<%= subcommand[:name] %>)
|
28
31
|
<%= function_name %>_<%= subcommand[:name] %>
|
29
32
|
;;
|
33
|
+
<%- subcommand[:aliases].each do |_alias| -%>
|
34
|
+
<%= _alias %>)
|
35
|
+
<%= function_name %>_<%= subcommand[:name] %>
|
36
|
+
;;
|
37
|
+
<%- end -%>
|
30
38
|
<%- end -%>
|
31
39
|
*)
|
32
40
|
# if does not match any subcommand
|
@@ -45,7 +53,7 @@
|
|
45
53
|
<%- end -%>
|
46
54
|
'*: :->rest'
|
47
55
|
|
48
|
-
case $state in
|
56
|
+
case ${state:?} in
|
49
57
|
rest)
|
50
58
|
# complete rest arguments
|
51
59
|
_files
|
data/thor-zsh_completion.gemspec
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
3
|
+
require "thor/zsh_completion/version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
6
|
spec.name = "thor-zsh_completion"
|
@@ -9,17 +8,15 @@ Gem::Specification.new do |spec|
|
|
9
8
|
spec.authors = ["labocho"]
|
10
9
|
spec.email = ["labocho@penguinlab.jp"]
|
11
10
|
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
11
|
+
spec.summary = "Create zsh completion script for Thor subclass"
|
12
|
+
spec.description = "Create zsh completion script for Thor subclass"
|
14
13
|
spec.homepage = "https://github.com/labocho/thor-zsh_completion"
|
15
14
|
spec.license = "MIT"
|
16
15
|
|
17
|
-
spec.files = `git ls-files -z`.split("\x0").reject {
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject {|f| f.match(%r{^(test|spec|features)/}) }
|
18
17
|
spec.bindir = "exe"
|
19
|
-
spec.executables = spec.files.grep(%r
|
18
|
+
spec.executables = spec.files.grep(%r(^exe/)) {|f| File.basename(f) }
|
20
19
|
spec.require_paths = ["lib"]
|
21
20
|
|
22
|
-
spec.
|
23
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
24
|
-
spec.add_development_dependency "rspec"
|
21
|
+
spec.add_dependency "thor", "< 2"
|
25
22
|
end
|
metadata
CHANGED
@@ -1,57 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thor-zsh_completion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- labocho
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-11-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: thor
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "<"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
type: :
|
19
|
+
version: '2'
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "<"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '10.0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '10.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
26
|
+
version: '2'
|
55
27
|
description: Create zsh completion script for Thor subclass
|
56
28
|
email:
|
57
29
|
- labocho@penguinlab.jp
|
@@ -61,13 +33,17 @@ extra_rdoc_files: []
|
|
61
33
|
files:
|
62
34
|
- ".gitignore"
|
63
35
|
- ".rspec"
|
36
|
+
- ".rubocop.yml"
|
64
37
|
- ".travis.yml"
|
38
|
+
- CHANGELOG.md
|
65
39
|
- CODE_OF_CONDUCT.md
|
66
40
|
- Gemfile
|
67
41
|
- LICENSE.txt
|
68
42
|
- README.md
|
69
43
|
- Rakefile
|
70
44
|
- bin/console
|
45
|
+
- bin/rspec
|
46
|
+
- bin/rubocop
|
71
47
|
- bin/setup
|
72
48
|
- lib/thor/zsh_completion.rb
|
73
49
|
- lib/thor/zsh_completion/command.rb
|
@@ -80,7 +56,7 @@ homepage: https://github.com/labocho/thor-zsh_completion
|
|
80
56
|
licenses:
|
81
57
|
- MIT
|
82
58
|
metadata: {}
|
83
|
-
post_install_message:
|
59
|
+
post_install_message:
|
84
60
|
rdoc_options: []
|
85
61
|
require_paths:
|
86
62
|
- lib
|
@@ -95,9 +71,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
71
|
- !ruby/object:Gem::Version
|
96
72
|
version: '0'
|
97
73
|
requirements: []
|
98
|
-
|
99
|
-
|
100
|
-
signing_key:
|
74
|
+
rubygems_version: 3.1.2
|
75
|
+
signing_key:
|
101
76
|
specification_version: 4
|
102
77
|
summary: Create zsh completion script for Thor subclass
|
103
78
|
test_files: []
|