strong_versions 0.4.4 → 0.4.5

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: 2948e08aad68876155035d029499da973771f8419f2519981c065e8d1a069938
4
- data.tar.gz: 85d5cc28abf45e9434ab2d92cb98590874a8a4bc0f2573306594fc5119c08175
3
+ metadata.gz: 4e3d02b2717fbfdc7da2e7cc0d83b495e01bc6b31efae98f635abae1cf8bf837
4
+ data.tar.gz: fb28b5ddd0a45c7ca56306bcfd58013824c9949bcd723a324dde98431f0b197c
5
5
  SHA512:
6
- metadata.gz: 0015b7477c4df28f48c2a7b40c4ea517da1e26a9698f92331db002fd771278341ab38d153eb814d14883d165d4a3465c65aea62e97e3b1c244ccb1014b736013
7
- data.tar.gz: 4b2688647749fca796f8d78182abb2e8ff49ea3b225c7fa6befeb4222328ceda0e3319432667743fc40d37fe0fcf2ae2636eb2affba2c5ee489faff3f6de52e2
6
+ metadata.gz: c4482cf23782277e84fdbf1a3a3e9d998c5cac84202d3c21be563dc4eeb21cdd5c6ba54490ff4f2e81d85899cde8eed32e28879e3a0f861871a1cd5a45b51491
7
+ data.tar.gz: fccdb21e6f7b58966a4f6dcee95ae6c176ae7be7b5380f820b660235f7a56f80163414475e9a4799d50d369f1ab73ddd354da98ba9aba83db03eb74c82f1cce3
@@ -16,3 +16,47 @@ AllCops:
16
16
  - 'bin/rspec'
17
17
  - 'bin/rubocop'
18
18
  - 'bin/setup'
19
+
20
+ Layout/SpaceAroundMethodCallOperator:
21
+ Enabled: true
22
+
23
+ Lint/RaiseException:
24
+ Enabled: true
25
+
26
+ Lint/StructNewOverride:
27
+ Enabled: true
28
+
29
+ Style/ExponentialNotation:
30
+ Enabled: true
31
+
32
+ Style/HashEachMethods:
33
+ Enabled: true
34
+
35
+ Style/HashTransformKeys:
36
+ Enabled: true
37
+
38
+ Style/HashTransformValues:
39
+ Enabled: true
40
+
41
+ Layout/EmptyLinesAroundAttributeAccessor:
42
+ Enabled: true
43
+
44
+ Style/SlicingWithRange:
45
+ Enabled: true
46
+
47
+ Lint/DeprecatedOpenSSLConstant:
48
+ Enabled: true
49
+ Lint/MixedRegexpCaptureTypes:
50
+ Enabled: true
51
+ Style/AccessorGrouping:
52
+ Enabled: true
53
+ Style/BisectedAttrAccessor:
54
+ Enabled: true
55
+ Style/RedundantAssignment:
56
+ Enabled: true
57
+ Style/RedundantFetchBlock:
58
+ Enabled: true
59
+ Style/RedundantRegexpCharacterClass:
60
+ Enabled: true
61
+ Style/RedundantRegexpEscape:
62
+ Enabled: true
data/README.md CHANGED
@@ -1,11 +1,5 @@
1
1
  # StrongVersions
2
2
 
3
- ```
4
- The right thing to guide us
5
- Is right here inside us
6
- --Nickelback
7
- ```
8
-
9
3
  # Overview
10
4
 
11
5
  _StrongVersions_ enforces a strict policy on your `Gemfile` requirements:
@@ -28,7 +22,7 @@ When all gems in a `Gemfile` follow this convention it SHOULD always be safe to
28
22
  Add the gem to your `Gemfile`
29
23
 
30
24
  ```ruby
31
- gem 'strong_versions', '~> 0.4.4'
25
+ gem 'strong_versions', '~> 0.4.5'
32
26
  ```
33
27
 
34
28
  And rebuild your bundle:
