code_ownership 1.35.0 → 1.36.1
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: 668edc0471999590cd95e9953151e6e30d02bf64b2bb14e544e5f7c56099c998
|
4
|
+
data.tar.gz: bbdff6a9af05c8026b33c206d63f083d1c9ed82831bd7b1f3cf3707aa0f54a67
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54a6b78ddb108894b20ddee99d0a6637770485b27c154b6676021f512d2aae39159d052e8f2c7986b71c824eb9f3f7bc4a3b9d5bc0c9e1848e7bceecee3e7728
|
7
|
+
data.tar.gz: b4f39290cfc23f31b73642d3d6a5747ec79efc07210541c4b18c913f448c1df32efe6b4657e91f736055ab30ecf72b4910c22a0266503842aff84ad0e375be62
|
@@ -74,36 +74,54 @@ module CodeOwnership
|
|
74
74
|
)
|
75
75
|
end
|
76
76
|
|
77
|
-
#
|
77
|
+
# Takes a file and finds the relevant `.codeowner` file by walking up the directory
|
78
78
|
# structure. Example, given `a/b/c.rb`, this looks for `a/b/.codeowner`, `a/.codeowner`,
|
79
79
|
# and `.codeowner` in that order, stopping at the first file to actually exist.
|
80
|
-
#
|
80
|
+
# If the parovided file is a directory, it will look for `.codeowner` in that directory and then upwards.
|
81
|
+
# We do additional caching so that we don't have to check for file existence every time.
|
81
82
|
sig { params(file: String).returns(T.nilable(CodeTeams::Team)) }
|
82
83
|
def map_file_to_relevant_owner(file)
|
83
84
|
file_path = Pathname.new(file)
|
84
|
-
|
85
|
+
team = T.let(nil, T.nilable(CodeTeams::Team))
|
86
|
+
|
87
|
+
if File.directory?(file)
|
88
|
+
team = get_team_from_codeowners_file_within_directory(file_path)
|
89
|
+
return team unless team.nil?
|
90
|
+
end
|
91
|
+
|
92
|
+
path_components = file_path.each_filename.to_a
|
93
|
+
if file_path.absolute?
|
94
|
+
path_components = ['/', *path_components]
|
95
|
+
end
|
85
96
|
|
86
97
|
(path_components.length - 1).downto(0).each do |i|
|
87
|
-
|
88
|
-
|
98
|
+
team = get_team_from_codeowners_file_within_directory(
|
99
|
+
Pathname.new(File.join(*T.unsafe(path_components[0...i])))
|
100
|
+
)
|
101
|
+
return team unless team.nil?
|
102
|
+
end
|
89
103
|
|
90
|
-
|
104
|
+
team
|
105
|
+
end
|
91
106
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
elsif potential_codeowners_file.exist?
|
96
|
-
team = owner_for_codeowners_file(potential_codeowners_file)
|
107
|
+
sig { params(directory: Pathname).returns(T.nilable(CodeTeams::Team)) }
|
108
|
+
def get_team_from_codeowners_file_within_directory(directory)
|
109
|
+
potential_codeowners_file = directory.join(CODEOWNERS_DIRECTORY_FILE_NAME)
|
97
110
|
|
98
|
-
|
99
|
-
else
|
100
|
-
@@directory_cache[potential_codeowners_file_name] = nil
|
101
|
-
end
|
111
|
+
potential_codeowners_file_name = potential_codeowners_file.to_s
|
102
112
|
|
103
|
-
|
113
|
+
team = nil
|
114
|
+
if @@directory_cache.key?(potential_codeowners_file_name)
|
115
|
+
team = @@directory_cache[potential_codeowners_file_name]
|
116
|
+
elsif potential_codeowners_file.exist?
|
117
|
+
team = owner_for_codeowners_file(potential_codeowners_file)
|
118
|
+
|
119
|
+
@@directory_cache[potential_codeowners_file_name] = team
|
120
|
+
else
|
121
|
+
@@directory_cache[potential_codeowners_file_name] = nil
|
104
122
|
end
|
105
123
|
|
106
|
-
|
124
|
+
return team
|
107
125
|
end
|
108
126
|
end
|
109
127
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: code_ownership
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.36.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gusto Engineers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: code_teams
|