Skip to content

Commit 4fc00a6

Browse files
committed
Remove use of module_function
1 parent decc018 commit 4fc00a6

File tree

10 files changed

+36
-53
lines changed

10 files changed

+36
-53
lines changed

code_ownership.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
3737

3838
spec.add_dependency 'code_teams', '~> 1.0'
3939
spec.add_dependency 'packs-specification'
40-
spec.add_dependency 'sorbet-runtime', '>= 0.5.11249'
40+
spec.add_dependency 'sorbet-runtime', '>= 0.6.12763'
4141

4242
spec.add_development_dependency 'debug'
4343
spec.add_development_dependency 'packwerk'

lib/code_ownership.rb

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
# frozen_string_literal: true
2-
32
# typed: strict
43

54
require 'code_teams'
@@ -25,17 +24,13 @@
2524
end
2625

2726
module CodeOwnership
28-
module_function
29-
3027
extend T::Sig
31-
extend T::Helpers
3228

33-
requires_ancestor { Kernel }
3429
GlobsToOwningTeamMap = T.type_alias { T::Hash[String, CodeTeams::Team] }
3530

3631
# Returns the version of the code_ownership gem and the codeowners-rs gem.
3732
sig { returns(T::Array[String]) }
38-
def version
33+
def self.version
3934
["code_ownership version: #{VERSION}",
4035
"codeowners-rs version: #{::RustCodeOwners.version}"]
4136
end
@@ -65,7 +60,7 @@ def version
6560
# # => raises exception if no owner found
6661
#
6762
sig { params(file: String, from_codeowners: T::Boolean, allow_raise: T::Boolean).returns(T.nilable(CodeTeams::Team)) }
68-
def for_file(file, from_codeowners: true, allow_raise: false)
63+
def self.for_file(file, from_codeowners: true, allow_raise: false)
6964
if from_codeowners
7065
teams_for_files_from_codeowners([file], allow_raise: allow_raise).values.first
7166
else
@@ -116,7 +111,7 @@ def for_file(file, from_codeowners: true, allow_raise: false)
116111
# @see #validate! for ensuring CODEOWNERS file is up-to-date
117112
#
118113
sig { params(files: T::Array[String], allow_raise: T::Boolean).returns(T::Hash[String, T.nilable(CodeTeams::Team)]) }
119-
def teams_for_files_from_codeowners(files, allow_raise: false)
114+
def self.teams_for_files_from_codeowners(files, allow_raise: false)
120115
Private::TeamFinder.teams_for_files(files, allow_raise: allow_raise)
121116
end
122117

@@ -160,12 +155,12 @@ def teams_for_files_from_codeowners(files, allow_raise: false)
160155
# @see CLI#for_file for the command-line interface that uses this method
161156
#
162157
sig { params(file: String).returns(T.nilable(T::Hash[Symbol, String])) }
163-
def for_file_verbose(file)
158+
def self.for_file_verbose(file)
164159
::RustCodeOwners.for_file(file)
165160
end
166161

