strong_versions 0.4.4 → 0.4.5

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
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