git-lint 2.4.0 → 3.1.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/LICENSE.adoc +207 -155
- data/README.adoc +201 -221
- data/exe/git-lint +6 -0
- data/git-lint.gemspec +38 -0
- data/lib/git/lint/analyzer.rb +76 -0
- data/lib/git/lint/analyzers/abstract.rb +8 -18
- data/lib/git/lint/analyzers/commit_author_capitalization.rb +3 -9
- data/lib/git/lint/analyzers/commit_author_email.rb +3 -9
- data/lib/git/lint/analyzers/commit_author_name.rb +5 -14
- data/lib/git/lint/analyzers/commit_body_bullet.rb +2 -9
- data/lib/git/lint/analyzers/commit_body_bullet_capitalization.rb +2 -9
- data/lib/git/lint/analyzers/commit_body_bullet_delimiter.rb +2 -9
- data/lib/git/lint/analyzers/commit_body_leading_line.rb +1 -7
- data/lib/git/lint/analyzers/commit_body_line_length.rb +4 -11
- data/lib/git/lint/analyzers/commit_body_paragraph_capitalization.rb +1 -7
- data/lib/git/lint/analyzers/commit_body_phrase.rb +2 -38
- data/lib/git/lint/analyzers/commit_body_presence.rb +4 -11
- data/lib/git/lint/analyzers/commit_body_single_bullet.rb +2 -9
- data/lib/git/lint/analyzers/commit_body_tracker_shorthand.rb +27 -0
- data/lib/git/lint/analyzers/commit_subject_length.rb +4 -11
- data/lib/git/lint/analyzers/commit_subject_prefix.rb +2 -9
- data/lib/git/lint/analyzers/commit_subject_suffix.rb +2 -13
- data/lib/git/lint/analyzers/commit_trailer_collaborator_capitalization.rb +3 -12
- data/lib/git/lint/analyzers/commit_trailer_collaborator_duplication.rb +3 -11
- data/lib/git/lint/analyzers/commit_trailer_collaborator_email.rb +3 -12
- data/lib/git/lint/analyzers/commit_trailer_collaborator_key.rb +4 -13
- data/lib/git/lint/analyzers/commit_trailer_collaborator_name.rb +5 -15
- data/lib/git/lint/cli/actions/analyze/branch.rb +43 -0
- data/lib/git/lint/cli/actions/analyze/commit.rb +44 -0
- data/lib/git/lint/cli/actions/config.rb +37 -0
- data/lib/git/lint/cli/actions/hook.rb +34 -0
- data/lib/git/lint/cli/parser.rb +33 -0
- data/lib/git/lint/cli/parsers/analyze.rb +40 -0
- data/lib/git/lint/cli/parsers/core.rb +77 -0
- data/lib/git/lint/cli/shell.rb +58 -0
- data/lib/git/lint/collector.rb +3 -4
- data/lib/git/lint/commits/container.rb +19 -0
- data/lib/git/lint/commits/loader.rb +51 -0
- data/lib/git/lint/commits/systems/circle_ci.rb +26 -0
- data/lib/git/lint/{branches/environments → commits/systems}/git_hub_action.rb +10 -8
- data/lib/git/lint/commits/systems/local.rb +26 -0
- data/lib/git/lint/{branches/environments → commits/systems}/netlify_ci.rb +14 -10
- data/lib/git/lint/configuration/content.rb +26 -0
- data/lib/git/lint/configuration/defaults.yml +118 -0
- data/lib/git/lint/configuration/loader.rb +50 -0
- data/lib/git/lint/configuration/setting.rb +24 -0
- data/lib/git/lint/container.rb +44 -0
- data/lib/git/lint/errors/base.rb +1 -1
- data/lib/git/lint/errors/severity.rb +1 -0
- data/lib/git/lint/errors/sha.rb +1 -0
- data/lib/git/lint/kit/filter_list.rb +1 -1
- data/lib/git/lint/parsers/trailers/collaborator.rb +1 -0
- data/lib/git/lint/rake/tasks.rb +5 -4
- data/lib/git/lint/reporters/branch.rb +13 -7
- data/lib/git/lint/reporters/commit.rb +3 -1
- data/lib/git/lint/reporters/line.rb +3 -5
- data/lib/git/lint/reporters/lines/paragraph.rb +3 -0
- data/lib/git/lint/reporters/lines/sentence.rb +3 -0
- data/lib/git/lint/reporters/style.rb +3 -1
- data/lib/git/lint/validators/capitalization.rb +1 -0
- data/lib/git/lint/validators/email.rb +1 -0
- data/lib/git/lint/validators/name.rb +1 -0
- data/lib/git/lint.rb +18 -47
- data.tar.gz.sig +0 -0
- metadata +57 -30
- metadata.gz.sig +0 -0
- data/bin/git-lint +0 -9
- data/lib/git/lint/analyzers/commit_body_issue_tracker_link.rb +0 -39
- data/lib/git/lint/branches/environments/circle_ci.rb +0 -24
- data/lib/git/lint/branches/environments/local.rb +0 -24
- data/lib/git/lint/branches/environments/travis_ci.rb +0 -49
- data/lib/git/lint/branches/feature.rb +0 -42
- data/lib/git/lint/cli.rb +0 -117
- data/lib/git/lint/identity.rb +0 -13
- data/lib/git/lint/refinements/strings.rb +0 -21
- data/lib/git/lint/runner.rb +0 -35
metadata
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: git-lint
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brooke Kuhlmann
|
|
8
8
|
autorequire:
|
|
9
|
-
bindir:
|
|
9
|
+
bindir: exe
|
|
10
10
|
cert_chain:
|
|
11
11
|
- |
|
|
12
12
|
-----BEGIN CERTIFICATE-----
|
|
@@ -28,78 +28,92 @@ cert_chain:
|
|
|
28
28
|
lkHilIrX69jq8wMPpBhlaw2mRmeSL50Wv5u6xVBvOHhXFSP1crXM95vfLhLyRYod
|
|
29
29
|
W2A=
|
|
30
30
|
-----END CERTIFICATE-----
|
|
31
|
-
date:
|
|
31
|
+
date: 2022-01-23 00:00:00.000000000 Z
|
|
32
32
|
dependencies:
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: dry-container
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: 0.9.0
|
|
40
|
+
type: :runtime
|
|
41
|
+
prerelease: false
|
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: 0.9.0
|
|
33
47
|
- !ruby/object:Gem::Dependency
|
|
34
48
|
name: git_plus
|
|
35
49
|
requirement: !ruby/object:Gem::Requirement
|
|
36
50
|
requirements:
|
|
37
51
|
- - "~>"
|
|
38
52
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '
|
|
53
|
+
version: '1.1'
|
|
40
54
|
type: :runtime
|
|
41
55
|
prerelease: false
|
|
42
56
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
57
|
requirements:
|
|
44
58
|
- - "~>"
|
|
45
59
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: '
|
|
60
|
+
version: '1.1'
|
|
47
61
|
- !ruby/object:Gem::Dependency
|
|
48
62
|
name: pastel
|
|
49
63
|
requirement: !ruby/object:Gem::Requirement
|
|
50
64
|
requirements:
|
|
51
65
|
- - "~>"
|
|
52
66
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '0.
|
|
67
|
+
version: '0.8'
|
|
54
68
|
type: :runtime
|
|
55
69
|
prerelease: false
|
|
56
70
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
71
|
requirements:
|
|
58
72
|
- - "~>"
|
|
59
73
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: '0.
|
|
74
|
+
version: '0.8'
|
|
61
75
|
- !ruby/object:Gem::Dependency
|
|
62
76
|
name: refinements
|
|
63
77
|
requirement: !ruby/object:Gem::Requirement
|
|
64
78
|
requirements:
|
|
65
79
|
- - "~>"
|
|
66
80
|
- !ruby/object:Gem::Version
|
|
67
|
-
version: '
|
|
81
|
+
version: '9.1'
|
|
68
82
|
type: :runtime
|
|
69
83
|
prerelease: false
|
|
70
84
|
version_requirements: !ruby/object:Gem::Requirement
|
|
71
85
|
requirements:
|
|
72
86
|
- - "~>"
|
|
73
87
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: '
|
|
88
|
+
version: '9.1'
|
|
75
89
|
- !ruby/object:Gem::Dependency
|
|
76
90
|
name: runcom
|
|
77
91
|
requirement: !ruby/object:Gem::Requirement
|
|
78
92
|
requirements:
|
|
79
93
|
- - "~>"
|
|
80
94
|
- !ruby/object:Gem::Version
|
|
81
|
-
version: '
|
|
95
|
+
version: '8.0'
|
|
82
96
|
type: :runtime
|
|
83
97
|
prerelease: false
|
|
84
98
|
version_requirements: !ruby/object:Gem::Requirement
|
|
85
99
|
requirements:
|
|
86
100
|
- - "~>"
|
|
87
101
|
- !ruby/object:Gem::Version
|
|
88
|
-
version: '
|
|
102
|
+
version: '8.0'
|
|
89
103
|
- !ruby/object:Gem::Dependency
|
|
90
|
-
name:
|
|
104
|
+
name: zeitwerk
|
|
91
105
|
requirement: !ruby/object:Gem::Requirement
|
|
92
106
|
requirements:
|
|
93
107
|
- - "~>"
|
|
94
108
|
- !ruby/object:Gem::Version
|
|
95
|
-
version: '
|
|
109
|
+
version: '2.5'
|
|
96
110
|
type: :runtime
|
|
97
111
|
prerelease: false
|
|
98
112
|
version_requirements: !ruby/object:Gem::Requirement
|
|
99
113
|
requirements:
|
|
100
114
|
- - "~>"
|
|
101
115
|
- !ruby/object:Gem::Version
|
|
102
|
-
version: '
|
|
116
|
+
version: '2.5'
|
|
103
117
|
description:
|
|
104
118
|
email:
|
|
105
119
|
- brooke@alchemists.io
|
|
@@ -112,8 +126,10 @@ extra_rdoc_files:
|
|
|
112
126
|
files:
|
|
113
127
|
- LICENSE.adoc
|
|
114
128
|
- README.adoc
|
|
115
|
-
-
|
|
129
|
+
- exe/git-lint
|
|
130
|
+
- git-lint.gemspec
|
|
116
131
|
- lib/git/lint.rb
|
|
132
|
+
- lib/git/lint/analyzer.rb
|
|
117
133
|
- lib/git/lint/analyzers/abstract.rb
|
|
118
134
|
- lib/git/lint/analyzers/commit_author_capitalization.rb
|
|
119
135
|
- lib/git/lint/analyzers/commit_author_email.rb
|
|
@@ -121,13 +137,13 @@ files:
|
|
|
121
137
|
- lib/git/lint/analyzers/commit_body_bullet.rb
|
|
122
138
|
- lib/git/lint/analyzers/commit_body_bullet_capitalization.rb
|
|
123
139
|
- lib/git/lint/analyzers/commit_body_bullet_delimiter.rb
|
|
124
|
-
- lib/git/lint/analyzers/commit_body_issue_tracker_link.rb
|
|
125
140
|
- lib/git/lint/analyzers/commit_body_leading_line.rb
|
|
126
141
|
- lib/git/lint/analyzers/commit_body_line_length.rb
|
|
127
142
|
- lib/git/lint/analyzers/commit_body_paragraph_capitalization.rb
|
|
128
143
|
- lib/git/lint/analyzers/commit_body_phrase.rb
|
|
129
144
|
- lib/git/lint/analyzers/commit_body_presence.rb
|
|
130
145
|
- lib/git/lint/analyzers/commit_body_single_bullet.rb
|
|
146
|
+
- lib/git/lint/analyzers/commit_body_tracker_shorthand.rb
|
|
131
147
|
- lib/git/lint/analyzers/commit_subject_length.rb
|
|
132
148
|
- lib/git/lint/analyzers/commit_subject_prefix.rb
|
|
133
149
|
- lib/git/lint/analyzers/commit_subject_suffix.rb
|
|
@@ -136,40 +152,51 @@ files:
|
|
|
136
152
|
- lib/git/lint/analyzers/commit_trailer_collaborator_email.rb
|
|
137
153
|
- lib/git/lint/analyzers/commit_trailer_collaborator_key.rb
|
|
138
154
|
- lib/git/lint/analyzers/commit_trailer_collaborator_name.rb
|
|
139
|
-
- lib/git/lint/
|
|
140
|
-
- lib/git/lint/
|
|
141
|
-
- lib/git/lint/
|
|
142
|
-
- lib/git/lint/
|
|
143
|
-
- lib/git/lint/
|
|
144
|
-
- lib/git/lint/
|
|
145
|
-
- lib/git/lint/cli.rb
|
|
155
|
+
- lib/git/lint/cli/actions/analyze/branch.rb
|
|
156
|
+
- lib/git/lint/cli/actions/analyze/commit.rb
|
|
157
|
+
- lib/git/lint/cli/actions/config.rb
|
|
158
|
+
- lib/git/lint/cli/actions/hook.rb
|
|
159
|
+
- lib/git/lint/cli/parser.rb
|
|
160
|
+
- lib/git/lint/cli/parsers/analyze.rb
|
|
161
|
+
- lib/git/lint/cli/parsers/core.rb
|
|
162
|
+
- lib/git/lint/cli/shell.rb
|
|
146
163
|
- lib/git/lint/collector.rb
|
|
164
|
+
- lib/git/lint/commits/container.rb
|
|
165
|
+
- lib/git/lint/commits/loader.rb
|
|
166
|
+
- lib/git/lint/commits/systems/circle_ci.rb
|
|
167
|
+
- lib/git/lint/commits/systems/git_hub_action.rb
|
|
168
|
+
- lib/git/lint/commits/systems/local.rb
|
|
169
|
+
- lib/git/lint/commits/systems/netlify_ci.rb
|
|
170
|
+
- lib/git/lint/configuration/content.rb
|
|
171
|
+
- lib/git/lint/configuration/defaults.yml
|
|
172
|
+
- lib/git/lint/configuration/loader.rb
|
|
173
|
+
- lib/git/lint/configuration/setting.rb
|
|
174
|
+
- lib/git/lint/container.rb
|
|
147
175
|
- lib/git/lint/errors/base.rb
|
|
148
176
|
- lib/git/lint/errors/severity.rb
|
|
149
177
|
- lib/git/lint/errors/sha.rb
|
|
150
|
-
- lib/git/lint/identity.rb
|
|
151
178
|
- lib/git/lint/kit/filter_list.rb
|
|
152
179
|
- lib/git/lint/parsers/trailers/collaborator.rb
|
|
153
180
|
- lib/git/lint/rake/setup.rb
|
|
154
181
|
- lib/git/lint/rake/tasks.rb
|
|
155
|
-
- lib/git/lint/refinements/strings.rb
|
|
156
182
|
- lib/git/lint/reporters/branch.rb
|
|
157
183
|
- lib/git/lint/reporters/commit.rb
|
|
158
184
|
- lib/git/lint/reporters/line.rb
|
|
159
185
|
- lib/git/lint/reporters/lines/paragraph.rb
|
|
160
186
|
- lib/git/lint/reporters/lines/sentence.rb
|
|
161
187
|
- lib/git/lint/reporters/style.rb
|
|
162
|
-
- lib/git/lint/runner.rb
|
|
163
188
|
- lib/git/lint/validators/capitalization.rb
|
|
164
189
|
- lib/git/lint/validators/email.rb
|
|
165
190
|
- lib/git/lint/validators/name.rb
|
|
166
191
|
homepage: https://www.alchemists.io/projects/git-lint
|
|
167
192
|
licenses:
|
|
168
|
-
-
|
|
193
|
+
- Hippocratic-3.0
|
|
169
194
|
metadata:
|
|
170
195
|
bug_tracker_uri: https://github.com/bkuhlmann/git-lint/issues
|
|
171
|
-
changelog_uri: https://www.alchemists.io/projects/git-lint/
|
|
196
|
+
changelog_uri: https://www.alchemists.io/projects/git-lint/versions
|
|
172
197
|
documentation_uri: https://www.alchemists.io/projects/git-lint
|
|
198
|
+
label: Git Lint
|
|
199
|
+
rubygems_mfa_required: 'true'
|
|
173
200
|
source_code_uri: https://github.com/bkuhlmann/git-lint
|
|
174
201
|
post_install_message:
|
|
175
202
|
rdoc_options: []
|
|
@@ -179,14 +206,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
179
206
|
requirements:
|
|
180
207
|
- - "~>"
|
|
181
208
|
- !ruby/object:Gem::Version
|
|
182
|
-
version: '3.
|
|
209
|
+
version: '3.1'
|
|
183
210
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
184
211
|
requirements:
|
|
185
212
|
- - ">="
|
|
186
213
|
- !ruby/object:Gem::Version
|
|
187
214
|
version: '0'
|
|
188
215
|
requirements: []
|
|
189
|
-
rubygems_version: 3.
|
|
216
|
+
rubygems_version: 3.3.5
|
|
190
217
|
signing_key:
|
|
191
218
|
specification_version: 4
|
|
192
219
|
summary: A command line interface for linting Git commits.
|
metadata.gz.sig
CHANGED
|
Binary file
|
data/bin/git-lint
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Git
|
|
4
|
-
module Lint
|
|
5
|
-
module Analyzers
|
|
6
|
-
class CommitBodyIssueTrackerLink < Abstract
|
|
7
|
-
def self.defaults
|
|
8
|
-
{
|
|
9
|
-
enabled: true,
|
|
10
|
-
severity: :error,
|
|
11
|
-
excludes: [
|
|
12
|
-
"(f|F)ix(es|ed)?\\s\\#\\d+",
|
|
13
|
-
"(c|C)lose(s|d)?\\s\\#\\d+",
|
|
14
|
-
"(r|R)esolve(s|d)?\\s\\#\\d+",
|
|
15
|
-
"github\\.com\\/.+\\/issues\\/\\d+"
|
|
16
|
-
]
|
|
17
|
-
}
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def valid? = commit.body_lines.none? { |line| invalid_line? line }
|
|
21
|
-
|
|
22
|
-
def issue
|
|
23
|
-
return {} if valid?
|
|
24
|
-
|
|
25
|
-
{
|
|
26
|
-
hint: "Explain issue instead of using link. Avoid: #{filter_list.to_hint}.",
|
|
27
|
-
lines: affected_commit_body_lines
|
|
28
|
-
}
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
protected
|
|
32
|
-
|
|
33
|
-
def load_filter_list = Kit::FilterList.new(settings.fetch(:excludes))
|
|
34
|
-
|
|
35
|
-
def invalid_line?(line) = line.match?(/.*#{Regexp.union filter_list.to_regexp}.*/)
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Git
|
|
4
|
-
module Lint
|
|
5
|
-
module Branches
|
|
6
|
-
module Environments
|
|
7
|
-
# Provides Circle CI build environment feature branch information.
|
|
8
|
-
class CircleCI
|
|
9
|
-
def initialize repository: GitPlus::Repository.new
|
|
10
|
-
@repository = repository
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def name = "origin/#{repository.branch_name}"
|
|
14
|
-
|
|
15
|
-
def commits = repository.commits("origin/#{repository.branch_default}..#{name}")
|
|
16
|
-
|
|
17
|
-
private
|
|
18
|
-
|
|
19
|
-
attr_reader :repository
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Git
|
|
4
|
-
module Lint
|
|
5
|
-
module Branches
|
|
6
|
-
module Environments
|
|
7
|
-
# Provides local build environment feature branch information.
|
|
8
|
-
class Local
|
|
9
|
-
def initialize repository: GitPlus::Repository.new
|
|
10
|
-
@repository = repository
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def name = repository.branch_name
|
|
14
|
-
|
|
15
|
-
def commits = repository.commits("#{repository.branch_default}..#{name}")
|
|
16
|
-
|
|
17
|
-
private
|
|
18
|
-
|
|
19
|
-
attr_reader :repository
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "open3"
|
|
4
|
-
|
|
5
|
-
module Git
|
|
6
|
-
module Lint
|
|
7
|
-
module Branches
|
|
8
|
-
module Environments
|
|
9
|
-
# Provides Travis CI build environment feature branch information.
|
|
10
|
-
class TravisCI
|
|
11
|
-
def initialize repository: GitPlus::Repository.new, shell: Open3, environment: ENV
|
|
12
|
-
@repository = repository
|
|
13
|
-
@shell = shell
|
|
14
|
-
@environment = environment
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def name = pull_request_branch.empty? ? ci_branch : pull_request_branch
|
|
18
|
-
|
|
19
|
-
def commits
|
|
20
|
-
prepare_project
|
|
21
|
-
repository.commits "origin/#{repository.branch_default}..#{name}"
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
private
|
|
25
|
-
|
|
26
|
-
attr_reader :environment, :repository, :shell
|
|
27
|
-
|
|
28
|
-
def prepare_project
|
|
29
|
-
slug = pull_request_slug
|
|
30
|
-
|
|
31
|
-
unless slug.empty?
|
|
32
|
-
shell.capture3 "git remote add -f original_branch https://github.com/#{slug}.git"
|
|
33
|
-
shell.capture3 "git fetch original_branch #{name}:#{name}"
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
shell.capture3 "git remote set-branches --add origin #{repository.branch_default}"
|
|
37
|
-
shell.capture3 "git fetch"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def ci_branch = environment["TRAVIS_BRANCH"]
|
|
41
|
-
|
|
42
|
-
def pull_request_branch = environment["TRAVIS_PULL_REQUEST_BRANCH"]
|
|
43
|
-
|
|
44
|
-
def pull_request_slug = environment["TRAVIS_PULL_REQUEST_SLUG"]
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "forwardable"
|
|
4
|
-
require "refinements/strings"
|
|
5
|
-
|
|
6
|
-
module Git
|
|
7
|
-
module Lint
|
|
8
|
-
module Branches
|
|
9
|
-
# Represents a feature branch.
|
|
10
|
-
class Feature
|
|
11
|
-
extend Forwardable
|
|
12
|
-
|
|
13
|
-
using ::Refinements::Strings
|
|
14
|
-
|
|
15
|
-
def_delegators :selected_environment, :name, :commits
|
|
16
|
-
|
|
17
|
-
def initialize environment: ENV, git_repo: GitPlus::Repository.new
|
|
18
|
-
message = "Invalid repository. Are you within a Git-enabled project?"
|
|
19
|
-
fail Errors::Base, message unless git_repo.exist?
|
|
20
|
-
|
|
21
|
-
@current_environment = environment
|
|
22
|
-
@selected_environment = load_environment
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
private
|
|
26
|
-
|
|
27
|
-
attr_reader :current_environment, :selected_environment
|
|
28
|
-
|
|
29
|
-
def load_environment
|
|
30
|
-
if key? "CIRCLECI" then Environments::CircleCI.new
|
|
31
|
-
elsif key? "GITHUB_ACTIONS" then Environments::GitHubAction.new
|
|
32
|
-
elsif key? "NETLIFY" then Environments::NetlifyCI.new environment: current_environment
|
|
33
|
-
elsif key? "TRAVIS" then Environments::TravisCI.new environment: current_environment
|
|
34
|
-
else Environments::Local.new
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def key?(key) = current_environment.fetch(key, "false").to_bool
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
data/lib/git/lint/cli.rb
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "thor"
|
|
4
|
-
require "thor/actions"
|
|
5
|
-
require "runcom"
|
|
6
|
-
require "pathname"
|
|
7
|
-
require "pastel"
|
|
8
|
-
|
|
9
|
-
module Git
|
|
10
|
-
module Lint
|
|
11
|
-
# The Command Line Interface (CLI) for the gem.
|
|
12
|
-
class CLI < Thor
|
|
13
|
-
include Thor::Actions
|
|
14
|
-
|
|
15
|
-
package_name Identity::VERSION_LABEL
|
|
16
|
-
|
|
17
|
-
def self.configuration
|
|
18
|
-
defaults = Analyzers::Abstract.descendants.reduce({}) do |settings, analyzer|
|
|
19
|
-
settings.merge analyzer.id => analyzer.defaults
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
Runcom::Config.new "#{Identity::NAME}/configuration.yml", defaults: defaults
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def initialize args = [], options = {}, config = {}
|
|
26
|
-
super args, options, config
|
|
27
|
-
@configuration = self.class.configuration
|
|
28
|
-
@runner = Runner.new configuration: @configuration.to_h
|
|
29
|
-
@colorizer = Pastel.new
|
|
30
|
-
rescue Runcom::Errors::Base => error
|
|
31
|
-
abort error.message
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
desc "-c, [--config]", "Manage gem configuration."
|
|
35
|
-
map %w[-c --config] => :config
|
|
36
|
-
method_option :edit,
|
|
37
|
-
aliases: "-e",
|
|
38
|
-
desc: "Edit gem configuration.",
|
|
39
|
-
type: :boolean,
|
|
40
|
-
default: false
|
|
41
|
-
method_option :info,
|
|
42
|
-
aliases: "-i",
|
|
43
|
-
desc: "Print gem configuration.",
|
|
44
|
-
type: :boolean,
|
|
45
|
-
default: false
|
|
46
|
-
def config
|
|
47
|
-
path = configuration.current
|
|
48
|
-
|
|
49
|
-
if options.edit? then `#{ENV["EDITOR"]} #{path}`
|
|
50
|
-
elsif options.info?
|
|
51
|
-
path ? say(path) : say("Configuration doesn't exist.")
|
|
52
|
-
else help :config
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
desc "-a, [--analyze]", "Analyze feature branch for issues."
|
|
57
|
-
map %w[-a --analyze] => :analyze
|
|
58
|
-
method_option :commits,
|
|
59
|
-
aliases: "-c",
|
|
60
|
-
desc: "Analyze specific commit SHA(s).",
|
|
61
|
-
type: :array,
|
|
62
|
-
default: []
|
|
63
|
-
def analyze
|
|
64
|
-
# FIX: Need to accept SHAs.
|
|
65
|
-
# collector = analyze_commits options.commits
|
|
66
|
-
collector = analyze_commits
|
|
67
|
-
abort if collector.errors?
|
|
68
|
-
rescue Errors::Base => error
|
|
69
|
-
abort colorizer.red("#{Identity::LABEL}: #{error.message}")
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
desc "--hook", "Add Git Hook support."
|
|
73
|
-
map "--hook" => :hook
|
|
74
|
-
method_option :commit_message, desc: "Analyze commit message.", banner: "PATH", type: :string
|
|
75
|
-
def hook
|
|
76
|
-
if options.commit_message?
|
|
77
|
-
check_commit_message options.commit_message
|
|
78
|
-
else
|
|
79
|
-
help "--hook"
|
|
80
|
-
end
|
|
81
|
-
rescue Errors::Base, GitPlus::Error => error
|
|
82
|
-
abort colorizer.red("#{Identity::LABEL}: #{error.message}")
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
desc "-v, [--version]", "Show gem version."
|
|
86
|
-
map %w[-v --version] => :version
|
|
87
|
-
def version
|
|
88
|
-
say Identity::VERSION_LABEL
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
desc "-h, [--help=COMMAND]", "Show this message or get help for a command."
|
|
92
|
-
map %w[-h --help] => :help
|
|
93
|
-
def help task = nil
|
|
94
|
-
say and super
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
private
|
|
98
|
-
|
|
99
|
-
attr_reader :configuration, :runner, :colorizer
|
|
100
|
-
|
|
101
|
-
def analyze_commits
|
|
102
|
-
runner.call.tap do |collector|
|
|
103
|
-
reporter = Reporters::Branch.new collector: collector
|
|
104
|
-
say reporter.to_s
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def check_commit_message path
|
|
109
|
-
commit = GitPlus::Repository.new.unsaved Pathname(path)
|
|
110
|
-
collector = runner.call commits: [commit]
|
|
111
|
-
reporter = Reporters::Branch.new collector: collector
|
|
112
|
-
say reporter.to_s
|
|
113
|
-
abort if collector.errors?
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
end
|
data/lib/git/lint/identity.rb
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Git
|
|
4
|
-
module Lint
|
|
5
|
-
module Refinements
|
|
6
|
-
module Strings
|
|
7
|
-
refine String do
|
|
8
|
-
def pluralize count:, suffix: "s"
|
|
9
|
-
return "#{count} #{self}" if count == 1
|
|
10
|
-
|
|
11
|
-
"#{count} #{self}#{suffix}"
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def fixup? = match?(/\Afixup!\s/)
|
|
15
|
-
|
|
16
|
-
def squash? = match?(/\Asquash!\s/)
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
data/lib/git/lint/runner.rb
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Git
|
|
4
|
-
module Lint
|
|
5
|
-
class Runner
|
|
6
|
-
def initialize configuration:, branch: Branches::Feature.new, collector: Collector.new
|
|
7
|
-
@configuration = configuration
|
|
8
|
-
@branch = branch
|
|
9
|
-
@collector = collector
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def call commits: branch.commits
|
|
13
|
-
commits.map { |commit| check commit }
|
|
14
|
-
collector
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
private
|
|
18
|
-
|
|
19
|
-
attr_reader :configuration, :branch, :collector
|
|
20
|
-
|
|
21
|
-
def check commit
|
|
22
|
-
configuration.map { |id, settings| load_analyzer id, commit, settings }
|
|
23
|
-
.select(&:enabled?)
|
|
24
|
-
.map { |analyzer| collector.add analyzer }
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def load_analyzer id, commit, settings
|
|
28
|
-
klass = Analyzers::Abstract.descendants.find { |descendant| descendant.id == id }
|
|
29
|
-
fail Errors::Base, "Invalid analyzer: #{id}. See docs for supported analyzer." unless klass
|
|
30
|
-
|
|
31
|
-
klass.new commit: commit, settings: settings
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|