danger-gem_changes 0.0.3 → 0.0.4
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 +4 -4
- data/.rubocop.yml +2 -1
- data/Gemfile +1 -0
- data/Gemfile.lock +5 -1
- data/README.md +62 -4
- data/danger-gem_changes.gemspec +1 -1
- data/lib/danger_plugin.rb +2 -2
- data/lib/gem_changes/change.rb +19 -1
- data/lib/gem_changes/gemfile.rb +3 -3
- data/lib/gem_changes/summary_table.rb +16 -5
- data/lib/gem_changes/version.rb +1 -1
- data/spec/fixtures/Gemfile.lock.patch +2 -2
- data/spec/gem_changes/change_spec.rb +57 -0
- data/spec/gem_changes_spec.rb +8 -8
- metadata +4 -4
- data/.travis.yml +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1aa4a02bac66b8ac99978fed97167df34e24c05c66dc0268a65cda27dcb79cc7
|
4
|
+
data.tar.gz: 931055c624a1b1b4eb9b4d359ea61256f070cf164f2100c639e4b6c234559dbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5378d77c339d86a046df91fe6df74f08e9ef9c8c81bad05abce7493634f368be087f4f6fb25a7dfec3576802229d605bbd1b492a8efc07a2ff2f5e0474ae033f
|
7
|
+
data.tar.gz: 15a6335a13ea154405a70e1654e971cbd919dd940228cf019fc7e4f680d9a51a4ccc2b3eb8f398eed87f09b30fd01c39392a142582df6956432016e0f6317ecb
|
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
danger-gem_changes (0.0.
|
4
|
+
danger-gem_changes (0.0.4)
|
5
5
|
danger-plugin-api (~> 1.0)
|
6
6
|
nokogiri (~> 1.0)
|
7
7
|
|
@@ -148,6 +148,9 @@ GEM
|
|
148
148
|
rubocop (~> 1.41)
|
149
149
|
rubocop-factory_bot (2.25.1)
|
150
150
|
rubocop (~> 1.41)
|
151
|
+
rubocop-performance (1.21.0)
|
152
|
+
rubocop (>= 1.48.1, < 2.0)
|
153
|
+
rubocop-ast (>= 1.31.1, < 2.0)
|
151
154
|
rubocop-rake (0.6.0)
|
152
155
|
rubocop (~> 1.0)
|
153
156
|
rubocop-rspec (2.29.2)
|
@@ -184,6 +187,7 @@ DEPENDENCIES
|
|
184
187
|
rake
|
185
188
|
rspec
|
186
189
|
rubocop
|
190
|
+
rubocop-performance
|
187
191
|
rubocop-rake
|
188
192
|
rubocop-rspec
|
189
193
|
yard
|
data/README.md
CHANGED
@@ -1,15 +1,73 @@
|
|
1
1
|
# danger-gem_changes
|
2
2
|
|
3
|
-
|
3
|
+
This is a Danger plugin that can assist with reviews involving Gemfile
|
4
|
+
dependency changes. It can display a helpful table with links to changelogs and
|
5
|
+
diffs, and provides a DSL for evaluating changes to your depdencies.
|
4
6
|
|
5
7
|
## Installation
|
6
8
|
|
7
|
-
|
9
|
+
```shell
|
10
|
+
$ gem install danger-gem_changes
|
11
|
+
```
|
8
12
|
|
9
13
|
## Usage
|
10
14
|
|
11
|
-
|
12
|
-
|
15
|
+
The following examples are changes to your Dangerfile.
|
16
|
+
|
17
|
+
### Summary Table
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
# Print a markdown table summarizing Gemfile.lock changes, if any.
|
21
|
+
gem_changes.summarize_changes
|
22
|
+
```
|
23
|
+
|
24
|
+
> ### Gemfile.lock Changes
|
25
|
+
> | Gem | Source | Changelog | Change | Level |
|
26
|
+
> | --- | ------ | --------- | ------ | ----- |
|
27
|
+
> | [rubocop-factory_bot](https://rubygems.org/gems/rubocop-factory_bot) | [Source](https://github.com/rubocop/rubocop-factory_bot) | [Changelog](https://github.com/rubocop/rubocop-factory_bot/blob/master/CHANGELOG.md) | [v2.25.0 <- v2.25.1](https://github.com/rubocop/rubocop-factory_bot/compare/v2.25.0...v2.25.1) | Patch |
|
28
|
+
> | [rubocop-performance](https://rubygems.org/gems/rubocop-performance) | [Source](https://github.com/rubocop/rubocop-performance) | [Changelog](https://github.com/rubocop/rubocop-performance/blob/master/CHANGELOG.md) | Added at 1.21.0 | |
|
29
|
+
> | [rubocop-rake](https://rubygems.org/gems/rubocop-rake) | [Source](https://github.com/rubocop/rubocop-rake) | [Changelog](https://github.com/rubocop/rubocop-rake/blob/master/CHANGELOG.md) | [v0.5.0 -> v0.6.0](https://github.com/rubocop/rubocop-rake/compare/v0.5.0...v0.6.0) | Minor |
|
30
|
+
> | [rubocop-rspec](https://rubygems.org/gems/rubocop-rspec) | [Source](https://github.com/rubocop/rubocop-rspec) | [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md) | Removed at 2.29.2 | |
|
31
|
+
|
32
|
+
### Changes DSL
|
33
|
+
|
34
|
+
This gem provides a DSL for accessing metadata about changes to your Gemfile dependencies:
|
35
|
+
|
36
|
+
| Method | Description |
|
37
|
+
| :----: | ----------- |
|
38
|
+
| `changes` | All dependency changes |
|
39
|
+
| `additions` | Dependencies that were not present before |
|
40
|
+
| `removals` | Dependencies that are no longer present |
|
41
|
+
| `upgrades` | Dependencies that have a newer version than before |
|
42
|
+
| `downgrades` | Dependencies that have a lower version than before |
|
43
|
+
|
44
|
+
Each dependency change has information about the gem and version change:
|
45
|
+
|
46
|
+
| Method | Example |
|
47
|
+
| :----: | ------- |
|
48
|
+
| `gem.name` | `rubocop-rake` |
|
49
|
+
| `from` | `0.6.0` |
|
50
|
+
| `to` | `0.6.1` |
|
51
|
+
| `change?` | `true` |
|
52
|
+
| `addition?` | `false` |
|
53
|
+
| `removal?` | `false` |
|
54
|
+
| `upgrade?` | `true` |
|
55
|
+
| `downgrade?` | `false` |
|
56
|
+
|
57
|
+
The `from` attribute will be nil for additions, and `to` will be nil for removals.
|
58
|
+
|
59
|
+
### More Examples
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
# Print a warning if new dependencies were added.
|
63
|
+
warn "Dependencies added" if gem_changes.additions.any?
|
64
|
+
```
|
65
|
+
|
66
|
+
```ruby
|
67
|
+
# Print a table of dependency downgrades, if any
|
68
|
+
downgrades = gem_changes.downgrades
|
69
|
+
gem_changes.summarize_changes changes: downgrades, title: "Dependency Downgrades"
|
70
|
+
```
|
13
71
|
|
14
72
|
## Development
|
15
73
|
|
data/danger-gem_changes.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.metadata["rubygems_mfa_required"] = "true"
|
22
22
|
spec.metadata["source_code_uri"] = spec.homepage
|
23
23
|
spec.metadata["issue_tracker_uri"] = "#{spec.homepage}/issues"
|
24
|
-
spec.required_ruby_version = ">=
|
24
|
+
spec.required_ruby_version = ">= 3.1"
|
25
25
|
spec.add_runtime_dependency "danger-plugin-api", "~> 1.0"
|
26
26
|
spec.add_runtime_dependency "nokogiri", "~> 1.0"
|
27
27
|
end
|
data/lib/danger_plugin.rb
CHANGED
@@ -26,13 +26,13 @@ module Danger
|
|
26
26
|
|
27
27
|
string = "### #{title}\n"
|
28
28
|
|
29
|
-
string += GemChanges::SummaryTable.new(changes:
|
29
|
+
string += GemChanges::SummaryTable.new(changes:).markdown
|
30
30
|
|
31
31
|
markdown string
|
32
32
|
end
|
33
33
|
|
34
34
|
def changes
|
35
|
-
GemChanges::Gemfile.changes(git:
|
35
|
+
GemChanges::Gemfile.changes(git:)
|
36
36
|
end
|
37
37
|
|
38
38
|
def additions
|
data/lib/gem_changes/change.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
module GemChanges
|
4
4
|
Change = Struct.new(:gem, :from, :to, keyword_init: true) do
|
5
5
|
def initialize(gem:, from:, to:)
|
6
|
-
super(gem
|
6
|
+
super(gem:, from: Version(from), to: Version(to))
|
7
7
|
end
|
8
8
|
|
9
9
|
def change?
|
@@ -26,6 +26,24 @@ module GemChanges
|
|
26
26
|
change? and to < from
|
27
27
|
end
|
28
28
|
|
29
|
+
def major?
|
30
|
+
change? &&
|
31
|
+
from.segments[0] && to.segments[0] &&
|
32
|
+
from.segments[0] != to.segments[0]
|
33
|
+
end
|
34
|
+
|
35
|
+
def minor?
|
36
|
+
change? && !major? &&
|
37
|
+
from.segments[1] && to.segments[1] &&
|
38
|
+
from.segments[1] != to.segments[1]
|
39
|
+
end
|
40
|
+
|
41
|
+
def patch?
|
42
|
+
change? && !major? && !minor? &&
|
43
|
+
from.segments[2] && to.segments[2] &&
|
44
|
+
from.segments[2] != to.segments[2]
|
45
|
+
end
|
46
|
+
|
29
47
|
private
|
30
48
|
|
31
49
|
def Version(something)
|
data/lib/gem_changes/gemfile.rb
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
module GemChanges
|
4
4
|
module Gemfile
|
5
|
-
REMOVAL_REGEX = /^- ([^ ]*) \((.*)\)
|
6
|
-
ADDITION_REGEX = /^\+ ([^ ]*) \((.*)\)
|
5
|
+
REMOVAL_REGEX = /^- ([^ ]*) \((.*)\)/
|
6
|
+
ADDITION_REGEX = /^\+ ([^ ]*) \((.*)\)/
|
7
7
|
|
8
8
|
module_function def changes(git:)
|
9
9
|
diff = git.diff_for_file("Gemfile.lock")
|
@@ -27,7 +27,7 @@ module GemChanges
|
|
27
27
|
all_gems.map do |gem_name|
|
28
28
|
gem = Gem.new(name: gem_name)
|
29
29
|
|
30
|
-
Change.new(gem
|
30
|
+
Change.new(gem:, from: removed[gem_name], to: added[gem_name])
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -11,10 +11,10 @@ module GemChanges
|
|
11
11
|
def markdown
|
12
12
|
string = ""
|
13
13
|
|
14
|
-
string += "| Gem | Source | Changelog | Change |\n"
|
15
|
-
string += "| --- | ------ | --------- | ------ |\n"
|
14
|
+
string += "| Gem | Source | Changelog | Change | Level |\n"
|
15
|
+
string += "| --- | ------ | --------- | ------ | ----- |\n"
|
16
16
|
|
17
|
-
rows = changes.map { |change| Row.new(change:
|
17
|
+
rows = changes.map { |change| Row.new(change:) }
|
18
18
|
|
19
19
|
string += rows.map(&:markdown).join
|
20
20
|
|
@@ -36,7 +36,8 @@ module GemChanges
|
|
36
36
|
rubygems_link,
|
37
37
|
source_link,
|
38
38
|
changelog_link,
|
39
|
-
change_link
|
39
|
+
change_link,
|
40
|
+
level
|
40
41
|
].join(" | ")
|
41
42
|
|
42
43
|
string += " |\n"
|
@@ -44,6 +45,8 @@ module GemChanges
|
|
44
45
|
string
|
45
46
|
end
|
46
47
|
|
48
|
+
private
|
49
|
+
|
47
50
|
def rubygems_link
|
48
51
|
"[#{gem.name}](#{gem.rubygems_uri})"
|
49
52
|
end
|
@@ -75,7 +78,15 @@ module GemChanges
|
|
75
78
|
end
|
76
79
|
end
|
77
80
|
|
78
|
-
|
81
|
+
def level
|
82
|
+
if change.major?
|
83
|
+
"Major"
|
84
|
+
elsif change.minor?
|
85
|
+
"Minor"
|
86
|
+
elsif change.patch?
|
87
|
+
"Patch"
|
88
|
+
end
|
89
|
+
end
|
79
90
|
|
80
91
|
def change_text
|
81
92
|
if change.addition?
|
data/lib/gem_changes/version.rb
CHANGED
@@ -16,8 +16,8 @@ index eabec13..f4353d2 100644
|
|
16
16
|
+ rubocop-performance (1.21.0)
|
17
17
|
+ rubocop (>= 1.48.1, < 2.0)
|
18
18
|
+ rubocop-ast (>= 1.31.1, < 2.0)
|
19
|
-
- rubocop-rake (0.
|
20
|
-
+ rubocop-rake (0.6.
|
19
|
+
- rubocop-rake (0.5.0)
|
20
|
+
+ rubocop-rake (0.6.0)
|
21
21
|
rubocop (~> 1.0)
|
22
22
|
- rubocop-rspec (2.29.2)
|
23
23
|
@@ -181,6 +184,7 @@ DEPENDENCIES
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe GemChanges::Change do
|
6
|
+
let(:gem) { GemChanges::Gem.new(name: "bummr") }
|
7
|
+
|
8
|
+
describe "patch levels" do
|
9
|
+
let(:major) { described_class.new(gem:, from: "1.1.1", to: "2.1.1") }
|
10
|
+
|
11
|
+
let(:minor) { described_class.new(gem:, from: "1.1.1", to: "1.2.1") }
|
12
|
+
|
13
|
+
let(:patch) { described_class.new(gem:, from: "1.1.1", to: "1.1.2") }
|
14
|
+
|
15
|
+
describe "#major?" do
|
16
|
+
it "is true for major changes" do
|
17
|
+
expect(major).to be_major
|
18
|
+
end
|
19
|
+
|
20
|
+
it "is false for minor changes" do
|
21
|
+
expect(minor).not_to be_major
|
22
|
+
end
|
23
|
+
|
24
|
+
it "is false for patch changes" do
|
25
|
+
expect(patch).not_to be_major
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "#minor?" do
|
30
|
+
it "is false for major changes" do
|
31
|
+
expect(major).not_to be_minor
|
32
|
+
end
|
33
|
+
|
34
|
+
it "is true for minor changes" do
|
35
|
+
expect(minor).to be_minor
|
36
|
+
end
|
37
|
+
|
38
|
+
it "is false for patch changes" do
|
39
|
+
expect(patch).not_to be_minor
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#patch?" do
|
44
|
+
it "is false for major changes" do
|
45
|
+
expect(major).not_to be_patch
|
46
|
+
end
|
47
|
+
|
48
|
+
it "is false for minor changes" do
|
49
|
+
expect(minor).not_to be_patch
|
50
|
+
end
|
51
|
+
|
52
|
+
it "is true for patch changes" do
|
53
|
+
expect(patch).to be_patch
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/spec/gem_changes_spec.rb
CHANGED
@@ -66,8 +66,8 @@ module Danger
|
|
66
66
|
[
|
67
67
|
GemChanges::Change.new(
|
68
68
|
gem: GemChanges::Gem.new(name: "rubocop-rake"),
|
69
|
-
from: "0.
|
70
|
-
to: "0.6.
|
69
|
+
from: "0.5.0",
|
70
|
+
to: "0.6.0"
|
71
71
|
)
|
72
72
|
]
|
73
73
|
)
|
@@ -94,12 +94,12 @@ module Danger
|
|
94
94
|
|
95
95
|
expect(markdown).to eq(<<~MARKDOWN)
|
96
96
|
### Gemfile.lock Changes
|
97
|
-
| Gem | Source | Changelog | Change |
|
98
|
-
| --- | ------ | --------- | ------ |
|
99
|
-
| [rubocop-factory_bot](https://rubygems.org/gems/rubocop-factory_bot) | [Source](https://github.com/rubocop/rubocop-factory_bot) | [Changelog](https://github.com/rubocop/rubocop-factory_bot/blob/master/CHANGELOG.md) | [v2.25.0 <- v2.25.1](https://github.com/rubocop/rubocop-factory_bot/compare/v2.25.0...v2.25.1) |
|
100
|
-
| [rubocop-performance](https://rubygems.org/gems/rubocop-performance) | [Source](https://github.com/rubocop/rubocop-performance) | [Changelog](https://github.com/rubocop/rubocop-performance/blob/master/CHANGELOG.md) | Added at 1.21.0 |
|
101
|
-
| [rubocop-rake](https://rubygems.org/gems/rubocop-rake) | [Source](https://github.com/rubocop/rubocop-rake) | [Changelog](https://github.com/rubocop/rubocop-rake/blob/master/CHANGELOG.md) | [v0.
|
102
|
-
| [rubocop-rspec](https://rubygems.org/gems/rubocop-rspec) | [Source](https://github.com/rubocop/rubocop-rspec) | [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md) | Removed at 2.29.2 |
|
97
|
+
| Gem | Source | Changelog | Change | Level |
|
98
|
+
| --- | ------ | --------- | ------ | ----- |
|
99
|
+
| [rubocop-factory_bot](https://rubygems.org/gems/rubocop-factory_bot) | [Source](https://github.com/rubocop/rubocop-factory_bot) | [Changelog](https://github.com/rubocop/rubocop-factory_bot/blob/master/CHANGELOG.md) | [v2.25.0 <- v2.25.1](https://github.com/rubocop/rubocop-factory_bot/compare/v2.25.0...v2.25.1) | Patch |
|
100
|
+
| [rubocop-performance](https://rubygems.org/gems/rubocop-performance) | [Source](https://github.com/rubocop/rubocop-performance) | [Changelog](https://github.com/rubocop/rubocop-performance/blob/master/CHANGELOG.md) | Added at 1.21.0 | |
|
101
|
+
| [rubocop-rake](https://rubygems.org/gems/rubocop-rake) | [Source](https://github.com/rubocop/rubocop-rake) | [Changelog](https://github.com/rubocop/rubocop-rake/blob/master/CHANGELOG.md) | [v0.5.0 -> v0.6.0](https://github.com/rubocop/rubocop-rake/compare/v0.5.0...v0.6.0) | Minor |
|
102
|
+
| [rubocop-rspec](https://rubygems.org/gems/rubocop-rspec) | [Source](https://github.com/rubocop/rubocop-rspec) | [Changelog](https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md) | Removed at 2.29.2 | |
|
103
103
|
MARKDOWN
|
104
104
|
end
|
105
105
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: danger-gem_changes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John DeSilva
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: danger-plugin-api
|
@@ -47,7 +47,6 @@ extra_rdoc_files: []
|
|
47
47
|
files:
|
48
48
|
- ".gitignore"
|
49
49
|
- ".rubocop.yml"
|
50
|
-
- ".travis.yml"
|
51
50
|
- Gemfile
|
52
51
|
- Gemfile.lock
|
53
52
|
- Guardfile
|
@@ -63,6 +62,7 @@ files:
|
|
63
62
|
- lib/gem_changes/summary_table.rb
|
64
63
|
- lib/gem_changes/version.rb
|
65
64
|
- spec/fixtures/Gemfile.lock.patch
|
65
|
+
- spec/gem_changes/change_spec.rb
|
66
66
|
- spec/gem_changes_spec.rb
|
67
67
|
- spec/spec_helper.rb
|
68
68
|
homepage: https://github.com/Aesthetikx/danger-gem_changes
|
@@ -80,7 +80,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
80
80
|
requirements:
|
81
81
|
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '
|
83
|
+
version: '3.1'
|
84
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - ">="
|