opt_parse_validator 1.8.1 → 1.9.3

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
2
  SHA256:
3
- metadata.gz: 586dab37cd325eb2de116eeb45634de660057721145677f1231f59d31a7f259d
4
- data.tar.gz: 3f302f8ddbeaef89b02efc5c4330d28f741ebab06acbbfeba8c412f138663bfe
3
+ metadata.gz: c53dffe78ba9cd4449e9eb13eadd1c322bed9e9bb49576436cafc38850662de5
4
+ data.tar.gz: db5ffda29561522244c2b85408581356f987d982304e193e3befe71b4c6d9085
5
5
  SHA512:
6
- metadata.gz: 26bf966e30e4f5324061913247ed533b22272b0bf04a03b18321e345b17c990987df4a3fdad52fe392cd915323c6ec26fd9f0a356f4aae3fe21e6b3b8a09dedb
7
- data.tar.gz: 2be116f86f8472f5f2b4deadc56c2e3942ce59bc9d978ae913178128608a4f389b57780de22c370d1aea1ee0c96e3e4453911a80dd9d3cd214cce13bdac7ae02
6
+ metadata.gz: e9318bb95835631324f8d95f6a179d771699faf6542d38b725ebb0a500fa9dec7f4047139b0e91144106981b40fc212a51b513a596665799745c2718a6fa8ced
7
+ data.tar.gz: b66fca4ecda2254ae42f8fec9d5875a0cdcaa2639bc58331998477872ec0768f516f8837c9e12f0796c1bec2e0e8d309182cde0b714c20347b519ff76249f97a
data/README.md CHANGED
@@ -2,7 +2,7 @@ OptParseValidator
2
2
  =================
3
3
 
