danger-changelog 0.4.0 → 0.4.1
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_todo.yml +1 -1
- data/CHANGELOG.md +5 -0
- data/README.md +1 -1
- data/lib/changelog/changelog_line/changelog_entry_line.rb +1 -0
- data/lib/changelog/changelog_line/changelog_header_line.rb +14 -6
- data/lib/changelog/changelog_line/changelog_line.rb +11 -0
- data/lib/changelog/gem_version.rb +1 -1
- data/spec/changelog_file_spec.rb +23 -4
- data/spec/changelog_spec.rb +4 -2
- data/spec/fixtures/changelogs/dates.md +13 -0
- data/spec/fixtures/changelogs/imbalanced.md +7 -0
- data/spec/fixtures/changelogs/{with_bad_lines.md → lines.md} +2 -0
- data/spec/fixtures/changelogs/{with_bad_semver.md → semver.md} +7 -0
- metadata +10 -8
- data/spec/fixtures/changelogs/with_bad_dates.md +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23ffe294b89bbc0ab12ea04d4ec4047537296e946185c8c429d2a0342b99f5f3
|
4
|
+
data.tar.gz: 12d61d6e00b7bafda8f4007b12219f33a11b0b3e12b5442404fb2ff419b263e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 844b03efdd6dbda1f354d0473471ff768d0fe39774521f5e5d092b8b2cc1febcbae5bda93fef8f9da6488e3c4b13c1fb385303b10e37debd7d546a953687875d
|
7
|
+
data.tar.gz: 94016cf396222b1b0c06eb78b3c940eddc7bf3b4f7fd0114ee5a7779317067f8f33ca4e58348ff629a6c99f470977878676c9c803b47c56ef83d267b3196fbd2
|
data/.rubocop_todo.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2018-12-
|
3
|
+
# on 2018-12-20 12:04:45 -0500 using RuboCop version 0.61.1.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
## Changelog
|
2
2
|
|
3
|
+
### 0.4.1 (2018/12/20)
|
4
|
+
|
5
|
+
* [#37](https://github.com/dblock/danger-changelog/issues/37): Allow for parenthesis and brackets around versions and dates - [@dblock](https://github.com/dblock).
|
6
|
+
* [#38](https://github.com/dblock/danger-changelog/pull/38): Check for imbalanced parenthesis and brackets - [@dblock](https://github.com/dblock).
|
7
|
+
|
3
8
|
### 0.4.0 (2018/12/16)
|
4
9
|
|
5
10
|
* [#35](https://github.com/dblock/danger-changelog/pull/35): Check that dates in headers are ISO8601 - [@dblock](https://github.com/dblock).
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# danger-changelog
|
2
2
|
|
3
3
|
A plugin for [danger.systems](http://danger.systems) that obsessive-compulsively lints your project’s `CHANGELOG.md`.
|
4
|
-
It can make sure, for example, that changes are attributed properly, have a valid version number, a date in the ISO8601 format, and that they’re always terminated with a period.
|
4
|
+
It can make sure, for example, that changes are attributed properly, have a valid version number, a date in the ISO8601 format, balanced parenthesis and brackets, and that they’re always terminated with a period.
|
5
5
|
|
6
6
|
[](https://badge.fury.io/rb/danger-changelog)
|
7
7
|
[](https://travis-ci.org/dblock/danger-changelog)
|
@@ -5,6 +5,7 @@ module Danger
|
|
5
5
|
# A CHANGELOG.md line represents the change entry.
|
6
6
|
class ChangelogEntryLine < ChangelogLine
|
7
7
|
def valid?
|
8
|
+
return false unless balanced?(line)
|
8
9
|
return true if line =~ %r{^\*\s[\`[:upper:]].*[^.,] \- \[\@[\w\d\-\_]+\]\(https:\/\/github\.com\/.*[\w\d\-\_]+\).$}
|
9
10
|
return true if line =~ %r{^\*\s\[\#\d+\]\(https:\/\/github\.com\/.*\d+\)\: [\`[:upper:]].*[^.,] \- \[\@[\w\d\-\_]+\]\(https:\/\/github\.com\/.*[\w\d\-\_]+\).$}
|
10
11
|
|
@@ -2,17 +2,25 @@ module Danger
|
|
2
2
|
module Changelog
|
3
3
|
# A CHANGELOG.md line represents the version header.
|
4
4
|
class ChangelogHeaderLine < ChangelogLine
|
5
|
+
OPEN_PARENS = /[\(\[\{]?/.freeze
|
6
|
+
CLOSE_PARENS = /[\)\]\}]?/.freeze
|
7
|
+
|
8
|
+
HASHES = /\#{1,4}/.freeze
|
9
|
+
SEMVER = /(?<semver>(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)/.freeze
|
10
|
+
ISO8601_DATE = %r{(?<date>([0-9]{4})[-/]?(1[0-2]|0?[1-9])[-/]+(3[01]|0?[1-9]|[12][0-9]))}.freeze
|
11
|
+
|
5
12
|
def valid?
|
6
|
-
|
7
|
-
return true if line.strip =~ /^\#{1,4}\s(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/ # no date at all
|
8
|
-
return true if line.strip =~ /^\#{1,4}\s(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?\s\(\w*\)$/ # next date
|
9
|
-
return true if line.strip =~ %r{^\#{1,4}\s(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?\s\(([0-9]{4})[-/]?(1[0-2]|0?[1-9])[-/]+(3[01]|0?[1-9]|[12][0-9])\)$} # iso 8601 date
|
13
|
+
stripped_line = line.strip
|
10
14
|
|
11
|
-
|
15
|
+
m = stripped_line.match(/^#{HASHES}\s[\w\s\:]*$/) # title
|
16
|
+
m ||= stripped_line.match(/^#{HASHES}\s#{OPEN_PARENS}#{SEMVER}#{CLOSE_PARENS}$/) # semver only
|
17
|
+
m ||= stripped_line.match(/^#{HASHES}\s#{OPEN_PARENS}#{SEMVER}#{CLOSE_PARENS}[\s\-]+#{OPEN_PARENS}(#{ISO8601_DATE}|\w*)#{CLOSE_PARENS}$/) # semver and iso 8601 date or next version description
|
18
|
+
|
19
|
+
!m.nil? && balanced?(stripped_line)
|
12
20
|
end
|
13
21
|
|
14
22
|
def self.validates_as_changelog_line?(line)
|
15
|
-
return true if line =~
|
23
|
+
return true if line =~ /^#{HASHES}\s.+/
|
16
24
|
|
17
25
|
false
|
18
26
|
end
|
@@ -2,6 +2,10 @@ module Danger
|
|
2
2
|
module Changelog
|
3
3
|
# An abstract CHANGELOG.md line.
|
4
4
|
class ChangelogLine
|
5
|
+
NON_DELIMITERS = /[^(){}\[\]]*/.freeze
|
6
|
+
PAIRED = /\(#{NON_DELIMITERS}\)|\{#{NON_DELIMITERS}\}|\[#{NON_DELIMITERS}\]/.freeze
|
7
|
+
DELIMITER = /[(){}\[\]]/.freeze
|
8
|
+
|
5
9
|
attr_accessor :line
|
6
10
|
|
7
11
|
def initialize(line)
|
@@ -22,6 +26,13 @@ module Danger
|
|
22
26
|
def self.validates_as_changelog_line?(_line)
|
23
27
|
abort "You need to include a function for #{self} for validates_as_changelog_line?"
|
24
28
|
end
|
29
|
+
|
30
|
+
# https://stackoverflow.com/questions/25979364/ruby-regex-for-matching-brackets
|
31
|
+
def balanced?(line_with_parens)
|
32
|
+
line_with_parens = line_with_parens.dup
|
33
|
+
line_with_parens.gsub!(PAIRED, ''.freeze) while line_with_parens =~ PAIRED
|
34
|
+
line_with_parens !~ DELIMITER
|
35
|
+
end
|
25
36
|
end
|
26
37
|
end
|
27
38
|
end
|
data/spec/changelog_file_spec.rb
CHANGED
@@ -41,7 +41,7 @@ describe Danger::Changelog::ChangelogFile do
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
context 'with bad lines' do
|
44
|
-
let(:filename) { File.expand_path('fixtures/changelogs/
|
44
|
+
let(:filename) { File.expand_path('fixtures/changelogs/lines.md', __dir__) }
|
45
45
|
it 'is invalid' do
|
46
46
|
expect(subject.bad_lines?).to be true
|
47
47
|
end
|
@@ -51,7 +51,9 @@ describe Danger::Changelog::ChangelogFile do
|
|
51
51
|
"* [#1](https://github.com/dblock/danger-changelog/pull/1) - Not a colon - [@dblock](https://github.com/dblock).\n",
|
52
52
|
"* [#1](https://github.com/dblock/danger-changelog/pull/1): No final period - [@dblock](https://github.com/dblock)\n",
|
53
53
|
"# [#1](https://github.com/dblock/danger-changelog/pull/1): Hash instead of star - [@dblock](https://github.com/dblock).\n",
|
54
|
-
"* [#1](https://github.com/dblock/danger-changelog/pull/1): Extra period. - [@dblock](https://github.com/dblock).\n"
|
54
|
+
"* [#1](https://github.com/dblock/danger-changelog/pull/1): Extra period. - [@dblock](https://github.com/dblock).\n",
|
55
|
+
"* [#1](https://github.com/dblock/danger-changelog/pull/1): Unbalanced ( - [@dblock](https://github.com/dblock).\n",
|
56
|
+
"* [#1](https://github.com/dblock/danger-changelog/pull/1): Unbalanced ] - [@dblock](https://github.com/dblock).\n"
|
55
57
|
]
|
56
58
|
end
|
57
59
|
it 'has your contribution here' do
|
@@ -59,7 +61,7 @@ describe Danger::Changelog::ChangelogFile do
|
|
59
61
|
end
|
60
62
|
end
|
61
63
|
context 'with bad dates' do
|
62
|
-
let(:filename) { File.expand_path('fixtures/changelogs/
|
64
|
+
let(:filename) { File.expand_path('fixtures/changelogs/dates.md', __dir__) }
|
63
65
|
it 'is invalid' do
|
64
66
|
expect(subject.bad_lines?).to be true
|
65
67
|
end
|
@@ -73,7 +75,7 @@ describe Danger::Changelog::ChangelogFile do
|
|
73
75
|
end
|
74
76
|
end
|
75
77
|
context 'with bad semver' do
|
76
|
-
let(:filename) { File.expand_path('fixtures/changelogs/
|
78
|
+
let(:filename) { File.expand_path('fixtures/changelogs/semver.md', __dir__) }
|
77
79
|
it 'is invalid' do
|
78
80
|
expect(subject.bad_lines?).to be true
|
79
81
|
end
|
@@ -85,4 +87,21 @@ describe Danger::Changelog::ChangelogFile do
|
|
85
87
|
]
|
86
88
|
end
|
87
89
|
end
|
90
|
+
context 'with imbalanced parenthesis' do
|
91
|
+
let(:filename) { File.expand_path('fixtures/changelogs/imbalanced.md', __dir__) }
|
92
|
+
it 'is invalid' do
|
93
|
+
expect(subject.bad_lines?).to be true
|
94
|
+
end
|
95
|
+
it 'reports all bad lines' do
|
96
|
+
expect(subject.bad_lines).to eq [
|
97
|
+
"### 0.0.0)\n",
|
98
|
+
"### (0.0.1\n",
|
99
|
+
"### 1.2.3 (2018/1/1\n",
|
100
|
+
"### 0.1.0 2018/1/1)\n",
|
101
|
+
"### 0 ((2018/1/1)\n",
|
102
|
+
"### 0. [2018/1/1)\n",
|
103
|
+
"### 0.1. (2018/1/1)]\n"
|
104
|
+
]
|
105
|
+
end
|
106
|
+
end
|
88
107
|
end
|
data/spec/changelog_spec.rb
CHANGED
@@ -188,7 +188,7 @@ describe Danger::Changelog do
|
|
188
188
|
end
|
189
189
|
|
190
190
|
context 'with bad lines' do
|
191
|
-
let(:filename) { File.expand_path('fixtures/changelogs/
|
191
|
+
let(:filename) { File.expand_path('fixtures/changelogs/lines.md', __dir__) }
|
192
192
|
it 'complains' do
|
193
193
|
expect(subject).to be false
|
194
194
|
expect(status_report[:errors]).to eq ["One of the lines below found in #{filename} doesn't match the expected format. Please make it look like the other lines, pay attention to version numbers, periods, spaces and date formats."]
|
@@ -198,7 +198,9 @@ describe Danger::Changelog do
|
|
198
198
|
"```markdown\n* [#1](https://github.com/dblock/danger-changelog/pull/1) - Not a colon - [@dblock](https://github.com/dblock).\n```\n",
|
199
199
|
"```markdown\n* [#1](https://github.com/dblock/danger-changelog/pull/1): No final period - [@dblock](https://github.com/dblock)\n```\n",
|
200
200
|
"```markdown\n# [#1](https://github.com/dblock/danger-changelog/pull/1): Hash instead of star - [@dblock](https://github.com/dblock).\n```\n",
|
201
|
-
"```markdown\n* [#1](https://github.com/dblock/danger-changelog/pull/1): Extra period. - [@dblock](https://github.com/dblock).\n```\n"
|
201
|
+
"```markdown\n* [#1](https://github.com/dblock/danger-changelog/pull/1): Extra period. - [@dblock](https://github.com/dblock).\n```\n",
|
202
|
+
"```markdown\n* [#1](https://github.com/dblock/danger-changelog/pull/1): Unbalanced ( - [@dblock](https://github.com/dblock).\n```\n",
|
203
|
+
"```markdown\n* [#1](https://github.com/dblock/danger-changelog/pull/1): Unbalanced ] - [@dblock](https://github.com/dblock).\n```\n"
|
202
204
|
]
|
203
205
|
end
|
204
206
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
## Changelog
|
2
|
+
|
3
|
+
### 1.2.3 (Next)
|
4
|
+
### 1.2.3 - Next
|
5
|
+
### 1.2.3 (2018/1/2)
|
6
|
+
### 1.2.3 (2018-1-2)
|
7
|
+
### 1.2.3 (2018-01-02)
|
8
|
+
### 1.2.3 (2018/01/02)
|
9
|
+
### 1.2.3 (1/2/2018)
|
10
|
+
### 1.2.3 (2018/13/1)
|
11
|
+
### 1.2.3 (2018/13)
|
12
|
+
### 1.2.3 (2018/1/1/3)
|
13
|
+
### 1.2.3 - 2018/01/02
|
@@ -5,4 +5,6 @@ Missing star - [@dblock](https://github.com/dblock).
|
|
5
5
|
* [#1](https://github.com/dblock/danger-changelog/pull/1): No final period - [@dblock](https://github.com/dblock)
|
6
6
|
# [#1](https://github.com/dblock/danger-changelog/pull/1): Hash instead of star - [@dblock](https://github.com/dblock).
|
7
7
|
* [#1](https://github.com/dblock/danger-changelog/pull/1): Extra period. - [@dblock](https://github.com/dblock).
|
8
|
+
* [#1](https://github.com/dblock/danger-changelog/pull/1): Unbalanced ( - [@dblock](https://github.com/dblock).
|
9
|
+
* [#1](https://github.com/dblock/danger-changelog/pull/1): Unbalanced ] - [@dblock](https://github.com/dblock).
|
8
10
|
* Your contribution here.
|
@@ -1,5 +1,8 @@
|
|
1
1
|
## Changelog
|
2
2
|
|
3
|
+
### Changed:
|
4
|
+
### Fixed:
|
5
|
+
|
3
6
|
### 0.0.0
|
4
7
|
### 0.0.1
|
5
8
|
### 1.2.3 (2018/1/1)
|
@@ -10,3 +13,7 @@
|
|
10
13
|
### 0.0.4
|
11
14
|
### 10.2.3-DEV-SNAPSHOT
|
12
15
|
### 99999999999999999999999.999999999999999999.99999999999999999
|
16
|
+
|
17
|
+
### 0.1.1 [2018/1/1]
|
18
|
+
### [0.1.1] [2018/1/1]
|
19
|
+
## [0.2.2] - 2017-06-20
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: danger-changelog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dblock
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-12-
|
11
|
+
date: 2018-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: danger-plugin-api
|
@@ -193,11 +193,12 @@ files:
|
|
193
193
|
- spec/changelog_spec.rb
|
194
194
|
- spec/config_spec.rb
|
195
195
|
- spec/fixtures/changelogs/customized.md
|
196
|
+
- spec/fixtures/changelogs/dates.md
|
197
|
+
- spec/fixtures/changelogs/imbalanced.md
|
198
|
+
- spec/fixtures/changelogs/lines.md
|
196
199
|
- spec/fixtures/changelogs/minimal.md
|
197
200
|
- spec/fixtures/changelogs/missing_your_contribution_here.md
|
198
|
-
- spec/fixtures/changelogs/
|
199
|
-
- spec/fixtures/changelogs/with_bad_lines.md
|
200
|
-
- spec/fixtures/changelogs/with_bad_semver.md
|
201
|
+
- spec/fixtures/changelogs/semver.md
|
201
202
|
- spec/spec_helper.rb
|
202
203
|
homepage: https://github.com/dblock/danger-changelog
|
203
204
|
licenses:
|
@@ -232,9 +233,10 @@ test_files:
|
|
232
233
|
- spec/changelog_spec.rb
|
233
234
|
- spec/config_spec.rb
|
234
235
|
- spec/fixtures/changelogs/customized.md
|
236
|
+
- spec/fixtures/changelogs/dates.md
|
237
|
+
- spec/fixtures/changelogs/imbalanced.md
|
238
|
+
- spec/fixtures/changelogs/lines.md
|
235
239
|
- spec/fixtures/changelogs/minimal.md
|
236
240
|
- spec/fixtures/changelogs/missing_your_contribution_here.md
|
237
|
-
- spec/fixtures/changelogs/
|
238
|
-
- spec/fixtures/changelogs/with_bad_lines.md
|
239
|
-
- spec/fixtures/changelogs/with_bad_semver.md
|
241
|
+
- spec/fixtures/changelogs/semver.md
|
240
242
|
- spec/spec_helper.rb
|
@@ -1,25 +0,0 @@
|
|
1
|
-
## Changelog
|
2
|
-
|
3
|
-
### 1.2.3 (Next)
|
4
|
-
|
5
|
-
* Your contribution here.
|
6
|
-
|
7
|
-
### 1.2.3 (2018/1/2)
|
8
|
-
|
9
|
-
* [#1](https://github.com/dblock/danger-changelog/pull/1): Change - [@dblock](https://github.com/dblock).
|
10
|
-
|
11
|
-
### 1.2.3 (1/2/2018)
|
12
|
-
|
13
|
-
* [#1](https://github.com/dblock/danger-changelog/pull/1): Change - [@dblock](https://github.com/dblock).
|
14
|
-
|
15
|
-
### 1.2.3 (2018/13/1)
|
16
|
-
|
17
|
-
* [#1](https://github.com/dblock/danger-changelog/pull/1): Change - [@dblock](https://github.com/dblock).
|
18
|
-
|
19
|
-
### 1.2.3 (2018/13)
|
20
|
-
|
21
|
-
* [#1](https://github.com/dblock/danger-changelog/pull/1): Change - [@dblock](https://github.com/dblock).
|
22
|
-
|
23
|
-
### 1.2.3 (2018/1/1/3)
|
24
|
-
|
25
|
-
* [#1](https://github.com/dblock/danger-changelog/pull/1): Change - [@dblock](https://github.com/dblock).
|