lutaml 0.10.15 → 0.10.17
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/.rubocop_todo.yml +7 -62
- data/CLAUDE.md +38 -0
- data/lib/lutaml/cli/interactive_shell/help_display.rb +37 -35
- data/lib/lutaml/cli/uml/build_command.rb +152 -218
- data/lib/lutaml/cli/uml/diagram_command.rb +242 -258
- data/lib/lutaml/formatter/graphviz.rb +15 -11
- data/lib/lutaml/qea/database.rb +76 -287
- data/lib/lutaml/uml/model_helpers.rb +21 -0
- data/lib/lutaml/uml_repository/index_builders/association_index.rb +1 -1
- data/lib/lutaml/uml_repository/package_loader.rb +5 -2
- data/lib/lutaml/uml_repository/presenters/enum_presenter.rb +1 -1
- data/lib/lutaml/uml_repository/queries/search_query.rb +114 -277
- data/lib/lutaml/uml_repository/repository.rb +21 -35
- data/lib/lutaml/uml_repository/repository_enhanced.rb +15 -27
- data/lib/lutaml/uml_repository/static_site/association_serialization.rb +11 -23
- data/lib/lutaml/uml_repository/static_site/data_transformer.rb +0 -14
- data/lib/lutaml/uml_repository/static_site/generator.rb +20 -36
- data/lib/lutaml/uml_repository/static_site/serializers/attribute_serializer.rb +0 -14
- data/lib/lutaml/uml_repository/static_site/serializers/class_serializer.rb +0 -14
- data/lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb +13 -21
- data/lib/lutaml/uml_repository/static_site/serializers/package_serializer.rb +0 -16
- data/lib/lutaml/uml_repository/validators/repository_validator.rb +36 -51
- data/lib/lutaml/version.rb +1 -1
- data/lib/lutaml/xmi/liquid_drops/klass_drop.rb +15 -13
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 330cf6a6d4021d51bfb8ee166e4f6dce5697ed5fff82cdc6043a6d304d7e853d
|
|
4
|
+
data.tar.gz: 4bd730f3e5a2ae0427d2157bb862788ddd516280d86b9f791ec3e46473710dac
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b1cf1135be7d630644fbf782c1070231a54c0c3341b8c1be7c688a4d3c29d2aa34c26ef900f056c8d50f9c10b674e0470d46646de49b5386de51896e45a79ee3
|
|
7
|
+
data.tar.gz: 5b716ba1f4bd818a81f7fd54567add05c1ed0682fb407379db5d086fc8c636586e5a162480b821a23be4977d31ebe986be61531851faad122ddf0c74785bd59c
|
data/.rubocop_todo.yml
CHANGED
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
# This configuration was generated by
|
|
2
|
-
# `rubocop --auto-gen-config`
|
|
3
|
-
# on 2026-05-13
|
|
2
|
+
# `rubocop --auto-gen-config --no-offense-counts`
|
|
3
|
+
# on 2026-05-13 08:26:11 UTC using RuboCop version 1.86.1.
|
|
4
4
|
# The point is for the user to remove these configuration records
|
|
5
5
|
# one by one as the offenses are removed from the code base.
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
|
8
8
|
|
|
9
|
-
# Offense count: 155
|
|
10
9
|
# This cop supports safe autocorrection (--autocorrect).
|
|
11
10
|
# Configuration parameters: Max, AllowHeredoc, AllowURI, AllowQualifiedName, URISchemes, AllowRBSInlineAnnotation, AllowCopDirectives, AllowedPatterns, SplitStrings.
|
|
12
11
|
# URISchemes: http, https
|
|
13
12
|
Layout/LineLength:
|
|
14
13
|
Enabled: false
|
|
15
14
|
|
|
16
|
-
# Offense count: 1
|
|
17
15
|
Lint/BinaryOperatorWithIdenticalOperands:
|
|
18
16
|
Exclude:
|
|
19
17
|
- 'spec/lutaml/qea/lookup_tables_spec.rb'
|
|
20
18
|
|
|
21
|
-
# Offense count: 15
|
|
22
19
|
# Configuration parameters: AllowedMethods.
|
|
23
20
|
# AllowedMethods: enums
|
|
24
21
|
Lint/ConstantDefinitionInBlock:
|
|
@@ -29,14 +26,12 @@ Lint/ConstantDefinitionInBlock:
|
|
|
29
26
|
- 'spec/lutaml/model_transformations_spec.rb'
|
|
30
27
|
- 'spec/lutaml/uml_repository/presenters/presenter_factory_spec.rb'
|
|
31
28
|
|
|
32
|
-
# Offense count: 2
|
|
33
29
|
# Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches, IgnoreDuplicateElseBranch.
|
|
34
30
|
Lint/DuplicateBranch:
|
|
35
31
|
Exclude:
|
|
36
32
|
- 'lib/lutaml/uml/model_helpers.rb'
|
|
37
33
|
- 'lib/lutaml/uml_repository/queries/package_query.rb'
|
|
38
34
|
|
|
39
|
-
# Offense count: 4
|
|
40
35
|
# Configuration parameters: AllowComments, AllowEmptyLambdas.
|
|
41
36
|
Lint/EmptyBlock:
|
|
42
37
|
Exclude:
|
|
@@ -45,7 +40,6 @@ Lint/EmptyBlock:
|
|
|
45
40
|
- 'spec/lutaml/uml_repository/package_exporter_spec.rb'
|
|
46
41
|
- 'spec/lutaml/uml_repository/repository_spec.rb'
|
|
47
42
|
|
|
48
|
-
# Offense count: 3
|
|
49
43
|
# This cop supports safe autocorrection (--autocorrect).
|
|
50
44
|
# Configuration parameters: AllowComments.
|
|
51
45
|
Lint/EmptyConditionalBody:
|
|
@@ -53,18 +47,15 @@ Lint/EmptyConditionalBody:
|
|
|
53
47
|
- 'spec/integration/qea_xmi_equivalency_spec.rb'
|
|
54
48
|
- 'spec/lutaml/qea/verification/equivalence_integration_spec.rb'
|
|
55
49
|
|
|
56
|
-
# Offense count: 4
|
|
57
50
|
Lint/IneffectiveAccessModifier:
|
|
58
51
|
Exclude:
|
|
59
52
|
- 'lib/lutaml/uml_repository/repository_enhanced.rb'
|
|
60
53
|
|
|
61
|
-
# Offense count: 1
|
|
62
54
|
# Configuration parameters: AllowedParentClasses.
|
|
63
55
|
Lint/MissingSuper:
|
|
64
56
|
Exclude:
|
|
65
57
|
- 'lib/lutaml/uml_repository/lazy_repository.rb'
|
|
66
58
|
|
|
67
|
-
# Offense count: 1
|
|
68
59
|
# This cop supports safe autocorrection (--autocorrect).
|
|
69
60
|
# Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods, NotImplementedExceptions.
|
|
70
61
|
# NotImplementedExceptions: NotImplementedError
|
|
@@ -72,24 +63,24 @@ Lint/UnusedMethodArgument:
|
|
|
72
63
|
Exclude:
|
|
73
64
|
- 'lib/lutaml/cli/uml/export_command.rb'
|
|
74
65
|
|
|
75
|
-
# Offense count: 3
|
|
76
66
|
Lint/UselessConstantScoping:
|
|
77
67
|
Exclude:
|
|
78
68
|
- 'lib/lutaml/cli/interactive_shell.rb'
|
|
69
|
+
- 'lib/lutaml/cli/uml/diagram_command.rb'
|
|
79
70
|
- 'lib/lutaml/qea/factory/ea_to_uml_factory.rb'
|
|
71
|
+
- 'lib/lutaml/uml_repository/static_site/generator.rb'
|
|
72
|
+
- 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb'
|
|
80
73
|
|
|
81
|
-
# Offense count: 8
|
|
82
74
|
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
|
|
83
75
|
Metrics/AbcSize:
|
|
84
76
|
Exclude:
|
|
85
77
|
- 'lib/lutaml/cli/interactive_shell/query_commands.rb'
|
|
78
|
+
- 'lib/lutaml/cli/uml/diagram_command.rb'
|
|
86
79
|
- 'lib/lutaml/qea/factory/generalization_builder.rb'
|
|
87
80
|
- 'lib/lutaml/uml_repository/exporters/markdown/class_page_builder.rb'
|
|
88
81
|
- 'lib/lutaml/uml_repository/queries/search_query.rb'
|
|
89
82
|
- 'lib/lutaml/uml_repository/static_site/serializers/class_serializer.rb'
|
|
90
|
-
- 'lib/lutaml/xmi/liquid_drops/klass_drop.rb'
|
|
91
83
|
|
|
92
|
-
# Offense count: 4
|
|
93
84
|
# Configuration parameters: AllowedMethods, AllowedPatterns, Max.
|
|
94
85
|
Metrics/CyclomaticComplexity:
|
|
95
86
|
Exclude:
|
|
@@ -98,24 +89,20 @@ Metrics/CyclomaticComplexity:
|
|
|
98
89
|
- 'lib/lutaml/uml_repository/queries/search_query.rb'
|
|
99
90
|
- 'lib/lutaml/uml_repository/static_site/serializers/class_serializer.rb'
|
|
100
91
|
|
|
101
|
-
# Offense count: 48
|
|
102
92
|
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
|
|
103
93
|
Metrics/MethodLength:
|
|
104
|
-
Max:
|
|
94
|
+
Max: 17
|
|
105
95
|
|
|
106
|
-
# Offense count: 4
|
|
107
96
|
# Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
|
|
108
97
|
Metrics/ParameterLists:
|
|
109
98
|
Max: 7
|
|
110
99
|
|
|
111
|
-
# Offense count: 2
|
|
112
100
|
# Configuration parameters: AllowedMethods, AllowedPatterns, Max.
|
|
113
101
|
Metrics/PerceivedComplexity:
|
|
114
102
|
Exclude:
|
|
115
103
|
- 'lib/lutaml/qea/factory/ea_to_uml_factory.rb'
|
|
116
104
|
- 'lib/lutaml/uml_repository/static_site/serializers/class_serializer.rb'
|
|
117
105
|
|
|
118
|
-
# Offense count: 3
|
|
119
106
|
# Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
|
|
120
107
|
# AllowedNames: as, at, by, cc, db, id, if, in, io, ip, of, on, os, pp, to
|
|
121
108
|
Naming/MethodParameterName:
|
|
@@ -124,7 +111,6 @@ Naming/MethodParameterName:
|
|
|
124
111
|
- 'lib/lutaml/uml_repository/static_site/generator.rb'
|
|
125
112
|
- 'spec/lutaml/parsers/serialize_xmi_to_liquid_spec.rb'
|
|
126
113
|
|
|
127
|
-
# Offense count: 3
|
|
128
114
|
# Configuration parameters: Mode, AllowedMethods, AllowedPatterns, AllowBangMethods, WaywardPredicates.
|
|
129
115
|
# AllowedMethods: call
|
|
130
116
|
# WaywardPredicates: infinite?, nonzero?
|
|
@@ -133,30 +119,25 @@ Naming/PredicateMethod:
|
|
|
133
119
|
- 'lib/lutaml/qea/factory/document_builder.rb'
|
|
134
120
|
- 'spec/lutaml/xmi/liquid_drops/nil_safety_spec.rb'
|
|
135
121
|
|
|
136
|
-
# Offense count: 2
|
|
137
122
|
# Configuration parameters: MinSize.
|
|
138
123
|
Performance/CollectionLiteralInLoop:
|
|
139
124
|
Exclude:
|
|
140
125
|
- 'spec/lutaml/qea/infrastructure/table_reader_spec.rb'
|
|
141
126
|
- 'spec/lutaml/uml_repository/index_builder_spec.rb'
|
|
142
127
|
|
|
143
|
-
# Offense count: 2
|
|
144
128
|
Performance/MapMethodChain:
|
|
145
129
|
Exclude:
|
|
146
130
|
- 'lib/lutaml/cli/output_formatter.rb'
|
|
147
131
|
- 'lib/lutaml/qea/models/ea_diagram_link.rb'
|
|
148
132
|
|
|
149
|
-
# Offense count: 5
|
|
150
133
|
RSpec/AnyInstance:
|
|
151
134
|
Exclude:
|
|
152
135
|
- 'spec/lutaml/uml_repository/static_site/generator_spec.rb'
|
|
153
136
|
|
|
154
|
-
# Offense count: 1
|
|
155
137
|
RSpec/BeforeAfterAll:
|
|
156
138
|
Exclude:
|
|
157
139
|
- 'spec/lutaml/qea/verification/comprehensive_equivalence_spec.rb'
|
|
158
140
|
|
|
159
|
-
# Offense count: 24
|
|
160
141
|
# Configuration parameters: Prefixes, AllowedPatterns.
|
|
161
142
|
# Prefixes: when, with, without
|
|
162
143
|
RSpec/ContextWording:
|
|
@@ -174,42 +155,35 @@ RSpec/ContextWording:
|
|
|
174
155
|
- 'spec/lutaml/qea/integration/full_parsing_spec.rb'
|
|
175
156
|
- 'spec/lutaml/xml/parsers/xml_spec.rb'
|
|
176
157
|
|
|
177
|
-
# Offense count: 22
|
|
178
158
|
# Configuration parameters: IgnoredMetadata.
|
|
179
159
|
RSpec/DescribeClass:
|
|
180
160
|
Enabled: false
|
|
181
161
|
|
|
182
|
-
# Offense count: 649
|
|
183
162
|
# Configuration parameters: CountAsOne.
|
|
184
163
|
RSpec/ExampleLength:
|
|
185
164
|
Max: 30
|
|
186
165
|
|
|
187
|
-
# Offense count: 7
|
|
188
166
|
# This cop supports safe autocorrection (--autocorrect).
|
|
189
167
|
RSpec/ExpectActual:
|
|
190
168
|
Exclude:
|
|
191
169
|
- 'spec/lutaml/qea/diagram_support_spec.rb'
|
|
192
170
|
- 'spec/lutaml/qea/services/configuration_spec.rb'
|
|
193
171
|
|
|
194
|
-
# Offense count: 1
|
|
195
172
|
RSpec/ExpectInLet:
|
|
196
173
|
Exclude:
|
|
197
174
|
- 'spec/lutaml/ea/diagram/svg_accuracy_spec.rb'
|
|
198
175
|
|
|
199
|
-
# Offense count: 90
|
|
200
176
|
RSpec/ExpectOutput:
|
|
201
177
|
Exclude:
|
|
202
178
|
- 'spec/lutaml/cli/interactive_shell_spec.rb'
|
|
203
179
|
- 'spec/lutaml/cli/package_commands_spec.rb'
|
|
204
180
|
|
|
205
|
-
# Offense count: 5
|
|
206
181
|
# Configuration parameters: Max, AllowedIdentifiers, AllowedPatterns.
|
|
207
182
|
RSpec/IndexedLet:
|
|
208
183
|
Exclude:
|
|
209
184
|
- 'spec/lutaml/qea/repositories/base_repository_spec.rb'
|
|
210
185
|
- 'spec/lutaml/qea/repositories/object_repository_spec.rb'
|
|
211
186
|
|
|
212
|
-
# Offense count: 15
|
|
213
187
|
RSpec/LeakyConstantDeclaration:
|
|
214
188
|
Exclude:
|
|
215
189
|
- 'spec/lutaml/model_transformations/format_registry_spec.rb'
|
|
@@ -218,12 +192,10 @@ RSpec/LeakyConstantDeclaration:
|
|
|
218
192
|
- 'spec/lutaml/model_transformations_spec.rb'
|
|
219
193
|
- 'spec/lutaml/uml_repository/presenters/presenter_factory_spec.rb'
|
|
220
194
|
|
|
221
|
-
# Offense count: 1
|
|
222
195
|
RSpec/LeakyLocalVariable:
|
|
223
196
|
Exclude:
|
|
224
197
|
- 'spec/lutaml/ea/diagram/svg_accuracy_spec.rb'
|
|
225
198
|
|
|
226
|
-
# Offense count: 11
|
|
227
199
|
# Configuration parameters: EnforcedStyle.
|
|
228
200
|
# SupportedStyles: have_received, receive
|
|
229
201
|
RSpec/MessageSpies:
|
|
@@ -233,21 +205,17 @@ RSpec/MessageSpies:
|
|
|
233
205
|
- 'spec/lutaml/uml_repository/presenters/diagram_presenter_spec.rb'
|
|
234
206
|
- 'spec/lutaml/uml_repository/repository_spec.rb'
|
|
235
207
|
|
|
236
|
-
# Offense count: 39
|
|
237
208
|
RSpec/MultipleExpectations:
|
|
238
209
|
Max: 7
|
|
239
210
|
|
|
240
|
-
# Offense count: 149
|
|
241
211
|
# Configuration parameters: AllowSubject.
|
|
242
212
|
RSpec/MultipleMemoizedHelpers:
|
|
243
213
|
Max: 11
|
|
244
214
|
|
|
245
|
-
# Offense count: 33
|
|
246
215
|
# Configuration parameters: AllowedGroups.
|
|
247
216
|
RSpec/NestedGroups:
|
|
248
217
|
Max: 4
|
|
249
218
|
|
|
250
|
-
# Offense count: 2
|
|
251
219
|
# Configuration parameters: AllowedPatterns.
|
|
252
220
|
# AllowedPatterns: ^expect_, ^assert_
|
|
253
221
|
RSpec/NoExpectationExample:
|
|
@@ -255,7 +223,6 @@ RSpec/NoExpectationExample:
|
|
|
255
223
|
- 'spec/lutaml/qea/verification/comprehensive_equivalence_spec.rb'
|
|
256
224
|
- 'spec/lutaml/uml_repository/static_site/generator_spec.rb'
|
|
257
225
|
|
|
258
|
-
# Offense count: 12
|
|
259
226
|
RSpec/RepeatedExample:
|
|
260
227
|
Exclude:
|
|
261
228
|
- 'spec/lutaml/cli/package_commands_spec.rb'
|
|
@@ -263,12 +230,10 @@ RSpec/RepeatedExample:
|
|
|
263
230
|
- 'spec/lutaml/qea/validation/validation_engine_spec.rb'
|
|
264
231
|
- 'spec/lutaml/uml_repository/static_site/data_transformer_spec.rb'
|
|
265
232
|
|
|
266
|
-
# Offense count: 2
|
|
267
233
|
RSpec/RepeatedExampleGroupDescription:
|
|
268
234
|
Exclude:
|
|
269
235
|
- 'spec/lutaml/uml/parsers/dsl_spec.rb'
|
|
270
236
|
|
|
271
|
-
# Offense count: 4
|
|
272
237
|
# Configuration parameters: CustomTransform, IgnoreMethods, IgnoreMetadata, InflectorPath, EnforcedInflector.
|
|
273
238
|
# SupportedInflectors: default, active_support
|
|
274
239
|
RSpec/SpecFilePathFormat:
|
|
@@ -278,40 +243,20 @@ RSpec/SpecFilePathFormat:
|
|
|
278
243
|
- 'spec/lutaml/parsers/serialize_xmi_to_liquid_spec.rb'
|
|
279
244
|
- 'spec/lutaml/uml_repository/web_ui/app_spec.rb'
|
|
280
245
|
|
|
281
|
-
# Offense count: 3
|
|
282
|
-
Security/Eval:
|
|
283
|
-
Exclude:
|
|
284
|
-
- 'spec/lutaml/cli/uml/search_command_spec.rb'
|
|
285
|
-
|
|
286
|
-
# Offense count: 2
|
|
287
246
|
Security/MarshalLoad:
|
|
288
247
|
Exclude:
|
|
289
248
|
- 'lib/lutaml/uml_repository/package_loader.rb'
|
|
290
249
|
|
|
291
|
-
# Offense count: 2
|
|
292
250
|
# This cop supports safe autocorrection (--autocorrect).
|
|
293
251
|
Style/ComparableClamp:
|
|
294
252
|
Exclude:
|
|
295
253
|
- 'lib/lutaml/cli/enhanced_formatter.rb'
|
|
296
254
|
|
|
297
|
-
# Offense count: 2
|
|
298
|
-
Style/DocumentDynamicEvalDefinition:
|
|
299
|
-
Exclude:
|
|
300
|
-
- 'spec/lutaml/cli/uml/search_command_spec.rb'
|
|
301
|
-
|
|
302
|
-
# Offense count: 2
|
|
303
|
-
# This cop supports safe autocorrection (--autocorrect).
|
|
304
|
-
Style/EvalWithLocation:
|
|
305
|
-
Exclude:
|
|
306
|
-
- 'spec/lutaml/cli/uml/search_command_spec.rb'
|
|
307
|
-
|
|
308
|
-
# Offense count: 1
|
|
309
255
|
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
310
256
|
Style/PartitionInsteadOfDoubleSelect:
|
|
311
257
|
Exclude:
|
|
312
258
|
- 'lib/lutaml/qea/factory/generalization_builder.rb'
|
|
313
259
|
|
|
314
|
-
# Offense count: 3
|
|
315
260
|
# Configuration parameters: Max.
|
|
316
261
|
Style/SafeNavigationChainLength:
|
|
317
262
|
Exclude:
|
data/CLAUDE.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# CLAUDE.md — Lutaml Project
|
|
2
|
+
|
|
3
|
+
## Project Overview
|
|
4
|
+
Lutaml is a Ruby gem for parsing and transforming UML models from multiple formats (XMI, QEA/EA, DSL). It provides a CLI, interactive shell, static site generator, web UI, and model transformation pipeline.
|
|
5
|
+
|
|
6
|
+
## Testing Constraints
|
|
7
|
+
|
|
8
|
+
**CRITICAL: Do NOT run the full test suite at once.** It will crash due to memory. Run targeted subsets:
|
|
9
|
+
- `bundle exec rspec spec/lutaml/cli/` — CLI specs
|
|
10
|
+
- `bundle exec rspec spec/lutaml/qea/` — QEA parser specs
|
|
11
|
+
- `bundle exec rspec spec/lutaml/uml_repository/` — UML repository specs
|
|
12
|
+
- `bundle exec rspec spec/lutaml/uml/` — UML model specs
|
|
13
|
+
- `bundle exec rspec spec/lutaml/parsers/` — Parser specs
|
|
14
|
+
- `bundle exec rspec spec/lutaml/formatter/` — Formatter specs
|
|
15
|
+
- Combine at most 2-3 suites at a time for targeted verification.
|
|
16
|
+
|
|
17
|
+
## Code Quality Rules
|
|
18
|
+
- Never use `send` (breaks encapsulation). Use `public_send` only when dynamic dispatch is truly necessary.
|
|
19
|
+
- Never use `respond_to?` (poor typing). Use `is_a?` for type checks.
|
|
20
|
+
- Extract god methods into focused helpers.
|
|
21
|
+
- Keep files under ~300 lines. Extract into modules/classes when growing.
|
|
22
|
+
- DRY: consolidate duplicated patterns (especially `format_definition`, index building, metadata construction).
|
|
23
|
+
- Never commit TODO tracking files to git.
|
|
24
|
+
|
|
25
|
+
## Architecture
|
|
26
|
+
- `lib/lutaml/uml/` — UML domain models (Class, Association, Package, etc.)
|
|
27
|
+
- `lib/lutaml/uml_repository/` — Repository pattern over UML documents (queries, presenters, exporters, SPA)
|
|
28
|
+
- `lib/lutaml/qea/` — EA .qea SQLite parser and factory
|
|
29
|
+
- `lib/lutaml/xmi/` — XMI XML parsing
|
|
30
|
+
- `lib/lutaml/converter/` — Format converters (XMI→UML, DSL→UML)
|
|
31
|
+
- `lib/lutaml/cli/` — Thor CLI commands
|
|
32
|
+
- `lib/lutaml/model_transformations/` — Format-agnostic transformation pipeline
|
|
33
|
+
- `lib/lutaml/ea/` — EA diagram SVG rendering
|
|
34
|
+
|
|
35
|
+
## CI Notes
|
|
36
|
+
- Ignore Ruby 3.4 ubuntu failures (performance-related, not code issues)
|
|
37
|
+
- Ignore macOS job slowness (GitHub Actions is slow for macOS)
|
|
38
|
+
- Windows tempfile Permission denied errors are pre-existing flakiness
|
|
@@ -60,42 +60,44 @@ module Lutaml
|
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
|
|
63
|
+
HELP_TEXT = <<~HELP
|
|
64
|
+
Available Commands:
|
|
65
|
+
|
|
66
|
+
Navigation:
|
|
67
|
+
cd PATH Change to package path
|
|
68
|
+
pwd Print current path
|
|
69
|
+
ls [PATH] List packages
|
|
70
|
+
tree [PATH] Show package tree
|
|
71
|
+
up Go to parent package
|
|
72
|
+
root Go to ModelRoot
|
|
73
|
+
back Go to previous location
|
|
74
|
+
|
|
75
|
+
Query:
|
|
76
|
+
find CLASS Find class (fuzzy search)
|
|
77
|
+
show class QNAME Show class details
|
|
78
|
+
show package PATH Show package details
|
|
79
|
+
show NUMBER Show numbered result
|
|
80
|
+
search QUERY Full-text search
|
|
81
|
+
? QUERY Alias for search
|
|
82
|
+
|
|
83
|
+
Bookmarks:
|
|
84
|
+
bookmark add NAME Bookmark current location
|
|
85
|
+
bookmark list List bookmarks
|
|
86
|
+
bookmark go NAME Jump to bookmark
|
|
87
|
+
bookmark rm NAME Remove bookmark
|
|
88
|
+
bm NAME Quick jump
|
|
89
|
+
|
|
90
|
+
Utilities:
|
|
91
|
+
help [COMMAND] Show help
|
|
92
|
+
history Show command history
|
|
93
|
+
clear Clear screen
|
|
94
|
+
config Show configuration
|
|
95
|
+
stats Show statistics
|
|
96
|
+
exit, quit, q Exit shell
|
|
97
|
+
HELP
|
|
98
|
+
|
|
63
99
|
def display_general_help
|
|
64
|
-
puts
|
|
65
|
-
#{OutputFormatter.colorize('Available Commands:', :cyan)}
|
|
66
|
-
|
|
67
|
-
#{OutputFormatter.colorize('Navigation:', :yellow)}
|
|
68
|
-
cd PATH Change to package path
|
|
69
|
-
pwd Print current path
|
|
70
|
-
ls [PATH] List packages
|
|
71
|
-
tree [PATH] Show package tree
|
|
72
|
-
up Go to parent package
|
|
73
|
-
root Go to ModelRoot
|
|
74
|
-
back Go to previous location
|
|
75
|
-
|
|
76
|
-
#{OutputFormatter.colorize('Query:', :yellow)}
|
|
77
|
-
find CLASS Find class (fuzzy search)
|
|
78
|
-
show class QNAME Show class details
|
|
79
|
-
show package PATH Show package details
|
|
80
|
-
show NUMBER Show numbered result
|
|
81
|
-
search QUERY Full-text search
|
|
82
|
-
? QUERY Alias for search
|
|
83
|
-
|
|
84
|
-
#{OutputFormatter.colorize('Bookmarks:', :yellow)}
|
|
85
|
-
bookmark add NAME Bookmark current location
|
|
86
|
-
bookmark list List bookmarks
|
|
87
|
-
bookmark go NAME Jump to bookmark
|
|
88
|
-
bookmark rm NAME Remove bookmark
|
|
89
|
-
bm NAME Quick jump
|
|
90
|
-
|
|
91
|
-
#{OutputFormatter.colorize('Utilities:', :yellow)}
|
|
92
|
-
help [COMMAND] Show help
|
|
93
|
-
history Show command history
|
|
94
|
-
clear Clear screen
|
|
95
|
-
config Show configuration
|
|
96
|
-
stats Show statistics
|
|
97
|
-
exit, quit, q Exit shell
|
|
98
|
-
HELP
|
|
100
|
+
puts OutputFormatter.colorize(HELP_TEXT, :cyan)
|
|
99
101
|
end
|
|
100
102
|
|
|
101
103
|
def display_command_help(command)
|