thor-zsh_completion 0.1.2 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
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: []