github_repo_statistics 2.3.4 → 2.3.6
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bcd986a058fd4af9648d2900297d60aaf9a8f53d76f2a58c6a50adbfb40411d0
|
4
|
+
data.tar.gz: 4e3c39e106d2e4bd0776f4806c0329a49e7279798c48fce3561d342cd47306c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7fe19b7e6e44588af15ce682f7b2a0a0e3a219d5c4c4d7ba041e33ff57869adc1093f6219681329e16279680cd37913d3bb1815b00eebb97b16309c960cdc975
|
7
|
+
data.tar.gz: 5636c1a35d16b9cddcd0084bd41423833a3b607d9ebcad0338caa02e62e7a23e17a301e0a1b62ef3283612b75affcd4f113efec6bba8de333be0b0879547d575
|
data/Gemfile.lock
CHANGED
data/bin/github_repo_statistics
CHANGED
@@ -78,6 +78,16 @@ OptionParser.new do |opts|
|
|
78
78
|
options[:code_extension] = code_extension
|
79
79
|
end
|
80
80
|
|
81
|
+
opts.on('--team-to-focus STRING',
|
82
|
+
'The team identifier to focus for the metric collection [default: ""]') do |team_to_focus|
|
83
|
+
options[:team_to_focus] = team_to_focus
|
84
|
+
end
|
85
|
+
|
86
|
+
opts.on('--codeowner-to-focus STRING',
|
87
|
+
'The codeowner identifier to focus for the metric collection [default: ""]') do |codeowner_to_focus|
|
88
|
+
options[:codeowner_to_focus] = codeowner_to_focus
|
89
|
+
end
|
90
|
+
|
81
91
|
opts.on('--output-to-files',
|
82
92
|
'Puts the output for hotspot and codeowners into files instead of the STDOUT (useful for CI and big amount of data) [default:false]') do
|
83
93
|
options[:file_output] = true
|
@@ -112,6 +122,8 @@ FILE_OUTPUT = options[:file_output] || false
|
|
112
122
|
CODE_EXTENSIONS = options[:code_extension] ? options[:code_extension].split(',') : ['.swift', '.kt']
|
113
123
|
EXCLUDED_FILES = options[:excluded_files]
|
114
124
|
EXCLUDED_PRS = options[:excluded_prs]
|
125
|
+
TEAM_TO_FOCUS = options[:team_to_focus]
|
126
|
+
CODEOWNER_TO_FOCUS = options[:codeowner_to_focus]
|
115
127
|
|
116
128
|
unless CI
|
117
129
|
puts "\nDirectory: #{REPO_PATH}\n"
|
@@ -150,10 +150,24 @@ class GithubRepoStatistics
|
|
150
150
|
File.foreach(file).reject { |line| line.match(%r{^\s*(//|/\*.*\*/|\s*$)}) }.count
|
151
151
|
end
|
152
152
|
|
153
|
-
def filter_existing_code_files(files)
|
153
|
+
def filter_existing_code_files(files, start_date, end_date)
|
154
154
|
files.select do |f|
|
155
155
|
next unless File.exist?(f)
|
156
156
|
|
157
|
+
git_log = git_commit_info(file: f, start_date:, end_date:).split("\n")
|
158
|
+
|
159
|
+
teams = git_log.map do |team|
|
160
|
+
team.match(/#{TEAM_REGEX}/)[0].upcase
|
161
|
+
end.reject { |e| EXCLUSIONS&.include?(e) }
|
162
|
+
|
163
|
+
if TEAM_TO_FOCUS && CODEOWNER_TO_FOCUS
|
164
|
+
next if !teams.include?(TEAM_TO_FOCUS) && !find_owner(file: f).include?(CODEOWNER_TO_FOCUS)
|
165
|
+
elsif TEAM_TO_FOCUS
|
166
|
+
next unless teams.include?(TEAM_TO_FOCUS)
|
167
|
+
elsif CODEOWNER_TO_FOCUS
|
168
|
+
next unless find_owner(file: f).include?(CODEOWNER_TO_FOCUS)
|
169
|
+
end
|
170
|
+
|
157
171
|
if EXCLUDED_FILES
|
158
172
|
excluded_patterns = EXCLUDED_FILES.split(',')
|
159
173
|
next if excluded_patterns.any? { |pattern| f.include?(pattern) }
|
@@ -198,7 +212,8 @@ class GithubRepoStatistics
|
|
198
212
|
git_log = git_commit_info(file:, start_date:, end_date:).split("\n")
|
199
213
|
|
200
214
|
if EXCLUDED_PRS
|
201
|
-
|
215
|
+
excluded_prs = EXCLUDED_PRS.split(',')
|
216
|
+
git_log = git_log.reject { |c| excluded_prs.any? { |pr| c.include?(pr) } }
|
202
217
|
end
|
203
218
|
|
204
219
|
prs = git_log.map do |pr|
|
@@ -244,10 +259,11 @@ class GithubRepoStatistics
|
|
244
259
|
start_date = @begin_time.to_time.to_i - duration_in_days * 86_400
|
245
260
|
end_date = @begin_time.to_time.to_i
|
246
261
|
git_ls = git_files(directory_path: @directory_path)
|
247
|
-
file_count = filter_existing_code_files(git_ls.split).count
|
262
|
+
file_count = filter_existing_code_files(git_ls.split, start_date, end_date).count
|
248
263
|
all_files_with_changes = files_with_changes(directory_path: @directory_path, start_date:, end_date:).split.sort
|
249
|
-
code_files_with_changes = filter_existing_code_files(all_files_with_changes)
|
264
|
+
code_files_with_changes = filter_existing_code_files(all_files_with_changes, start_date, end_date)
|
250
265
|
uniq_code_files_with_changes = code_files_with_changes.uniq
|
266
|
+
|
251
267
|
all_teams, cross_teams_count, single_ownership_teams_count, files_changed_by_many_teams, total_changes, file_team_map = analyze_changed_files(
|
252
268
|
uniq_code_files_with_changes:, start_date:, end_date:
|
253
269
|
)
|
@@ -20,7 +20,7 @@ class ReleaseMergeReport
|
|
20
20
|
puts "#{branch}: #{count}"
|
21
21
|
end
|
22
22
|
|
23
|
-
|
23
|
+
ENV['BQ_CREDENTIALS'] = `cat /Users/serghei.moret/.config/gcloud/application_default_credentials.json`
|
24
24
|
|
25
25
|
export_to_bigquery(grouped_branch_counts) if ENV['BQ_CREDENTIALS']
|
26
26
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: github_repo_statistics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Serghei Moret
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: date
|