git-lint 6.2.0 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.adoc +234 -104
  4. data/git-lint.gemspec +12 -12
  5. data/lib/git/lint/analyzer.rb +8 -4
  6. data/lib/git/lint/analyzers/abstract.rb +3 -3
  7. data/lib/git/lint/analyzers/commit_author_capitalization.rb +1 -1
  8. data/lib/git/lint/analyzers/commit_body_bullet_capitalization.rb +1 -1
  9. data/lib/git/lint/analyzers/commit_body_bullet_delimiter.rb +1 -1
  10. data/lib/git/lint/analyzers/{commit_body_single_bullet.rb → commit_body_bullet_only.rb} +4 -4
  11. data/lib/git/lint/analyzers/commit_body_phrase.rb +2 -5
  12. data/lib/git/lint/analyzers/commit_body_presence.rb +3 -3
  13. data/lib/git/lint/analyzers/commit_body_tracker_shorthand.rb +2 -2
  14. data/lib/git/lint/analyzers/commit_body_word_repeat.rb +31 -0
  15. data/lib/git/lint/analyzers/commit_signature.rb +2 -2
  16. data/lib/git/lint/analyzers/commit_subject_prefix.rb +3 -3
  17. data/lib/git/lint/analyzers/commit_subject_suffix.rb +2 -2
  18. data/lib/git/lint/analyzers/commit_subject_word_repeat.rb +20 -0
  19. data/lib/git/lint/analyzers/commit_trailer_collaborator_capitalization.rb +2 -2
  20. data/lib/git/lint/analyzers/commit_trailer_collaborator_email.rb +3 -4
  21. data/lib/git/lint/analyzers/commit_trailer_collaborator_key.rb +4 -6
  22. data/lib/git/lint/analyzers/commit_trailer_collaborator_name.rb +2 -2
  23. data/lib/git/lint/analyzers/commit_trailer_format_key.rb +4 -6
  24. data/lib/git/lint/analyzers/commit_trailer_format_value.rb +4 -4
  25. data/lib/git/lint/analyzers/commit_trailer_issue_key.rb +4 -6
  26. data/lib/git/lint/analyzers/commit_trailer_issue_value.rb +4 -4
  27. data/lib/git/lint/analyzers/commit_trailer_milestone_key.rb +33 -0
  28. data/lib/git/lint/analyzers/commit_trailer_milestone_value.rb +35 -0
  29. data/lib/git/lint/analyzers/commit_trailer_order.rb +38 -0
  30. data/lib/git/lint/analyzers/commit_trailer_reviewer_key.rb +33 -0
  31. data/lib/git/lint/analyzers/commit_trailer_reviewer_value.rb +35 -0
  32. data/lib/git/lint/analyzers/commit_trailer_signer_capitalization.rb +2 -2
  33. data/lib/git/lint/analyzers/commit_trailer_signer_email.rb +3 -4
  34. data/lib/git/lint/analyzers/commit_trailer_signer_key.rb +4 -4
  35. data/lib/git/lint/analyzers/commit_trailer_signer_name.rb +2 -2
  36. data/lib/git/lint/analyzers/commit_trailer_tracker_key.rb +4 -6
  37. data/lib/git/lint/analyzers/commit_trailer_tracker_value.rb +4 -4
  38. data/lib/git/lint/commits/{systems → hosts}/circle_ci.rb +2 -2
  39. data/lib/git/lint/commits/{systems → hosts}/container.rb +2 -2
  40. data/lib/git/lint/commits/{systems → hosts}/git_hub_action.rb +2 -2
  41. data/lib/git/lint/commits/{systems → hosts}/import.rb +1 -1
  42. data/lib/git/lint/commits/{systems → hosts}/local.rb +2 -2
  43. data/lib/git/lint/commits/{systems → hosts}/netlify_ci.rb +2 -2
  44. data/lib/git/lint/commits/loader.rb +6 -6
  45. data/lib/git/lint/configuration/contract.rb +19 -11
  46. data/lib/git/lint/configuration/defaults.yml +43 -22
  47. data/lib/git/lint/configuration/model.rb +19 -11
  48. data/lib/git/lint/configuration/trailer.rb +10 -0
  49. data/lib/git/lint/container.rb +28 -6
  50. data/lib/git/lint/errors/severity.rb +6 -1
  51. data/lib/git/lint/kit/filter_list.rb +9 -4
  52. data/lib/git/lint/reporters/branch.rb +5 -5
  53. data/lib/git/lint/validators/name.rb +2 -2
  54. data/lib/git/lint/validators/repeated_word.rb +36 -0
  55. data/lib/git/lint.rb +3 -1
  56. data.tar.gz.sig +0 -0
  57. metadata +40 -32
  58. metadata.gz.sig +0 -0
  59. data/lib/git/lint/analyzers/commit_body_bullet.rb +0 -34
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Git
4
+ module Lint
5
+ module Analyzers
6
+ # Analyzes commit trailer reviewer value.
7
+ class CommitTrailerReviewerValue < Abstract
8
+ include Import[setting: "trailers.reviewer"]
9
+
10
+ def valid? = affected_commit_trailers.empty?
11
+
12
+ def issue
13
+ return {} if valid?
14
+
15
+ {
16
+ hint: "Use: #{filter_list.to_usage "or"}.",
17
+ lines: affected_commit_trailers
18
+ }
19
+ end
20
+
21
+ protected
22
+
23
+ def load_filter_list
24
+ Kit::FilterList.new configuration.commits_trailer_reviewer_value_includes
25
+ end
26
+
27
+ def invalid_line? trailer
28
+ trailer.key.match?(setting.pattern) && !trailer.value.match?(value_pattern)
29
+ end
30
+
31
+ def value_pattern = /\A#{Regexp.union filter_list}\Z/
32
+ end
33
+ end
34
+ end
35
+ end
@@ -6,7 +6,7 @@ module Git
6
6
  # Analyzes commit trailer signer name capitalization.
