github_repo_statistics 2.2.27 → 2.2.29

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: c499c4ae5fb475882539b924d59d507f5db8b45abb37e10cad753a4a15d51df2
4
- data.tar.gz: 4fc45e6a83d203c7feab2c73dd50ff6e9de6eda62c2d4a18838ba504c48aef62
3
+ metadata.gz: 8841de37fee015b614072106fd7a7753f081744a54b86de099188127ecf509ab
4
+ data.tar.gz: 4193b4ba131d09344cc59918e3972883084ddd5ee3cb04caa01cdc35de966449
5
5
  SHA512:
6
- metadata.gz: 5802184f8863d6cb31ff0cb625c84b9dfcd6fb4a73095eafeba769956f27c52b4148b8de9ae502dc16c495aaa2b0f7fbc630ebd0a1ae662a7fb85ba07964d419
7
- data.tar.gz: 05a70ab1951a64b60a6e8b2a8f7f14a0021eef258441a77afec90b50ba07d08b32c5f2014526a59f3d36d81d7ca74b5f2f5156494834d5be53517789eaa0f6bf
6
+ metadata.gz: 43143569d88a3d8b666531ef76311c73d3801da1a830ed6c125398ef02c73ddfd54e6d8b90dfedc324eb21d77c6ceed646f20fda59f283be2c6c4e00f087cbc4
7
+ data.tar.gz: e57bff89312909805541d04d6c83ce657d06006f16bc7e199cdf51c2dec90183ee1eed5bffe7939d77c4bae24d4a26e797209256b8f594e69dc1660b27c4f966
@@ -192,6 +192,13 @@ class GithubRepoStatistics
192
192
  filename = File.basename(file)
193
193
  commit_count = git_commit_count(file:, start_date:, end_date:).to_i
194
194
  git_log = git_commit_info(file:, start_date:, end_date:).split("\n")
195
+ prs = git_log.map do |pr|
196
+ match = pr.match(/#(\d+)/)
197
+ if match
198
+ match[0]
199
+ end
200
+ end.uniq
201
+
195
202
  teams = git_log.map do |team|
196
203
  team.match(/#{TEAM_REGEX}/)[0].upcase
197
204
  end.reject { |e| EXCLUSIONS&.include?(e) }
@@ -202,7 +209,7 @@ class GithubRepoStatistics
202
209
 
203
210
  if teams.count > 1
204
211
  files_changed_by_many_teams += 1
205
- file_team_map.merge!(file.to_s => [teams, commit_count])
212
+ file_team_map.merge!(file.to_s => [teams, prs, commit_count])
206
213
  cross_teams_count += teams.count
207
214
  else
208
215
  single_ownership_teams_count += 1
@@ -225,8 +232,8 @@ class GithubRepoStatistics
225
232
 
226
233
  def contribution_message
227
234
  duration_in_days = @duration_in_days.to_i
228
- start_date = @begin_time.to_time.to_i - duration_in_days * 86_400 - 30 * 86_400
229
- end_date = @begin_time.to_time.to_i - 30 * 86_400
235
+ start_date = @begin_time.to_time.to_i - duration_in_days * 86_400
236
+ end_date = @begin_time.to_time.to_i
230
237
  git_ls = git_files(directory_path: @directory_path)
231
238
  file_count = filter_existing_code_files(git_ls.split).count
232
239
  all_files_with_changes = files_with_changes(directory_path: @directory_path, start_date:, end_date:).split.sort
@@ -238,7 +245,7 @@ class GithubRepoStatistics
238
245
  occurrences = all_teams.flatten.compact.tally
239
246
  sorted_occurrences = occurrences.sort_by { |element, count| [-count, element] }
240
247
  contributors = Hash[sorted_occurrences]
241
- churn_count = file_team_map.values.map { |value| value[1] }.sum
248
+ churn_count = file_team_map.values.map { |value| value.last }.sum
242
249
  hotspot_changes_percentage = ((churn_count.to_f / total_changes) * 100).round(2)
243
250
  # Filter files based on extension, existence and size
244
251
  filtered_files = filter_files(file_team_map:)
@@ -322,15 +329,16 @@ class GithubRepoStatistics
322
329
  lines_of_code = count_lines_of_code(file)
323
330
  commits = line.last.last
324
331
  owner = find_owner(file:)
332
+ prs = line.last[1]
325
333
 
326
- hotspot_output << [file.gsub(@directory_path, ''), contributors, lines_of_code, commits, owner]
334
+ hotspot_output << [file.gsub(@directory_path, ''), contributors, lines_of_code, commits, owner, prs]
327
335
  end
328
336
 
329
337
  hotspot_output.sort_by! { |row| -row[2] }
330
338
 
331
339
  if FILE_OUTPUT
332
340
  CSV.open('hotspot.csv', 'w') do |csv|
333
- csv << ['File', 'Contributors', 'Lines', 'Commits', 'Owner']
341
+ csv << ['File', 'Contributors', 'Lines', 'Commits', 'Owner', 'PRs']
334
342
  hotspot_output.each do |row|
335
343
  csv << row
336
344
  end
@@ -338,7 +346,7 @@ class GithubRepoStatistics
338
346
  else
339
347
  puts "\n *Hotspot files(#{filtered_top_touched_files.count}):*\n"
340
348
  hotspot_output.each do |row|
341
- puts " #{row[0]} Contributors: #{row[1]} Lines: #{row[2]} Commits: #{row[3]} Owner: #{row[4]}"
349
+ puts " #{row[0]} Contributors: #{row[1]} Lines: #{row[2]} Commits: #{row[3]} Owner: #{row[4]} PRs: #{row[5]}"
342
350
  end
343
351
  end
344
352
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class GithubRepoStatistics
4
- VERSION = '2.2.27'
4
+ VERSION = '2.2.29'
5
5
  end
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.2.27
4
+ version: 2.2.29
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-06 00:00:00.000000000 Z
11
+ date: 2024-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: date