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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: dd91ee306a415b0689fcdb5f58ad3c52f1d049e1
4
- data.tar.gz: 692e2d425ff2779550b3d2b5e0edd13de418262b
2
+ SHA256:
3
+ metadata.gz: 5c434b47625fe4feb58ca29949aaf4779c35b83274b15f45c5e2cb7fdd0f2999
4
+ data.tar.gz: c57e8350114e0455a693b6adae1ead9d231e07923fe6cab73a770be23bf3dd08
5
5
  SHA512:
6
- metadata.gz: 638a502306f9c061ee9f1d3689a497709e414227829430341aa7c66a73f9bca56a038d8882b947d3498f7d89d775f942b3914b21255de240466d4f28052e9910
7
- data.tar.gz: d17f7a4fd9339fec15f08951af2cecbef1af08147febc75e89a4c9aa1cdcc9858bff8787a30a939cab9b45a6deb8e2cd9dd2dd8d4a149954cb46def2c840b81b
6
+ metadata.gz: 176936a07f7b4873cadf6002b8ef1e42832c066c51c6fc5ba208677888cae3962845ad2ee2f4bcd9cc56de37ce531bc0ca0f2478d15b0b17d88deed2e2a7996a
7
+ data.tar.gz: f0b5a195a450729a04e8a6b3429fc9fe1b9d411a4ad7b144518692f5a0b78f1eea7e70959ec4a4a20aa438da8fc916d2cd82102e5b31ce80c804065a86b4d56d
@@ -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
@@ -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
@@ -1,4 +1,9 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in thor-zsh_completion.gemspec
4
4
  gemspec
5
+
6
+ gem "bundler", "~> 2.1"
7
+ gem "rake", "~> 13.0"
8
+ gem "rspec", "~> 3.9"
9
+ gem "rubocop", "~> 0.86"
@@ -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")
@@ -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
- subcommand[:subcommands].each do |subcommand|
69
- source << render_subcommand_function(subcommand, prefix: prefix)
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
- thor.tasks.map do |(name, command)|
76
- if subcommand_class = thor.subcommand_classes[name]
77
- subcommands = subcommand_metadata(subcommand_class)
78
- else
79
- subcommands = []
80
- end
81
- { name: command.name.gsub("_", "-"),
82
- usage: command.usage,
83
- description: command.description,
84
- options: thor.class_options.map{|_, o| option_metadata(o) } +
85
- command.options.map{|(_, o)| option_metadata(o) },
86
- subcommands: subcommands
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
- { names: ["--#{option.name}"] + option.aliases.map{|a| "-#{a}" },
93
- description: option.description,
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
@@ -1,6 +1,6 @@
1
1
  #compdef <%= name %>
2
-
3
- local state
2
+ # shellcheck disable=SC2034
3
+ # https://github.com/koalaman/shellcheck/wiki/SC2034
4
4
 
5
5
  _<%= name %>() {
6
6
  __<%= name %>
@@ -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
@@ -1,5 +1,5 @@
1
1
  class Thor
2
2
  module ZshCompletion
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.8".freeze
4
4
  end
5
5
  end
@@ -1,7 +1,6 @@
1
- # coding: utf-8
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 'thor/zsh_completion/version'
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 = %q{Create zsh completion script for Thor subclass}
13
- spec.description = %q{Create zsh completion script for Thor subclass}
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 { |f| f.match(%r{^(test|spec|features)/}) }
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{^exe/}) { |f| File.basename(f) }
18
+ spec.executables = spec.files.grep(%r(^exe/)) {|f| File.basename(f) }
20
19
  spec.require_paths = ["lib"]
21
20
 
22
- spec.add_development_dependency "bundler", "~> 1.10"
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.2
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: 2017-03-17 00:00:00.000000000 Z
11
+ date: 2020-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: thor
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - "<"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.10'
20
- type: :development
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: '1.10'
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
- rubyforge_project:
99
- rubygems_version: 2.6.10
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: []