7
7
  class CommitTrailerSignerCapitalization < Abstract
8
8
  include Import[
9
- pattern: "trailers.signer",
9
+ setting: "trailers.signer",
10
10
  parser: "parsers.person",
11
11
  validator: "validators.capitalization"
12
12
  ]
@@ -26,7 +26,7 @@ module Git
26
26
 
27
27
  def invalid_line? trailer
28
28
  parser.call(trailer.value).then do |person|
29
- trailer.key.match?(pattern) && !validator.call(person.name)
29
+ trailer.key.match?(setting.pattern) && !validator.call(person.name)
30
30
  end
31
31
  end
32
32
  end
@@ -6,9 +6,8 @@ module Git
6
6
  # Analyzes commit trailer signer email address format.
7
7
  class CommitTrailerSignerEmail < Abstract
8
8
  include Import[
9
- pattern: "trailers.signer",
9
+ setting: "trailers.signer",
10
10
  parser: "parsers.person",
11
- sanitizer: "sanitizers.email",
12
11
  validator: "validators.email"
13
12
  ]
14
13
 
@@ -26,8 +25,8 @@ module Git
26
25
  protected
27
26
 
28
27
  def invalid_line? trailer
29
- email = sanitizer.call parser.call(trailer.value).email
30
- trailer.key.match?(pattern) && !validator.call(email)
28
+ email = parser.call(trailer.value).email
29
+ trailer.key.match?(setting.pattern) && !validator.call(email)
31
30
  end
32
31
 
33
32
  private
@@ -5,7 +5,7 @@ module Git
5
5
  module Analyzers
6
6
  # Analyzes commit trailer signer key usage.
7
7
  class CommitTrailerSignerKey < Abstract
8
- include Import[pattern: "trailers.signer"]
8
+ include Import[setting: "trailers.signer"]
9
9
 
10
10
  def valid? = affected_commit_trailers.empty?
11
11
 
@@ -13,7 +13,7 @@ module Git
13
13
  return {} if valid?
14
14
 
15
15
  {
16
- hint: "Use format: #{filter_list.to_hint}.",
16
+ hint: "Use format: #{filter_list.to_usage}.",
17
17
  lines: affected_commit_trailers
18
18
  }
19
19
  end
@@ -21,12 +21,12 @@ module Git
21
21
  protected
22
22
 
23
23
  def load_filter_list
24
- Kit::FilterList.new configuration.commits_trailer_signer_key_includes
24
+ Kit::FilterList.new setting.name
25
25
  end
26
26
 
27
27
  def invalid_line? trailer
28
28
  trailer.key.then do |key|
29
- key.match?(pattern) && !key.match?(/\A#{Regexp.union filter_list.to_regexp}\Z/)
29
+ key.match?(setting.pattern) && !key.match?(/\A#{Regexp.union filter_list}\Z/)
30
30
  end
31
31
  end
32
32
  end
@@ -6,7 +6,7 @@ module Git
6
6
  # Analyzes commit trailer signer name construction.
7
7
  class CommitTrailerSignerName < Abstract
8
8
  include Import[
9
- pattern: "trailers.signer",
9
+ setting: "trailers.signer",
10
10
  parser: "parsers.person",
11
11
  validator: "validators.name"
12
12
  ]
@@ -26,7 +26,7 @@ module Git
26
26
 
27
27
  def invalid_line? trailer
28
28
  parser.call(trailer.value).then do |person|
29
- trailer.key.match?(pattern) && !validator.call(person.name, minimum:)
29
+ trailer.key.match?(setting.pattern) && !validator.call(person.name, minimum:)
30
30
  end
31
31
  end
32
32
 
@@ -5,7 +5,7 @@ module Git
5
5
  module Analyzers
6
6
  # Analyzes commit trailer tracker key usage.
7
7
  class CommitTrailerTrackerKey < Abstract
8
- include Import[pattern: "trailers.tracker"]
8
+ include Import[setting: "trailers.tracker"]
9
9
 
10
10
  def valid? = affected_commit_trailers.empty?
11
11
 
@@ -13,20 +13,18 @@ module Git
13
13
  return {} if valid?
14
14
 
15
15
  {
16
- hint: "Use format: #{filter_list.to_hint}.",
16
+ hint: "Use format: #{filter_list.to_usage}.",
17
17
  lines: affected_commit_trailers
18
18
  }
19
19
  end
20
20
 
21
21
  protected
22
22
 
23
- def load_filter_list
24
- Kit::FilterList.new configuration.commits_trailer_tracker_key_includes
25
- end
23
+ def load_filter_list = Kit::FilterList.new setting.name
26
24
 
27
25
  def invalid_line? trailer
28
26
  trailer.key.then do |key|
29
- key.match?(pattern) && !key.match?(/\A#{Regexp.union filter_list.to_regexp}\Z/)
27
+ key.match?(setting.pattern) && !key.match?(/\A#{Regexp.union filter_list}\Z/)
30
28
  end
31
29
  end
32
30
  end
@@ -5,7 +5,7 @@ module Git
5
5
  module Analyzers
6
6
  # Analyzes commit trailer tracker value.
7
7
  class CommitTrailerTrackerValue < Abstract
8
- include Import[pattern: "trailers.tracker"]
8
+ include Import[setting: "trailers.tracker"]
9
9
 
10
10
  def valid? = affected_commit_trailers.empty?
11
11
 
@@ -13,7 +13,7 @@ module Git
13
13
  return {} if valid?
14
14
 
15
15
  {
16
- hint: "Use format: #{filter_list.to_hint}.",
16
+ hint: "Use format: #{filter_list.to_usage}.",
17
17
  lines: affected_commit_trailers
18
18
  }
19
19
  end
@@ -25,10 +25,10 @@ module Git
25
25
  end
26
26
 
27
27
  def invalid_line? trailer
28
- trailer.key.match?(pattern) && !trailer.value.match?(value_pattern)
28
+ trailer.key.match?(setting.pattern) && !trailer.value.match?(value_pattern)
29
29
  end
30
30
 
31
- def value_pattern = /\A#{Regexp.union filter_list.to_regexp}\Z/
31
+ def value_pattern = /\A#{Regexp.union filter_list}\Z/
32
32
  end
33
33
  end
34
34
  end
@@ -3,8 +3,8 @@
3
3
  module Git
4
4
  module Lint
5
5
  module Commits
6
- module Systems
7
- # Provides Circle CI build environment feature branch information.
6
+ module Hosts
7
+ # Provides Circle CI feature branch information.
8
8
  class CircleCI
9
9
  include Git::Lint::Import[:git]
10
10
 
@@ -5,8 +5,8 @@ require "dry/container"
5
5
  module Git
6
6
  module Lint
7
7
  module Commits
8
- module Systems
9
- # Provides a single container with application and system specific dependencies.
8
+ module Hosts
9
+ # Provides a single container with application and host specific dependencies.
10
10
  module Container
11
11
  extend Dry::Container::Mixin
12
12
 
@@ -3,8 +3,8 @@
3
3
  module Git
4
4
  module Lint
5
5
  module Commits
6
- module Systems
7
- # Provides GitHub Action build environment feature branch information.
6
+ module Hosts
7
+ # Provides GitHub Action feature branch information.
8
8
  class GitHubAction
9
9
  include Git::Lint::Import[:git]
10
10
 
@@ -5,7 +5,7 @@ require "infusible"
5
5
  module Git
6
6
  module Lint
7
7
  module Commits
8
- module Systems
8
+ module Hosts
9
9
  Import = Infusible.with Container
10
10
  end
11
11
  end
@@ -3,8 +3,8 @@
3
3
  module Git
4
4
  module Lint
5
5
  module Commits
6
- module Systems
7
- # Provides local build environment feature branch information.
6
+ module Hosts
7
+ # Provides local feature branch information.
8
8
  class Local
9
9
  include Git::Lint::Import[:git]
10
10
 
@@ -3,8 +3,8 @@
3
3
  module Git
4
4
  module Lint
5
5
  module Commits
6
- module Systems
7
- # Provides Netlify CI build environment feature branch information.
6
+ module Hosts
7
+ # Provides Netlify CI feature branch information.
8
8
  class NetlifyCI
9
9
  include Git::Lint::Import[:git, :environment]
10
10
 
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "refinements/strings"
3
+ require "refinements/string"
4
4
 
5
5
  module Git
6
6
  module Lint
7
7
  module Commits
8
- # Automatically detects and loads system.
8
+ # Automatically detects and loads host.
9
9
  class Loader
10
- include Systems::Import[
10
+ include Hosts::Import[
11
11
  :circle_ci,
12
12
  :git,
13
13
  :git_hub_action,
@@ -16,18 +16,18 @@ module Git
16
16
  :environment
17
17
  ]
18
18
 
19
- using ::Refinements::Strings
19
+ using Refinements::String
20
20
 
21
21
  def call
22
22
  message = "Invalid repository. Are you within a Git repository?"
23
23
  fail Errors::Base, message unless git.exist?
24
24
 
25
- load_system.call
25
+ host.call
26
26
  end
27
27
 
28
28
  private
29
29
 
30
- def load_system
30
+ def host
31
31
  if key? "CIRCLECI" then circle_ci
32
32
  elsif key? "GITHUB_ACTIONS" then git_hub_action
33
33
  elsif key? "NETLIFY" then netlify_ci
@@ -16,15 +16,15 @@ module Git
16
16
  required(:commits_author_name_enabled).filled :bool
17
17
  required(:commits_author_name_severity).filled :string
18
18
  required(:commits_author_name_minimum).filled :integer
19
- required(:commits_body_bullet_enabled).filled :bool
20
- required(:commits_body_bullet_severity).filled :string
21
- required(:commits_body_bullet_excludes).array :string
22
19
  required(:commits_body_bullet_capitalization_enabled).filled :bool
23
20
  required(:commits_body_bullet_capitalization_severity).filled :string
24
21
  required(:commits_body_bullet_capitalization_includes).array :string
25
22
  required(:commits_body_bullet_delimiter_enabled).filled :bool
26
23
  required(:commits_body_bullet_delimiter_severity).filled :string
27
24
  required(:commits_body_bullet_delimiter_includes).array :string
25
+ required(:commits_body_bullet_only_enabled).filled :bool
26
+ required(:commits_body_bullet_only_severity).filled :string
27
+ required(:commits_body_bullet_only_includes).array :string
28
28
  required(:commits_body_leading_line_enabled).filled :bool
29
29
  required(:commits_body_leading_line_severity).filled :string
30
30
  required(:commits_body_line_length_enabled).filled :bool
@@ -38,9 +38,8 @@ module Git
38
38
  required(:commits_body_presence_enabled).filled :bool
39
39
  required(:commits_body_presence_severity).filled :string
40
40
  required(:commits_body_presence_minimum).filled :integer
41
- required(:commits_body_single_bullet_enabled).filled :bool
42
- required(:commits_body_single_bullet_severity).filled :string
43
- required(:commits_body_single_bullet_includes).array :string
41
+ required(:commits_body_word_repeat_enabled).filled :bool
42
+ required(:commits_body_word_repeat_severity).filled :string
44
43
  required(:commits_body_tracker_shorthand_enabled).filled :bool
45
44
  required(:commits_body_tracker_shorthand_severity).filled :string
46
45
  required(:commits_body_tracker_shorthand_excludes).array :string
@@ -57,13 +56,14 @@ module Git
57
56
  required(:commits_subject_suffix_enabled).filled :bool
58
57
  required(:commits_subject_suffix_severity).filled :string
59
58
  required(:commits_subject_suffix_excludes).array :string
59
+ required(:commits_subject_word_repeat_enabled).filled :bool
60
+ required(:commits_subject_word_repeat_severity).filled :string
60
61
  required(:commits_trailer_collaborator_capitalization_enabled).filled :bool
61
62
  required(:commits_trailer_collaborator_capitalization_severity).filled :string
62
63
  required(:commits_trailer_collaborator_email_enabled).filled :bool
63
64
  required(:commits_trailer_collaborator_email_severity).filled :string
64
65
  required(:commits_trailer_collaborator_key_enabled).filled :bool
65
66
  required(:commits_trailer_collaborator_key_severity).filled :string
66
- required(:commits_trailer_collaborator_key_includes).array :string
67
67
  required(:commits_trailer_collaborator_name_enabled).filled :bool
68
68
  required(:commits_trailer_collaborator_name_severity).filled :string
69
69
  required(:commits_trailer_collaborator_name_minimum).filled :integer
@@ -71,29 +71,37 @@ module Git
71
71
  required(:commits_trailer_duplicate_severity).filled :string
72
72
  required(:commits_trailer_format_key_enabled).filled :bool
73
73
  required(:commits_trailer_format_key_severity).filled :string
74
- required(:commits_trailer_format_key_includes).array :string
75
74
  required(:commits_trailer_format_value_enabled).filled :bool
76
75
  required(:commits_trailer_format_value_severity).filled :string
77
76
  required(:commits_trailer_format_value_includes).array :string
78
77
  required(:commits_trailer_issue_key_enabled).filled :bool
79
78
  required(:commits_trailer_issue_key_severity).filled :string
80
- required(:commits_trailer_issue_key_includes).array :string
81
79
  required(:commits_trailer_issue_value_enabled).filled :bool
82
80
  required(:commits_trailer_issue_value_severity).filled :string
83
81
  required(:commits_trailer_issue_value_includes).array :string
82
+ required(:commits_trailer_milestone_key_enabled).filled :bool
83
+ required(:commits_trailer_milestone_key_severity).filled :string
84
+ required(:commits_trailer_milestone_value_enabled).filled :bool
85
+ required(:commits_trailer_milestone_value_severity).filled :string
86
+ required(:commits_trailer_milestone_value_includes).array :string
87
+ required(:commits_trailer_order_enabled).filled :bool
88
+ required(:commits_trailer_order_severity).filled :string
89
+ required(:commits_trailer_reviewer_key_enabled).filled :bool
90
+ required(:commits_trailer_reviewer_key_severity).filled :string
91
+ required(:commits_trailer_reviewer_value_enabled).filled :bool
92
+ required(:commits_trailer_reviewer_value_severity).filled :string
93
+ required(:commits_trailer_reviewer_value_includes).array :string
84
94
  required(:commits_trailer_signer_capitalization_enabled).filled :bool
85
95
  required(:commits_trailer_signer_capitalization_severity).filled :string
86
96
  required(:commits_trailer_signer_email_enabled).filled :bool
87
97
  required(:commits_trailer_signer_email_severity).filled :string
88
98
  required(:commits_trailer_signer_key_enabled).filled :bool
89
99
  required(:commits_trailer_signer_key_severity).filled :string
90
- required(:commits_trailer_signer_key_includes).array :string
91
100
  required(:commits_trailer_signer_name_enabled).filled :bool
92
101
  required(:commits_trailer_signer_name_severity).filled :string
93
102
  required(:commits_trailer_signer_name_minimum).filled :integer
94
103
  required(:commits_trailer_tracker_key_enabled).filled :bool
95
104
  required(:commits_trailer_tracker_key_severity).filled :string
96
- required(:commits_trailer_tracker_key_includes).array :string
97
105
  required(:commits_trailer_tracker_value_enabled).filled :bool
98
106
  required(:commits_trailer_tracker_value_severity).filled :string
99
107
  required(:commits_trailer_tracker_value_includes).array :string
@@ -11,22 +11,24 @@ commits:
11
11
  severity: error
12
12
  minimum: 2
13
13
  body:
14
- bullet:
14
+ bullet_capitalization:
15
15
  enabled: true
16
16
  severity: error
17
- excludes:
17
+ includes:
18
+ - "\\-"
18
19
  - "\\*"
19
- - "•"
20
- bullet_capitalization:
20
+ bullet_delimiter:
21
21
  enabled: true
22
22
  severity: error
23
23
  includes:
24
24
  - "\\-"
25
- bullet_delimiter:
25
+ - "\\*"
26
+ bullet_only:
26
27
  enabled: true
27
28
  severity: error
28
29
  includes:
29
30
  - "\\-"
31
+ - "\\*"
30
32
  leading_line:
31
33
  enabled: true
32
34
  severity: warn
@@ -47,6 +49,7 @@ commits:
47
49
  - "along the lines"
48
50
  - "at this moment in time"
49
51
  - "basically"
52
+ - "blacklist"
50
53
  - "each and every one"
51
54
  - "everyone knows"
52
55
  - "fact of the matter"
@@ -61,6 +64,7 @@ commits:
61
64
  - "really"
62
65
  - "simply"
63
66
  - "things being equal"
67
+ - "whitelist"
64
68
  - "would like to"
65
69
  - "\\beasy\\b"
66
70
  - "\\bjust\\b"
@@ -71,11 +75,6 @@ commits:
71
75
  enabled: true
72
76
  severity: warn
73
77
  minimum: 1
74
- single_bullet:
75
- enabled: true
76
- severity: error
77
- includes:
78
- - "\\-"
79
78
  tracker_shorthand:
80
79
  enabled: true
81
80
  severity: error
@@ -83,6 +82,9 @@ commits:
83
82
  - "(f|F)ix(es|ed)?\\s\\#\\d+"
84
83
  - "(c|C)lose(s|d)?\\s\\#\\d+"
85
84
  - "(r|R)esolve(s|d)?\\s\\#\\d+"
85
+ word_repeat:
86
+ enabled: true
87
+ severity: error
86
88
  signature:
87
89
  enabled: false
88
90
  severity: error
@@ -110,6 +112,9 @@ commits:
110
112
  - "\\."
111
113
  - "\\?"
112
114
  - "\\!"
115
+ word_repeat:
116
+ enabled: true
117
+ severity: error
113
118
  trailer:
114
119
  collaborator_capitalization:
115
120
  enabled: true
@@ -120,8 +125,6 @@ commits:
120
125
  collaborator_key:
121
126
  enabled: true
122
127
  severity: error
123
- includes:
124
- - Co-Authored-By
125
128
  collaborator_name:
126
129
  enabled: true
127
130
  severity: error
@@ -132,24 +135,46 @@ commits:
132
135
  format_key:
133
136
  enabled: true
134
137
  severity: error
135
- includes:
136
- - Format
137
138
  format_value:
138
139
  enabled: true
139
140
  severity: error
140
141
  includes:
141
- - ASCII
142
- - Markdown
142
+ - asciidoc
143
+ - markdown
143
144
  issue_key:
144
145
  enabled: true
145
146
  severity: error
146
- includes:
147
- - Issue
148
147
  issue_value:
149
148
  enabled: true
150
149
  severity: error
151
150
  includes:
152
151
  - "[\\w-]+"
152
+ milestone_key:
153
+ enabled: true
154
+ severity: error
155
+ milestone_value:
156
+ enabled: true
157
+ severity: error
158
+ includes:
159
+ - major
160
+ - minor
161
+ - patch
162
+ order:
163
+ enabled: true
164
+ severity: error
165
+ reviewer_key:
166
+ enabled: true
167
+ severity: error
168
+ reviewer_value:
169
+ enabled: true
170
+ severity: error
171
+ includes:
172
+ - clickup
173
+ - github
174
+ - jira
175
+ - linear
176
+ - shortcut
177
+ - tana
153
178
  signer_capitalization:
154
179
  enabled: true
155
180
  severity: error
@@ -159,8 +184,6 @@ commits:
159
184
  signer_key:
160
185
  enabled: true
161
186
  severity: error
162
- includes:
163
- - Signed-By
164
187
  signer_name:
165
188
  enabled: true
166
189
  severity: error
@@ -168,8 +191,6 @@ commits:
168
191
  tracker_key:
169
192
  enabled: true
170
193
  severity: error
171
- includes:
172
- - Tracker
173
194
  tracker_value:
174
195
  enabled: true
175
196
  severity: error
@@ -11,15 +11,15 @@ module Git
11
11
  :commits_author_name_enabled,
12
12
  :commits_author_name_severity,
13
13
  :commits_author_name_minimum,
14
- :commits_body_bullet_enabled,
15
- :commits_body_bullet_severity,
16
- :commits_body_bullet_excludes,
17
14
  :commits_body_bullet_capitalization_enabled,
18
15
  :commits_body_bullet_capitalization_severity,
19
16
  :commits_body_bullet_capitalization_includes,
20
17
  :commits_body_bullet_delimiter_enabled,
21
18
  :commits_body_bullet_delimiter_severity,
22
19
  :commits_body_bullet_delimiter_includes,
20
+ :commits_body_bullet_only_enabled,
21
+ :commits_body_bullet_only_severity,
22
+ :commits_body_bullet_only_includes,
23
23
  :commits_body_leading_line_enabled,
24
24
  :commits_body_leading_line_severity,
25
25
  :commits_body_line_length_enabled,
@@ -33,9 +33,8 @@ module Git
33
33
  :commits_body_presence_enabled,
34
34
  :commits_body_presence_severity,
35
35
  :commits_body_presence_minimum,
36
- :commits_body_single_bullet_enabled,
37
- :commits_body_single_bullet_severity,
38
- :commits_body_single_bullet_includes,
36
+ :commits_body_word_repeat_enabled,
37
+ :commits_body_word_repeat_severity,
39
38
  :commits_body_tracker_shorthand_enabled,
40
39
  :commits_body_tracker_shorthand_severity,
41
40
  :commits_body_tracker_shorthand_excludes,
@@ -52,13 +51,14 @@ module Git
52
51
  :commits_subject_suffix_enabled,
53
52
  :commits_subject_suffix_severity,
54
53
  :commits_subject_suffix_excludes,
54
+ :commits_subject_word_repeat_enabled,
55
+ :commits_subject_word_repeat_severity,
55
56
  :commits_trailer_collaborator_capitalization_enabled,
56
57
  :commits_trailer_collaborator_capitalization_severity,
57
58
  :commits_trailer_collaborator_email_enabled,
58
59
  :commits_trailer_collaborator_email_severity,
59
60
  :commits_trailer_collaborator_key_enabled,
60
61
  :commits_trailer_collaborator_key_severity,
61
- :commits_trailer_collaborator_key_includes,
62
62
  :commits_trailer_collaborator_name_enabled,
63
63
  :commits_trailer_collaborator_name_severity,
64
64
  :commits_trailer_collaborator_name_minimum,
@@ -66,29 +66,37 @@ module Git
66
66
  :commits_trailer_duplicate_severity,
67
67
  :commits_trailer_format_key_enabled,
68
68
  :commits_trailer_format_key_severity,
69
- :commits_trailer_format_key_includes,
70
69
  :commits_trailer_format_value_enabled,
71
70
  :commits_trailer_format_value_severity,
72
71
  :commits_trailer_format_value_includes,
73
72
  :commits_trailer_issue_key_enabled,
74
73
  :commits_trailer_issue_key_severity,
75
- :commits_trailer_issue_key_includes,
76
74
  :commits_trailer_issue_value_enabled,
77
75
  :commits_trailer_issue_value_severity,
78
76
  :commits_trailer_issue_value_includes,
77
+ :commits_trailer_milestone_key_enabled,
78
+ :commits_trailer_milestone_key_severity,
79
+ :commits_trailer_milestone_value_enabled,
80
+ :commits_trailer_milestone_value_severity,
81
+ :commits_trailer_milestone_value_includes,
82
+ :commits_trailer_order_enabled,
83
+ :commits_trailer_order_severity,
84
+ :commits_trailer_reviewer_key_enabled,
85
+ :commits_trailer_reviewer_key_severity,
86
+ :commits_trailer_reviewer_value_enabled,
87
+ :commits_trailer_reviewer_value_severity,
88
+ :commits_trailer_reviewer_value_includes,
79
89
  :commits_trailer_signer_capitalization_enabled,
80
90
  :commits_trailer_signer_capitalization_severity,
81
91
  :commits_trailer_signer_email_enabled,
82
92
  :commits_trailer_signer_email_severity,
83
93
  :commits_trailer_signer_key_enabled,
84
94
  :commits_trailer_signer_key_severity,
85
- :commits_trailer_signer_key_includes,
86
95
  :commits_trailer_signer_name_enabled,
87
96
  :commits_trailer_signer_name_severity,
88
97
  :commits_trailer_signer_name_minimum,
89
98
  :commits_trailer_tracker_key_enabled,
90
99
  :commits_trailer_tracker_key_severity,
91
- :commits_trailer_tracker_key_includes,
92
100
  :commits_trailer_tracker_value_enabled,
93
101
  :commits_trailer_tracker_value_severity,
94
102
  :commits_trailer_tracker_value_includes
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Git
4
+ module Lint
5
+ module Configuration
6
+ # Defines trailer configuration as a subset of the primary configuration.
7
+ Trailer = Data.define :name, :pattern
8
+ end
9
+ end
10
+ end