github_repo_statistics 2.3.5 → 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: 538bcf5774623f5443c771c731035806d40bc7ecced742899a95168dca809094
4
- data.tar.gz: '063853f3714c6a18e70d9eb936e88d2ef7c592203936412f6f9981960ae5db7f'
3
+ metadata.gz: bcd986a058fd4af9648d2900297d60aaf9a8f53d76f2a58c6a50adbfb40411d0
4
+ data.tar.gz: 4e3c39e106d2e4bd0776f4806c0329a49e7279798c48fce3561d342cd47306c8
5
5
  SHA512:
6
- metadata.gz: 7073aca1430b973a1a4ef07be6436843d532539bcd0aa5e12caaa22cf6b9c2e6152538d366934e4436aae95d3a64a6fecbe408ad5c9770e1ca6dda3a3aadaafe
7
- data.tar.gz: 603ecfda33d86d85f8c41a4ea40860830c6e2311b37cb4e8c31d9d58b1a80fd1204c961a2b0326329df42298a9a7b95dea7a05d39da711792f2ccd4119ad450c
6
+ metadata.gz: 7fe19b7e6e44588af15ce682f7b2a0a0e3a219d5c4c4d7ba041e33ff57869adc1093f6219681329e16279680cd37913d3bb1815b00eebb97b16309c960cdc975
7
+ data.tar.gz: 5636c1a35d16b9cddcd0084bd41423833a3b607d9ebcad0338caa02e62e7a23e17a301e0a1b62ef3283612b75affcd4f113efec6bba8de333be0b0879547d575
@@ -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) }
@@ -245,10 +259,11 @@ class GithubRepoStatistics
245
259
  start_date = @begin_time.to_time.to_i - duration_in_days * 86_400
246
260
  end_date = @begin_time.to_time.to_i
247
261
  git_ls = git_files(directory_path: @directory_path)
248
- 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
249
263
  all_files_with_changes = files_with_changes(directory_path: @directory_path, start_date:, end_date:).split.sort
250
- 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)
251
265
  uniq_code_files_with_changes = code_files_with_changes.uniq
266
+
252
267
  all_teams, cross_teams_count, single_ownership_teams_count, files_changed_by_many_teams, total_changes, file_team_map = analyze_changed_files(
253
268
  uniq_code_files_with_changes:, start_date:, end_date:
254
269
  )
@@ -20,7 +20,7 @@ class ReleaseMergeReport
20
20
  puts "#{branch}: #{count}"
21
21
  end
22
22
 
23
- # ENV['BQ_CREDENTIALS'] = `cat /Users/serghei.moret/.config/gcloud/application_default_credentials.json`
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
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class GithubRepoStatistics
4
- VERSION = '2.3.5'
4
+ VERSION = '2.3.6'
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.3.5
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-22 00:00:00.000000000 Z
11
+ date: 2024-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: date