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 +4 -4
- data/lib/kennel/projects_provider.rb +21 -7
- data/lib/kennel/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8412928c5e979ad1f46ac333e0f51a9d2601fa435a6ec2951390211515b0b35b
|
4
|
+
data.tar.gz: 2d25fbf232b3d784f3ea04ff51a38aeea2c7f034969e2065c4ddbb6dbbd3ea99
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
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
|
data/lib/kennel/version.rb
CHANGED