code_teams 1.1.0 → 1.2.0

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/code_teams.rb +8 -9
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 755f17a56df0e3c1f337e0497b4b63887b0681626583bdf3a6f66ec4eb9ce46f
4
- data.tar.gz: e060b12412a3a5c0ff02af18490a3ef336b8b83d5236ef5eed0f4a75c12ced2b
3
+ metadata.gz: 16b7aa715a2d1234dfff0c938a28e33631141e4fadf5489af3a872fc22f8c0ed
4
+ data.tar.gz: e6457f4a124c8f654fea97059de74814bb0e21859b95408eb4b2028de30508bc
5
5
  SHA512:
6
- metadata.gz: 92594da3e4eccae671cd71d1564daf10009d41bd30612a0d5c1b66e3a729466d2c03ccea4c5cad5cf2196bc85be33a06520ec4767e94bb75219f070c8088449f
7
- data.tar.gz: 9acbb9c011703218fe398179e723c796452b4564a06817124fd7cd599ea9e93a6d7f01987e0f03f274ddd100074d5d8260a18a85d51da69ae15a458bd992e29b
6
+ metadata.gz: dec7b2ed15177d10c82a16009179c76f571bf28f4bd1a56d0b9c4a132989f2e95ebddb11b3e0eb429567317e76bb33ace537f0cb3b447061519d77ca39efddf9
7
+ data.tar.gz: 4fa9956fd388b92ca1d5c4b3a7cbf2a439813c57e793edea0883c9e327c56eb8ae139898ed93b06b03bd346665567c37335e7d508afbb11eea05a85181cbe232
data/lib/code_teams.rb CHANGED
@@ -13,28 +13,27 @@ module CodeTeams
13
13
  extend T::Sig
14
14
 
15
15
  class IncorrectPublicApiUsageError < StandardError; end
16
+ class TeamNotFoundError < StandardError; end
16
17
 
17
18
  UNKNOWN_TEAM_STRING = 'Unknown Team'
18
19
  @plugins_registered = T.let(false, T::Boolean)
19
20
 
20
21
  sig { returns(T::Array[Team]) }
21
22
  def self.all
22
- @all = T.let(@all, T.nilable(T::Array[Team]))
23
- @all ||= for_directory('config/teams')
23
+ @all ||= T.let(for_directory('config/teams'), T.nilable(T::Array[Team]))
24
24
  end
25
25
 
26
26
  sig { params(name: String).returns(T.nilable(Team)) }
27
27
  def self.find(name)
28
- @index_by_name = T.let(@index_by_name, T.nilable(T::Hash[String, CodeTeams::Team]))
29
- @index_by_name ||= begin
30
- result = {}
31
- all.each { |t| result[t.name] = t }
32
- result
33
- end
34
-
28
+ @index_by_name ||= T.let(all.to_h { |t| [t.name, t] }, T.nilable(T::Hash[String, CodeTeams::Team]))
35
29
  @index_by_name[name]
36
30
  end
37
31
 
32
+ sig { params(name: String).returns(Team) }
33
+ def self.find!(name)
34
+ find(name) || raise(TeamNotFoundError, "No team found with name: #{name}")
35
+ end
36
+
38
37
  sig { params(dir: String).returns(T::Array[Team]) }
39
38
  def self.for_directory(dir)
40
39
  unless @plugins_registered
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code_teams
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gusto Engineers
@@ -57,7 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
57
57
  - !ruby/object:Gem::Version
58
58
  version: '0'
59
59
  requirements: []
60
- rubygems_version: 3.6.7
60
+ rubygems_version: 3.6.9
61
61
  specification_version: 4
62
62
  summary: A low-dependency gem for declaring and querying engineering teams
63
63
  test_files: []