kennel 1.161.0 → 1.162.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 856d925b4aeee8af7171cb092b746c70c8e21cfa06a1987910a25ef193e79a50
4
- data.tar.gz: c174845463912362beba00a86f63d11316ec54f0a57459e4c6cd32e0d1d358d4
3
+ metadata.gz: 8412928c5e979ad1f46ac333e0f51a9d2601fa435a6ec2951390211515b0b35b
4
+ data.tar.gz: 2d25fbf232b3d784f3ea04ff51a38aeea2c7f034969e2065c4ddbb6dbbd3ea99
5
5
  SHA512:
6
- metadata.gz: 328b385c98c37473d65799e1721da32f9a8ff4d4d238be42a37196aea6e880d5ce1ae76dfb5ec8ffd4e6f60c70c99af070566b09c3fa4c34032d431b4e2a6189
7
- data.tar.gz: f74557a8ff3fe9ee436034774ed1fe5c5176e9919114e48241f08f3ffbc3950b2a32d25574d9d99c1a3c6470d3381d2880b356a7a54cc2795c2f13b4843980af
6
+ metadata.gz: 320fbf356dbfb89826f99b7a3b90f3f41af07022b8ab783b546af7cb6a7430081fa955431bfd642fbda50de31e6308b863912c9c6d0af768622ff2f9b302b4e1
7
+ data.tar.gz: ef91e1bebe47fd623d65a5a308c726930e077632ac3b993241986f8625b695312789675e2bc5de4ee55ea2bfc1828252e110fbc65f81b91307ba0f6773efaf9f
@@ -1,6 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
3
  class ProjectsProvider
4
+ class AutoloadFailed < StandardError
5
+ end
6
+
7
+ # @return [Array<Models::Project>]
8
+ # All projects in the system. This is a slow operation.
9
+ # Use `projects` to get all projects in the system.
10
+ def all_projects
11
+ load_all
12
+ Models::Project.recursive_subclasses.map(&:new)
13
+ end
14
+
15
+ # @return [Array<Models::Project>]
16
+ # All projects in the system. This is a slow operation.
17
+
4
18
  def projects
5
19
  load_all
6
20
  Models::Project.recursive_subclasses.map(&:new)
@@ -21,9 +35,7 @@ module Kennel
21
35
  Dir.exist?("teams") && loader.push_dir("teams", namespace: Teams)
22
36
  Dir.exist?("parts") && loader.push_dir("parts")
23
37
 
24
- # TODO: verify this works by running generate and also running generate for each possible PROJECT
25
- # in isolation, then remove AUTOLOAD_PROJECTS
26
- if ENV["AUTOLOAD_PROJECTS"]
38
+ if (autoload = ENV["AUTOLOAD_PROJECTS"]) && autoload != "false"
27
39
  loader.push_dir("projects")
28
40
  loader.setup
29
41
 
@@ -32,7 +44,7 @@ module Kennel
32
44
  # so when loading a project we need to find anything that could be a project source
33
45
  # sorting by name and nesting level to avoid confusion
34
46
  segments = project.split("_")
35
- search = /#{segments[0...-1].map { |p| "#{p}[_/]" }.join}#{segments[-1]}(\.rb|\/project\.rb)/
47
+ search = /#{segments[0...-1].map { |p| "#{p}[_/]" }.join}#{segments[-1]}(\.rb|\/project\.rb|\/base\.rb)/
36
48
 
37
49
  projects_path = "#{File.expand_path("projects")}/"
38
50
  known_paths = loader.all_expected_cpaths.keys
@@ -41,17 +53,19 @@ module Kennel
41
53
  end.sort.min_by { |p| p.count("/") }
42
54
  if project_path
43
55
  require project_path
44
- else
56
+ elsif autoload != "abort"
45
57
  Kennel.err.puts(
46
58
  "No projects/ file matching #{search} found" \
47
59
  ", falling back to slow loading of all projects instead"
48
60
  )
49
61
  loader.eager_load
62
+ else
63
+ raise AutoloadFailed, "No projects/ file matching #{search} found"
50
64
  end
51
- else
65
+ else # all projects needed
52
66
  loader.eager_load
53
67
  end
54
- else
68
+ else # old style without autoload
55
69
  loader.setup
56
70
  loader.eager_load # TODO: this should not be needed but we see hanging CI processes when it's not added
57
71
  # TODO: also auto-load projects and update expected path too
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.161.0"
3
+ VERSION = "1.162.0"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kennel
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.161.0
4
+ version: 1.162.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser