git-lint 6.2.1 → 7.0.0

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.
Files changed (58) 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.tar.gz.sig +0 -0
  56. metadata +40 -35
  57. metadata.gz.sig +0 -0
  58. 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