@@ -37,11 +31,6 @@ And rebuild your bundle:
37
31
  $ bundle install
38
32
  ```
39
33
 
40
- Or install yourself:
41
- ```bash
42
- $ gem install strong_versions -v '0.4.4'
43
- ```
44
-
45
34
  ## Usage
46
35
 
47
36
  _StrongVersions_ is invoked with a provided executable:
@@ -54,7 +43,7 @@ The executable will output all non-passing gems and will return an exit code of
54
43
 
55
44
  ![StrongVersions](doc/images/ci-pipeline.png)
56
45
 
57
- If you are feeling brave, auto-correct is available:
46
+ Auto-correct is available with the `-a/--auto-correct` option:
58
47
  ```bash
59
48
  $ bundle exec strong_versions -a
60
49
  ```
@@ -69,6 +58,7 @@ ignore:
69
58
  - rails
70
59
  ```
71
60
 
61
+ Gems in the ignore list will not be updated when using the `-a/--auto-correct` option.
72
62
  ## Contributing
73
63
 
74
64
  Fork and create a pull request.
@@ -13,6 +13,7 @@ require 'strong_versions/dependencies'
13
13
  require 'strong_versions/errors'
14
14
  require 'strong_versions/terminal'
15
15
  require 'strong_versions/gem_version'
16
+ require 'strong_versions/regexes'
16
17
  require 'strong_versions/version'
17
18
 
18
19
  module StrongVersions
@@ -17,7 +17,7 @@ module StrongVersions
17
17
  return true
18
18
  end
19
19
 
20
- return update_definitions if auto_correct
20
+ return update_definitions(options.fetch(:except, [])) if auto_correct
21
21
 
22
22
  raise_or_warn(options.fetch(:on_failure, 'raise'))
23
23
  summary
@@ -45,18 +45,17 @@ module StrongVersions
45
45
  @terminal.summary(@dependencies.size, @invalid_gems.size)
46
46
  end
47
47
 
48
- def updatable_dependencies
49
- @dependencies.select(&:updatable?)
48
+ def updatable_dependencies(except)
49
+ @dependencies.reject { |dependency| except.include?(dependency.name) }
50
+ .select(&:updatable?)
50
51
  end
51
52
 
52
- def update_definitions
53
- @terminal.update_summary(update(:gemfile) + update(:gemspec))
53
+ def update_definitions(except)
54
+ @terminal.update_summary(update(:gemfile, except) + update(:gemspec, except))
54
55
  end
55
56
 
56
- def update(subject)
57
- updatable_dependencies.reduce(0) do |count, dependency|
58
- next count unless dependency.updatable?
59
-
57
+ def update(subject, except)
58
+ updatable_dependencies(except).reduce(0) do |count, dependency|
60
59
  update_dependency(subject, dependency) ? count : count + 1
61
60
  end
62
61
  end
@@ -79,16 +78,14 @@ module StrongVersions
79
78
  match = content.match(regex)
80
79
  return content unless match
81
80
 
81
+ # For gemspec, indent includes the `spec.` or `s.` prefix.
82
82
  indent = match.captures.first
83
83
  definition = dependency.suggested_definition(subject)
84
84
  content.gsub(regex, "#{indent}#{definition}")
85
85
  end
86
86
 
87
87
  def gem_regex(subject, name)