167162
sig { params(team: T.any(CodeTeams::Team, String)).returns(T::Array[String]) }
168-
def for_team(team)
163+
def self.for_team(team)
169164
team = T.must(CodeTeams.find(team)) if team.is_a?(String)
170165
::RustCodeOwners.for_team(team.name)
171166
end
@@ -226,7 +221,7 @@ def for_team(team)
226221
files: T.nilable(T::Array[String])
227222
).void
228223
end
229-
def validate!(
224+
def self.validate!(
230225
autocorrect: true,
231226
stage_changes: true,
232227
files: nil
@@ -269,7 +264,7 @@ def validate!(
269264
# @note Leading newlines after the annotation are also removed to maintain clean formatting.
270265
#
271266
sig { params(filename: String).void }
272-
def remove_file_annotation!(filename)
267+
def self.remove_file_annotation!(filename)
273268
filepath = Pathname.new(filename)
274269

275270
begin
@@ -292,24 +287,24 @@ def remove_file_annotation!(filename)
292287
# Given a backtrace from either `Exception#backtrace` or `caller`, find the
293288
# first line that corresponds to a file with assigned ownership
294289
sig { params(backtrace: T.nilable(T::Array[String]), excluded_teams: T::Array[::CodeTeams::Team]).returns(T.nilable(::CodeTeams::Team)) }
295-
def for_backtrace(backtrace, excluded_teams: [])
290+
def self.for_backtrace(backtrace, excluded_teams: [])
296291
Private::TeamFinder.for_backtrace(backtrace, excluded_teams: excluded_teams)
297292
end
298293

299294
# Given a backtrace from either `Exception#backtrace` or `caller`, find the
300295
# first owned file in it, useful for figuring out which file is being blamed.
301296
sig { params(backtrace: T.nilable(T::Array[String]), excluded_teams: T::Array[::CodeTeams::Team]).returns(T.nilable([::CodeTeams::Team, String])) }
302-
def first_owned_file_for_backtrace(backtrace, excluded_teams: [])
297+
def self.first_owned_file_for_backtrace(backtrace, excluded_teams: [])
303298
Private::TeamFinder.first_owned_file_for_backtrace(backtrace, excluded_teams: excluded_teams)
304299
end
305300

306-
sig { params(klass: T.nilable(T.any(T::Class[T.anything], Module))).returns(T.nilable(::CodeTeams::Team)) }
307-
def for_class(klass)
301+
sig { params(klass: T.nilable(T.any(T::Class[T.anything], T::Module[T.anything]))).returns(T.nilable(::CodeTeams::Team)) }
302+
def self.for_class(klass)
308303
Private::TeamFinder.for_class(klass)
309304
end
310305

311306
sig { params(package: Packs::Pack).returns(T.nilable(::CodeTeams::Team)) }
312-
def for_package(package)
307+
def self.for_package(package)
313308
Private::TeamFinder.for_package(package)
314309
end
315310

lib/code_ownership/cli.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# typed: true
2+
# frozen_string_literal: true
23

34
require 'optparse'
45
require 'pathname'

lib/code_ownership/private/file_path_finder.rb

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
# frozen_string_literal: true
2-
32
# typed: strict
43

54
module CodeOwnership
65
module Private
76
module FilePathFinder
8-
module_function
9-
107
extend T::Sig
11-
extend T::Helpers
128

139
# Returns a string version of the relative path to a Rails constant,
1410
# or nil if it can't find anything
15-
sig { params(klass: T.nilable(T.any(T::Class[T.anything], Module))).returns(T.nilable(String)) }
16-
def path_from_klass(klass)
11+
sig { params(klass: T.nilable(T.any(T::Class[T.anything], T::Module[T.anything]))).returns(T.nilable(String)) }
12+
def self.path_from_klass(klass)
1713
if klass
1814
path = Object.const_source_location(klass.to_s)&.first
1915
(path && Pathname.new(path).relative_path_from(Pathname.pwd).to_s) || nil
@@ -23,7 +19,7 @@ def path_from_klass(klass)
2319
end
2420

2521
sig { params(backtrace: T.nilable(T::Array[String])).returns(T::Enumerable[String]) }
26-
def from_backtrace(backtrace)
22+
def self.from_backtrace(backtrace)
2723
return [] unless backtrace
2824

2925
# The pattern for a backtrace hasn't changed in forever and is considered

lib/code_ownership/private/file_path_team_cache.rb

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,33 @@
11
# frozen_string_literal: true
2-
32
# typed: strict
43

54
module CodeOwnership
65
module Private
76
module FilePathTeamCache
8-
module_function
9-
107
extend T::Sig
11-
extend T::Helpers
128

139
sig { params(file_path: String).returns(T.nilable(CodeTeams::Team)) }
14-
def get(file_path)
10+
def self.get(file_path)
1511
cache[file_path]
1612
end
1713

1814
sig { params(file_path: String, team: T.nilable(CodeTeams::Team)).void }
19-
def set(file_path, team)
15+
def self.set(file_path, team)
2016
cache[file_path] = team
2117
end
2218

2319
sig { params(file_path: String).returns(T::Boolean) }
24-
def cached?(file_path)
20+
def self.cached?(file_path)
2521
cache.key?(file_path)
2622
end
2723

2824
sig { void }
29-
def bust_cache!
25+
def self.bust_cache!
3026
@cache = nil
3127
end
3228

3329
sig { returns(T::Hash[String, T.nilable(CodeTeams::Team)]) }
34-
def cache
30+
def self.cache
3531
@cache ||= T.let(@cache,
3632
T.nilable(T::Hash[String, T.nilable(CodeTeams::Team)]))
3733
@cache ||= {}

lib/code_ownership/private/for_file_output_builder.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
# frozen_string_literal: true
2-
32
# typed: strict
43

54
module CodeOwnership

lib/code_ownership/private/team_finder.rb

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
# frozen_string_literal: true
2-
32
# typed: strict
43

54
module CodeOwnership
65
module Private
76
module TeamFinder
8-
module_function
9-
107
extend T::Sig
11-
extend T::Helpers
12-
13-
requires_ancestor { Kernel }
148

159
sig { params(file_path: String, allow_raise: T::Boolean).returns(T.nilable(CodeTeams::Team)) }
16-
def for_file(file_path, allow_raise: false)
10+
def self.for_file(file_path, allow_raise: false)
1711
return nil if file_path.start_with?('./')
1812

1913
return FilePathTeamCache.get(file_path) if FilePathTeamCache.cached?(file_path)
@@ -31,7 +25,7 @@ def for_file(file_path, allow_raise: false)
3125
end
3226

3327
sig { params(files: T::Array[String], allow_raise: T::Boolean).returns(T::Hash[String, T.nilable(CodeTeams::Team)]) }
34-
def teams_for_files(files, allow_raise: false)
28+
def self.teams_for_files(files, allow_raise: false)
3529
result = {}
3630

3731
# Collect cached results and identify non-cached files
@@ -57,29 +51,29 @@ def teams_for_files(files, allow_raise: false)
5751
result
5852
end
5953

60-
sig { params(klass: T.nilable(T.any(T::Class[T.anything], Module))).returns(T.nilable(::CodeTeams::Team)) }
61-
def for_class(klass)
54+
sig { params(klass: T.nilable(T.any(T::Class[T.anything], T::Module[T.anything]))).returns(T.nilable(::CodeTeams::Team)) }
55+
def self.for_class(klass)
6256
file_path = FilePathFinder.path_from_klass(klass)
6357
return nil if file_path.nil?
6458

6559
for_file(file_path)
6660
end
6761

6862
sig { params(package: Packs::Pack).returns(T.nilable(::CodeTeams::Team)) }
69-
def for_package(package)
63+
def self.for_package(package)
7064
owner_name = package.raw_hash['owner'] || package.metadata['owner']
7165
return nil if owner_name.nil?
7266

7367
find_team!(owner_name, allow_raise: true)
7468
end
7569

7670
sig { params(backtrace: T.nilable(T::Array[String]), excluded_teams: T::Array[::CodeTeams::Team]).returns(T.nilable(::CodeTeams::Team)) }
77-
def for_backtrace(backtrace, excluded_teams: [])
71+
def self.for_backtrace(backtrace, excluded_teams: [])
7872
first_owned_file_for_backtrace(backtrace, excluded_teams: excluded_teams)&.first
7973
end
8074

8175
sig { params(backtrace: T.nilable(T::Array[String]), excluded_teams: T::Array[::CodeTeams::Team]).returns(T.nilable([::CodeTeams::Team, String])) }
82-
def first_owned_file_for_backtrace(backtrace, excluded_teams: [])
76+
def self.first_owned_file_for_backtrace(backtrace, excluded_teams: [])
8377
FilePathFinder.from_backtrace(backtrace).each do |file|
8478
team = for_file(file)
8579
if team && !excluded_teams.include?(team)
@@ -91,7 +85,7 @@ def first_owned_file_for_backtrace(backtrace, excluded_teams: [])
9185
end
9286

9387
sig { params(team_name: String, allow_raise: T::Boolean).returns(T.nilable(CodeTeams::Team)) }
94-
def find_team!(team_name, allow_raise: false)
88+
def self.find_team!(team_name, allow_raise: false)
9589
team = CodeTeams.find(team_name)
9690
if team.nil? && allow_raise
9791
raise(StandardError, "Could not find team with name: `#{team_name}`. Make sure the team is one of `#{CodeTeams.all.map(&:name).sort}`")

lib/code_ownership/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# typed: false
1+
# typed: strict
22
# frozen_string_literal: true
33

44
module CodeOwnership

sorbet/config

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
--dir
2-
.
1+
--dir=.
32
--ignore=/spec
43
--ignore=/vendor/bundle
5-
--enable-experimental-requires-ancestor

spec/lib/code_ownership/private/file_path_team_cache_spec.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
let(:file_path) { 'app/javascript/[test]/test.js' }
55
let(:codes_team) { instance_double(CodeTeams::Team) }
66

7+
before do
8+
allow(codes_team).to receive(:is_a?).with(CodeTeams::Team).and_return(true)
9+
end
10+
711
describe '.get' do
812
subject { described_class.get(file_path) }
913

0 commit comments

Comments
 (0)