4
4
  [![Gem Version](https://badge.fury.io/rb/opt_parse_validator.svg)](https://badge.fury.io/rb/opt_parse_validator)
5
- [![Build Status](https://travis-ci.org/wpscanteam/OptParseValidator.svg?branch=master)](https://travis-ci.org/wpscanteam/OptParseValidator)
5
+ ![Build](https://github.com/wpscanteam/OptParseValidator/workflows/Build/badge.svg)
6
6
  [![Coverage Status](https://img.shields.io/coveralls/wpscanteam/OptParseValidator.svg)](https://coveralls.io/r/wpscanteam/OptParseValidator?branch=master)
7
7
  [![Code Climate](https://api.codeclimate.com/v1/badges/56f0307bbbda6d41b99a/maintainability)](https://codeclimate.com/github/wpscanteam/OptParseValidator/maintainability)
8
8
 
@@ -108,18 +108,16 @@ module OptParseValidator
108
108
  # @return [ void ]
109
109
  def register_callback(opt)
110
110
  on(*opt.option) do |arg|
111
- begin
112
- if opt.alias?
113
- parse!(opt.alias_for.split(' '))
114
- else
115
- @results[opt.to_sym] = opt.normalize(opt.validate(arg))
116
- end
117
- rescue StandardError => e
118
- # Adds the long option name to the message
119
- # And raises it as an OptParseValidator::Error if not already one
120
- # e.g --proxy Invalid Scheme format.
121
- raise e.is_a?(Error) ? e.class : Error, "#{opt.to_long} #{e}"
111
+ if opt.alias?
112
+ parse!(opt.alias_for.split)
113
+ else
114
+ @results[opt.to_sym] = opt.normalize(opt.validate(arg))
122
115
  end
116
+ rescue StandardError => e
117
+ # Adds the long option name to the message
118
+ # And raises it as an OptParseValidator::Error if not already one
119
+ # e.g --proxy Invalid Scheme format.
120
+ raise e.is_a?(Error) ? e.class : Error, "#{opt.to_long} #{e}"
123
121
  end
124
122
  end
125
123
 
@@ -147,11 +145,11 @@ module OptParseValidator
147
145
  # @return [ Void ]
148
146
  def post_processing
149
147
  @opts.each do |opt|
150
- raise NoRequiredOption, "The option #{opt} is required" if opt.required? && !@results.key?(opt.to_sym)
148
+ raise NoRequiredOption, "The option --#{opt} is required" if opt.required? && !@results.key?(opt.to_sym)
151
149
 
152
150
  next if opt.required_unless.empty? || @results.key?(opt.to_sym)
153
151
 
154
- fail_msg = "One of the following options is required: #{opt}, #{opt.required_unless.join(', ')}"
152
+ fail_msg = "One of the following options is required: --#{opt}, --#{opt.required_unless.join(', --')}"
155
153
 
156
154
  raise NoRequiredOption, fail_msg unless opt.required_unless.any? do |sym|
157
155
  @results.key?(sym)
@@ -51,7 +51,7 @@ module OptParseValidator
51
51
 
52
52
  each { |config_file| result.deep_merge!(config_file.parse) }
53
53
 
54
- result = result.dig(result_key) || {} if result_key
54
+ result = result[result_key] || {} if result_key
55
55
 
56
56
  result.deep_symbolize_keys
57
57
  end
@@ -1,17 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class OptionParser
4
- # Hack to suppress the completion (expect for the -h/--help) which was leading to
4
+ # Hack to suppress the completion (except for the -h/--help) which was leading to
5
5
  # unwanted behaviours
6
6
  # See https://github.com/wpscanteam/CMSScanner/issues/2
7
7
  module Completion
8
8
  class << self
9
9
  alias original_candidate candidate
10
10
 
11
+ # rubocop:disable Style/OptionalBooleanParameter
11
12
  def candidate(key, icase = false, pat = nil, &block)
12
13
  # Maybe also do this for -v/--version ?
13
14
  key == 'h' ? original_candidate('help', icase, pat, &block) : []
14
15
  end
16
+ # rubocop:enable Style/OptionalBooleanParameter
15
17
  end
16
18
  end
17
19
  end
@@ -5,5 +5,5 @@
5
5
  path file_path directory_path array integer_range multi_choices regexp headers
6
6
  smart_list alias
7
7
  ].each do |opt|
8
- require 'opt_parse_validator/opts/' + opt
8
+ require "opt_parse_validator/opts/#{opt}"
9
9
  end
@@ -43,7 +43,7 @@ module OptParseValidator
43
43
  end
44
44
 
45
45
  def required_unless
46
- @required_unless ||= [*attrs[:required_unless]]
46
+ @required_unless ||= Array(attrs[:required_unless])
47
47
  end
48
48
 
49
49
  # @return [ Mixed ]
@@ -91,7 +91,7 @@ module OptParseValidator
91
91
  #
92
92
  # @return [ Mixed ]
93
93
  def normalize(value)
94
- [*attrs[:normalize]].each do |method|
94
+ Array(attrs[:normalize]).each do |method|
95
95
  next unless method.is_a?(Symbol)
96
96
 
97
97
  value = value.send(method) if value.respond_to?(method)
@@ -107,7 +107,7 @@ module OptParseValidator
107
107
 
108
108
  raise Error, "Could not find option symbol for #{option}" unless long_option
109
109
 
110
- @symbol = long_option.gsub(/^--/, '').tr('-', '_').to_sym
110
+ @symbol = long_option.delete_prefix('--').tr('-', '_').to_sym
111
111
  end
112
112
  @symbol
113
113
  end
@@ -115,7 +115,7 @@ module OptParseValidator
115
115
  # @return [ String ] The raw long option (e.g: --proxy)
116
116
  def to_long
117
117
  option.each do |option_attr|
118
- if /^--/.match?(option_attr)
118
+ if option_attr.start_with?('--')
119
119
  return option_attr.gsub(/ .*$/, '')
120
120
  .gsub(/\[[^\]]+\]/, '')
121
121
  end
@@ -26,7 +26,7 @@ module OptParseValidator
26
26
  end
27
27
 
28
28
  def check_extensions(path)
29
- return if [*attrs[:extensions]].include?(path.extname.delete('.'))
29
+ return if Array(attrs[:extensions]).include?(path.extname.delete('.'))
30
30
 
31
31
  raise Error, "The extension of '#{path}' is not allowed"
32
32
  end
@@ -104,7 +104,7 @@ module OptParseValidator
104
104
 
105
105
  # @return [ Array<Array<Symbol>> ]
106
106
  def incompatible
107
- [*attrs[:incompatible]]
107
+ Array(attrs[:incompatible])
108
108
  end
109
109
 
110
110
  # @param [ Hash ] values
@@ -39,22 +39,22 @@ module OptParseValidator
39
39
 
40
40
  # @param [ Pathname ] path
41
41
  def check_file(path)
42
- raise Error, "'#{path}' is not a file" unless path.file? || attrs[:exists] == false
42
+ raise Error, "The path '#{path}' does not exist or is not a file" unless path.file? || attrs[:exists] == false
43
43
  end
44
44
 
45
45
  # @param [ Pathname ] path
46
46
  def check_directory(path)
47
- raise Error, "'#{path}' is not a directory" unless path.directory? || attrs[:exists] == false
47
+ raise Error, "The path '#{path}' does not exist or is not a directory" unless path.directory? || attrs[:exists] == false
48
48
  end
49
49
 
50
50
  # @param [ Pathname ] path
51
51
  def check_executable(path)
52
- raise Error, "'#{path}' is not executable" unless path.executable?
52
+ raise Error, "The path '#{path}' is not executable" unless path.executable?
53
53
  end
54
54
 
55
55
  # @param [ Pathname ] path
56
56
  def check_readable(path)
57
- raise Error, "'#{path}' is not readable" unless path.readable?
57
+ raise Error, "The path '#{path}' is not readable" unless path.readable?
58
58
  end
59
59
 
60
60
  # If the path does not exist, it will check for the parent
@@ -62,7 +62,7 @@ module OptParseValidator
62
62
  #
63
63
  # @param [ Pathname ] path
64
64
  def check_writable(path)
65
- raise Error, "'#{path}' is not writable" if path.exist? && !path.writable? || !path.parent.writable?
65
+ raise Error, "The path '#{path}' is not writable" if path.exist? && !path.writable? || !path.parent.writable?
66
66
  end
67
67
  end
68
68
  end
@@ -13,7 +13,7 @@ module OptParseValidator
13
13
 
14
14
  # @return [ Array<String> ]
15
15
  def allowed_protocols
16
- @allowed_protocols ||= [*attrs[:protocols]].map(&:downcase)
16
+ @allowed_protocols ||= Array(attrs[:protocols]).map(&:downcase)
17
17
  end
18
18
 
19
19
  # The default protocol (or scheme) to use if none was given
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Gem Version
4
4
  module OptParseValidator
5
- VERSION = '1.8.1'
5
+ VERSION = '1.9.3'
6
6
  end
metadata CHANGED
@@ -1,35 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opt_parse_validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.1
4
+ version: 1.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - WPScanTeam
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-30 00:00:00.000000000 Z
11
+ date: 2021-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.2'
19
+ version: '5.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 6.1.0
22
+ version: 6.2.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ">"
27
+ - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '4.2'
29
+ version: '5.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 6.1.0
32
+ version: 6.2.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: addressable
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -65,103 +65,103 @@ dependencies:
65
65
  - !ruby/object:Gem::Version
66
66
  version: '1.6'
67
67
  - !ruby/object:Gem::Dependency
68
- name: coveralls
68
+ name: rake
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: 0.8.0
73
+ version: '13.0'
74
74
  type: :development
75
75
  prerelease: false
76
76
  version_requirements: !ruby/object:Gem::Requirement
77
77
  requirements:
78
78
  - - "~>"
79
79
  - !ruby/object:Gem::Version
80
- version: 0.8.0
80
+ version: '13.0'
81
81
  - !ruby/object:Gem::Dependency
82
- name: rake
82
+ name: rspec
83
83
  requirement: !ruby/object:Gem::Requirement
84
84
  requirements:
85
85
  - - "~>"
86
86
  - !ruby/object:Gem::Version
87
- version: '13.0'
87
+ version: 3.10.0
88
88
  type: :development
89
89
  prerelease: false
90
90
  version_requirements: !ruby/object:Gem::Requirement
91
91
  requirements:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
- version: '13.0'
94
+ version: 3.10.0
95
95
  - !ruby/object:Gem::Dependency
96
- name: rspec
96
+ name: rspec-its
97
97
  requirement: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: 3.9.0
101
+ version: 1.3.0
102
102
  type: :development
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  requirements:
106
106
  - - "~>"
107
107
  - !ruby/object:Gem::Version
108
- version: 3.9.0
108
+ version: 1.3.0
109
109
  - !ruby/object:Gem::Dependency
110
- name: rspec-its
110
+ name: rubocop
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
113
  - - "~>"
114
114
  - !ruby/object:Gem::Version
115
- version: 1.3.0
115
+ version: 1.7.0
116
116
  type: :development
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - "~>"
121
121
  - !ruby/object:Gem::Version
122
- version: 1.3.0
122
+ version: 1.7.0
123
123
  - !ruby/object:Gem::Dependency
124
- name: rubocop
124
+ name: rubocop-performance
125
125
  requirement: !ruby/object:Gem::Requirement
126
126
  requirements:
127
127
  - - "~>"
128
128
  - !ruby/object:Gem::Version
129
- version: 0.76.0
129
+ version: 1.9.0
130
130
  type: :development
131
131
  prerelease: false
132
132
  version_requirements: !ruby/object:Gem::Requirement
133
133
  requirements:
134
134
  - - "~>"
135
135
  - !ruby/object:Gem::Version
136
- version: 0.76.0
136
+ version: 1.9.0
137
137
  - !ruby/object:Gem::Dependency
138
- name: rubocop-performance
138
+ name: simplecov
139
139
  requirement: !ruby/object:Gem::Requirement
140
140
  requirements:
141
141
  - - "~>"
142
142
  - !ruby/object:Gem::Version
143
- version: 1.5.0
143
+ version: 0.21.0
144
144
  type: :development
145
145
  prerelease: false
146
146
  version_requirements: !ruby/object:Gem::Requirement
147
147
  requirements:
148
148
  - - "~>"
149
149
  - !ruby/object:Gem::Version
150
- version: 1.5.0
150
+ version: 0.21.0
151
151
  - !ruby/object:Gem::Dependency
152
- name: simplecov
152
+ name: simplecov-lcov
153
153
  requirement: !ruby/object:Gem::Requirement
154
154
  requirements:
155
155
  - - "~>"
156
156
  - !ruby/object:Gem::Version
157
- version: 0.16.1
157
+ version: 0.8.0
158
158
  type: :development
159
159
  prerelease: false
160
160
  version_requirements: !ruby/object:Gem::Requirement
161
161
  requirements:
162
162
  - - "~>"
163
163
  - !ruby/object:Gem::Version
164
- version: 0.16.1
164
+ version: 0.8.0
165
165
  description: Implementation of validators for the ruby OptionParser lib. Mainly used
166
166
  in the CMSScanner gem to define the cli options available
167
167
  email:
@@ -213,7 +213,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
213
213
  requirements:
214
214
  - - ">="
215
215
  - !ruby/object:Gem::Version
216
- version: '2.4'
216
+ version: '2.5'
217
217
  required_rubygems_version: !ruby/object:Gem::Requirement
218
218
  requirements:
219
219
  - - ">="