88
- {
89
- gemfile: /^(\s*)gem\s+['"]#{name}['"].*$/,
90
- gemspec: /^(\s*)spec.add_[a-z_]*_?dependency\s+['"]#{name}['"].*$/
91
- }.fetch(subject)
88
+ Regexes.public_send(subject, name)
92
89
  end
93
90
 
94
91
  def raise_or_warn(on_failure)
@@ -14,6 +14,10 @@ module StrongVersions
14
14
  versions.each { |operator, version| validate_version(operator, version) }
15
15
  end
16
16
 
17
+ def to_s
18
+ "#<StrongVersions::Dependency name=#{@dependency.name}>"
19
+ end
20
+
17
21
  def gemfile
18
22
  Pathname.new(@dependency.gemfile) if @dependency.respond_to?(:gemfile)
19
23
  end
@@ -70,7 +74,7 @@ module StrongVersions
70
74
  end
71
75
 
72
76
  def suggested_gemspec_definition(constraints)
73
- "spec.add_#{gemspec_spec.type}_dependency '#{@name}', #{constraints}"
77
+ "add_#{gemspec_spec.type}_dependency '#{@name}', #{constraints}"
74
78
  end
75
79
 
76
80
  def suggested_gemfile_definition(constraints)
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StrongVersions
4
+ module Regexes
5
+ class << self
6
+ def gemfile(name)
7
+ /^(\s*)gem\s+['"]#{name}['"].*$/
8
+ end
9
+
10
+ def gemspec(name)
11
+ /^(\s*[A-Za-z]+\.)add_[a-z_]*_?dependency\s*\(?\s*['"]#{name}['"].*$/
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module StrongVersions
4
- VERSION = '0.4.4'
4
+ VERSION = '0.4.5'
5
5
  end
@@ -28,14 +28,13 @@ Gem::Specification.new do |spec|
28
28
  # stop supporting Rails 4 we need to support I18n 0.x and 1.x. At some point,
29
29
  # I will do a release that is locked to '~> 1.0' and Rails 4 users can use
30
30
  # an older version of the gem but we are not quite there yet.
31
- spec.add_dependency 'i18n', '>= 0.5.0'
31
+ spec.add_runtime_dependency 'i18n', '>= 0.5'
32
32
  spec.add_dependency 'paint', '~> 2.0'
33
33
 
34
- spec.add_development_dependency 'betterp', '~> 0.1.2'
35
34
  spec.add_development_dependency 'bundler', '~> 1.16'
36
- spec.add_development_dependency 'byebug', '~> 10.0'
35
+ spec.add_development_dependency 'devpack', '~> 0.1.1'
37
36
  spec.add_development_dependency 'rake', '~> 10.0'
38
37
  spec.add_development_dependency 'rspec', '~> 3.0'
39
38
  spec.add_development_dependency 'rspec-its', '~> 1.2'
40
- spec.add_development_dependency 'rubocop', '~> 0.60.0'
39
+ spec.add_development_dependency 'rubocop', '~> 0.87.1'
41
40
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strong_versions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Farrell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-08 00:00:00.000000000 Z
11
+ date: 2020-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.5.0
19
+ version: '0.5'
20
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: 0.5.0
26
+ version: '0.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: paint
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.0'
41
- - !ruby/object:Gem::Dependency
42
- name: betterp
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 0.1.2
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 0.1.2
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: bundler
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -67,19 +53,19 @@ dependencies:
67
53
  - !ruby/object:Gem::Version
68
54
  version: '1.16'
69
55
  - !ruby/object:Gem::Dependency
70
- name: byebug
56
+ name: devpack
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '10.0'
61
+ version: 0.1.1
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '10.0'
68
+ version: 0.1.1
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: rake
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +114,14 @@ dependencies:
128
114
  requirements:
129
115
  - - "~>"
130
116
  - !ruby/object:Gem::Version
131
- version: 0.60.0
117
+ version: 0.87.1
132
118
  type: :development
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
122
  - - "~>"
137
123
  - !ruby/object:Gem::Version
138
- version: 0.60.0
124
+ version: 0.87.1
139
125
  description: Ensure your gems are appropriately versioned
140
126
  email:
141
127
  - oss@bob.frl
@@ -172,6 +158,7 @@ files:
172
158
  - lib/strong_versions/dependency_finder.rb
173
159
  - lib/strong_versions/errors.rb
174
160
  - lib/strong_versions/gem_version.rb
161
+ - lib/strong_versions/regexes.rb
175
162
  - lib/strong_versions/terminal.rb
176
163
  - lib/strong_versions/version.rb
177
164
  - strong_versions.gemspec