foobara 0.7.2 → 0.7.4
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/CHANGELOG.md +10 -0
- data/projects/command/src/command_pattern_implementation/concerns/namespace.rb +5 -1
- data/projects/model_plumbing/lib/foobara/model_plumbing.rb +9 -3
- data/projects/typesystem/projects/builtin_types/lib/foobara/builtin_types.rb +15 -5
- data/projects/typesystem/projects/model/src/model.rb +8 -0
- data/projects/typesystem/projects/project/src/foobara.rb +1 -0
- data/projects/typesystem/projects/project/src/project.rb +5 -0
- data/projects/typesystem/projects/type_declarations/lib/foobara/type_declarations.rb +3 -1
- data/projects/typesystem/projects/types/src/type.rb +33 -0
- data/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: 04c4c1c2b88c8befc26c9ed08e850e010bb07e97f126773c3db61d31799f3ed8
|
|
4
|
+
data.tar.gz: c6cfb288ca413631625d80e489df9fc84da63152b729ab5d9f628a803ba6b315
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 18b26e0c72a8dbfd28deb33b2823305809c587fc561d0647c469e3bcb2b9f43fa53305620f5be7a7652507dc498ae15c4ff39a929b889570b19d08679e154e1f
|
|
7
|
+
data.tar.gz: f1ae64e07a098047c43868eb9b7242daf34dae2b5aa763b61d452e14013a23e1bb3bf8c0dfc4f85f968ebaab11c319cf0b4d38fda3e1d98e6417414890836dd8
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
# [0.7.4] - 2026-10-20
|
|
2
|
+
|
|
3
|
+
- Provide a way to register new namespaces to be reset in test suites.
|
|
4
|
+
Just a tiny tweak that gives a way to fix some busted external test suites.
|
|
5
|
+
|
|
6
|
+
# [0.7.3] - 2026-10-10
|
|
7
|
+
|
|
8
|
+
- More aggressively hunt down and fix types with unregistered base types
|
|
9
|
+
- Add a Project#reset_completed to take action after a .reset_alls in test suites
|
|
10
|
+
|
|
1
11
|
# [0.7.2] - 2026-10-10
|
|
2
12
|
|
|
3
13
|
- Add `Foobara.start!` to allow post-install commands to survive reset
|
|
@@ -49,12 +49,16 @@ module Foobara
|
|
|
49
49
|
@full_command_symbol ||= Util.underscore_sym(full_command_name)
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
def handle_reregistered_types!
|
|
52
|
+
def handle_reregistered_types!(seen)
|
|
53
|
+
seen << self
|
|
54
|
+
|
|
53
55
|
if inputs_type
|
|
56
|
+
inputs_type.handle_reregistered_types!(seen) unless seen.include?(inputs_type)
|
|
54
57
|
inputs inputs_type.reference_or_declaration_data
|
|
55
58
|
end
|
|
56
59
|
|
|
57
60
|
if result_type
|
|
61
|
+
result_type.handle_reregistered_types!(seen) unless seen.include?(result_type)
|
|
58
62
|
result result_type.reference_or_declaration_data
|
|
59
63
|
end
|
|
60
64
|
|
|
@@ -3,11 +3,17 @@ module Foobara
|
|
|
3
3
|
class << self
|
|
4
4
|
def install!
|
|
5
5
|
Model.on_reregister do
|
|
6
|
-
|
|
6
|
+
seen = Set.new
|
|
7
|
+
|
|
8
|
+
Namespace.global.foobara_each do |scoped|
|
|
9
|
+
if scoped.respond_to?(:handle_reregistered_types!)
|
|
10
|
+
scoped.handle_reregistered_types!(seen)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
7
13
|
end
|
|
8
14
|
|
|
9
|
-
CommandPatternImplementation.include
|
|
10
|
-
|
|
15
|
+
CommandPatternImplementation.include CommandPatternImplementation::Concerns::ModelInputsType
|
|
16
|
+
DomainMapper.singleton_class.prepend(ModelPlumbing::DomainMapperExtension)
|
|
11
17
|
end
|
|
12
18
|
end
|
|
13
19
|
end
|
|
@@ -62,11 +62,6 @@ module Foobara
|
|
|
62
62
|
associative_array = build_and_register!(:associative_array, duckture, ::Hash)
|
|
63
63
|
# TODO: uh oh... we do some translations in the casting here...
|
|
64
64
|
build_and_register!(:attributes, associative_array, nil)
|
|
65
|
-
|
|
66
|
-
if needs_to_handle_reregistered_types
|
|
67
|
-
GlobalDomain.foobara_each_command(&:handle_reregistered_types!)
|
|
68
|
-
self.needs_to_handle_reregistered_types = false
|
|
69
|
-
end
|
|
70
65
|
end
|
|
71
66
|
|
|
72
67
|
def reset_all
|
|
@@ -84,6 +79,21 @@ module Foobara
|
|
|
84
79
|
|
|
85
80
|
install!
|
|
86
81
|
end
|
|
82
|
+
|
|
83
|
+
def reset_completed
|
|
84
|
+
if needs_to_handle_reregistered_types
|
|
85
|
+
seen = Set.new
|
|
86
|
+
|
|
87
|
+
Namespace.global.foobara_each do |scoped|
|
|
88
|
+
if scoped.respond_to?(:handle_reregistered_types!)
|
|
89
|
+
scoped.handle_reregistered_types!(seen)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
self.needs_to_handle_reregistered_types = false
|
|
94
|
+
Namespace.clear_lru_cache!
|
|
95
|
+
end
|
|
96
|
+
end
|
|
87
97
|
end
|
|
88
98
|
end
|
|
89
99
|
end
|
|
@@ -163,6 +163,14 @@ module Foobara
|
|
|
163
163
|
end
|
|
164
164
|
end
|
|
165
165
|
|
|
166
|
+
def handle_reregistered_types!(seen)
|
|
167
|
+
seen << self
|
|
168
|
+
|
|
169
|
+
if instance_variable_defined?(:@attributes_type)
|
|
170
|
+
remove_instance_variable(:@attributes_type)
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
166
174
|
# Why aren't we using the callbacks project for this?
|
|
167
175
|
def on_reregister(&block)
|
|
168
176
|
@on_reregister ||= []
|
|
@@ -139,6 +139,7 @@ module Foobara
|
|
|
139
139
|
end
|
|
140
140
|
|
|
141
141
|
def start! = capture_current_namespaces
|
|
142
|
+
def add_namespace_to_reset(namespace) = namespaces_to_reset << namespace
|
|
142
143
|
|
|
143
144
|
private
|
|
144
145
|
|
|
@@ -156,8 +157,9 @@ module Foobara
|
|
|
156
157
|
end
|
|
157
158
|
end
|
|
158
159
|
|
|
160
|
+
# Is this really the right place to put this??
|
|
159
161
|
def namespaces_to_reset
|
|
160
|
-
[
|
|
162
|
+
@namespaces_to_reset ||= [
|
|
161
163
|
Foobara::GlobalDomain,
|
|
162
164
|
Foobara::GlobalOrganization,
|
|
163
165
|
Value::Processor,
|
|
@@ -549,6 +549,39 @@ module Foobara
|
|
|
549
549
|
!!type_symbol
|
|
550
550
|
end
|
|
551
551
|
|
|
552
|
+
def handle_reregistered_types!(seen)
|
|
553
|
+
seen << self
|
|
554
|
+
|
|
555
|
+
if base_type&.scoped_unregistered?
|
|
556
|
+
self.base_type = base_type.created_in_namespace.foobara_lookup_type!(
|
|
557
|
+
base_type.type_symbol
|
|
558
|
+
)
|
|
559
|
+
end
|
|
560
|
+
|
|
561
|
+
if target_classes.size == 1 && target_class.respond_to?(:handle_reregistered_types!)
|
|
562
|
+
unless seen.include?(target_class)
|
|
563
|
+
target_class.handle_reregistered_types!(seen)
|
|
564
|
+
end
|
|
565
|
+
end
|
|
566
|
+
|
|
567
|
+
case element_types
|
|
568
|
+
when Hash
|
|
569
|
+
element_types.each_value do |child|
|
|
570
|
+
child.handle_reregistered_types!(seen) unless seen.include?(child)
|
|
571
|
+
end
|
|
572
|
+
when Array
|
|
573
|
+
element_types.each do |child|
|
|
574
|
+
child.handle_reregistered_types!(seen) unless seen.include?(child)
|
|
575
|
+
end
|
|
576
|
+
when Type
|
|
577
|
+
element_types.handle_reregistered_types!(seen) unless seen.include?(element_types)
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
if element_type
|
|
581
|
+
element_type.handle_reregistered_types!(seen) unless seen.include?(element_type)
|
|
582
|
+
end
|
|
583
|
+
end
|
|
584
|
+
|
|
552
585
|
private
|
|
553
586
|
|
|
554
587
|
def apply_all_processors_needing_type!
|
data/version.rb
CHANGED