expressir 2.1.29 → 2.1.31

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 (111) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docs.yml +98 -0
  3. data/.github/workflows/links.yml +100 -0
  4. data/.github/workflows/rake.yml +4 -0
  5. data/.github/workflows/release.yml +5 -0
  6. data/.github/workflows/validate_schemas.yml +1 -1
  7. data/.gitignore +3 -0
  8. data/.rubocop.yml +1 -1
  9. data/.rubocop_todo.yml +209 -55
  10. data/Gemfile +2 -1
  11. data/README.adoc +650 -83
  12. data/docs/Gemfile +12 -0
  13. data/docs/_config.yml +141 -0
  14. data/docs/_guides/changes/changes-format.adoc +778 -0
  15. data/docs/_guides/changes/importing-eengine.adoc +898 -0
  16. data/docs/_guides/changes/index.adoc +396 -0
  17. data/docs/_guides/changes/programmatic-usage.adoc +1038 -0
  18. data/docs/_guides/changes/validating-changes.adoc +681 -0
  19. data/docs/_guides/cli/benchmark-performance.adoc +834 -0
  20. data/docs/_guides/cli/coverage-analysis.adoc +921 -0
  21. data/docs/_guides/cli/format-schemas.adoc +547 -0
  22. data/docs/_guides/cli/index.adoc +8 -0
  23. data/docs/_guides/cli/managing-changes.adoc +927 -0
  24. data/docs/_guides/cli/validate-ascii.adoc +645 -0
  25. data/docs/_guides/cli/validate-schemas.adoc +534 -0
  26. data/docs/_guides/index.adoc +165 -0
  27. data/docs/_guides/ler/creating-packages.adoc +664 -0
  28. data/docs/_guides/ler/index.adoc +305 -0
  29. data/docs/_guides/ler/loading-packages.adoc +707 -0
  30. data/docs/_guides/ler/package-formats.adoc +748 -0
  31. data/docs/_guides/ler/querying-packages.adoc +826 -0
  32. data/docs/_guides/ler/validating-packages.adoc +750 -0
  33. data/docs/_guides/liquid/basic-templates.adoc +813 -0
  34. data/docs/_guides/liquid/documentation-generation.adoc +1042 -0
  35. data/docs/_guides/liquid/drops-reference.adoc +829 -0
  36. data/docs/_guides/liquid/filters-and-tags.adoc +912 -0
  37. data/docs/_guides/liquid/index.adoc +468 -0
  38. data/docs/_guides/manifests/creating-manifests.adoc +483 -0
  39. data/docs/_guides/manifests/index.adoc +307 -0
  40. data/docs/_guides/manifests/resolving-manifests.adoc +557 -0
  41. data/docs/_guides/manifests/validating-manifests.adoc +713 -0
  42. data/docs/_guides/ruby-api/formatting-schemas.adoc +605 -0
  43. data/docs/_guides/ruby-api/index.adoc +257 -0
  44. data/docs/_guides/ruby-api/parsing-files.adoc +421 -0
  45. data/docs/_guides/ruby-api/search-engine.adoc +609 -0
  46. data/docs/_guides/ruby-api/working-with-repository.adoc +577 -0
  47. data/docs/_pages/data-model.adoc +665 -0
  48. data/docs/_pages/express-language.adoc +506 -0
  49. data/docs/_pages/getting-started.adoc +414 -0
  50. data/docs/_pages/index.adoc +116 -0
  51. data/docs/_pages/introduction.adoc +256 -0
  52. data/docs/_pages/ler-packages.adoc +837 -0
  53. data/docs/_pages/parsers.adoc +683 -0
  54. data/docs/_pages/schema-manifests.adoc +431 -0
  55. data/docs/_references/index.adoc +228 -0
  56. data/docs/_tutorials/creating-ler-package.adoc +735 -0
  57. data/docs/_tutorials/documentation-coverage.adoc +795 -0
  58. data/docs/_tutorials/index.adoc +221 -0
  59. data/docs/_tutorials/liquid-templates.adoc +806 -0
  60. data/docs/_tutorials/parsing-your-first-schema.adoc +522 -0
  61. data/docs/_tutorials/querying-schemas.adoc +751 -0
  62. data/docs/_tutorials/working-with-multiple-schemas.adoc +676 -0
  63. data/docs/index.adoc +242 -0
  64. data/docs/lychee.toml +84 -0
  65. data/examples/demo_ler_usage.sh +86 -0
  66. data/examples/ler/README.md +111 -0
  67. data/examples/ler/simple_example.ler +0 -0
  68. data/examples/ler/simple_schema.exp +33 -0
  69. data/examples/ler_build.rb +75 -0
  70. data/examples/ler_cli.rb +79 -0
  71. data/examples/ler_demo_complete.rb +276 -0
  72. data/examples/ler_query.rb +91 -0
  73. data/examples/ler_query_examples.rb +305 -0
  74. data/examples/ler_stats.rb +81 -0
  75. data/examples/phase3_demo.rb +159 -0
  76. data/examples/query_demo_simple.rb +131 -0
  77. data/expressir.gemspec +2 -0
  78. data/lib/expressir/changes/schema_change.rb +32 -22
  79. data/lib/expressir/changes/{edition_change.rb → version_change.rb} +3 -3
  80. data/lib/expressir/cli.rb +12 -4
  81. data/lib/expressir/commands/changes_import_eengine.rb +2 -2
  82. data/lib/expressir/commands/changes_validate.rb +1 -1
  83. data/lib/expressir/commands/manifest.rb +427 -0
  84. data/lib/expressir/commands/package.rb +1274 -0
  85. data/lib/expressir/commands/validate.rb +70 -37
  86. data/lib/expressir/commands/validate_ascii.rb +607 -0
  87. data/lib/expressir/commands/validate_load.rb +88 -0
  88. data/lib/expressir/express/formatter.rb +5 -1
  89. data/lib/expressir/express/formatters/remark_item_formatter.rb +25 -0
  90. data/lib/expressir/express/parser.rb +33 -0
  91. data/lib/expressir/manifest/resolver.rb +213 -0
  92. data/lib/expressir/manifest/validator.rb +195 -0
  93. data/lib/expressir/model/declarations/entity.rb +6 -0
  94. data/lib/expressir/model/dependency_resolver.rb +270 -0
  95. data/lib/expressir/model/indexes/entity_index.rb +103 -0
  96. data/lib/expressir/model/indexes/reference_index.rb +148 -0
  97. data/lib/expressir/model/indexes/type_index.rb +149 -0
  98. data/lib/expressir/model/interface_validator.rb +384 -0
  99. data/lib/expressir/model/repository.rb +400 -5
  100. data/lib/expressir/model/repository_validator.rb +295 -0
  101. data/lib/expressir/model/search_engine.rb +525 -0
  102. data/lib/expressir/model.rb +4 -94
  103. data/lib/expressir/package/builder.rb +200 -0
  104. data/lib/expressir/package/metadata.rb +81 -0
  105. data/lib/expressir/package/reader.rb +165 -0
  106. data/lib/expressir/schema_manifest.rb +11 -1
  107. data/lib/expressir/version.rb +1 -1
  108. data/lib/expressir.rb +16 -3
  109. metadata +115 -5
  110. data/docs/benchmarking.adoc +0 -107
  111. data/docs/liquid_drops.adoc +0 -1547
@@ -0,0 +1,307 @@
1
+ ---
2
+ title: Manifest Workflows
3
+ nav_order: 5
4
+ has_children: true
5
+ ---
6
+
7
+ = Schema Manifest Workflows
8
+
9
+ == Purpose
10
+
11
+ This guide provides complete workflows for working with EXPRESS schema manifests, from creation through validation to package building. Manifests are essential for managing complex schema collections and ensuring reproducible builds.
12
+
13
+ == What You'll Learn
14
+
15
+ * How to create manifests from root schemas
16
+ * When to use manifests vs auto-resolution
17
+ * How to resolve missing schema paths
18
+ * Validating manifests for completeness and integrity
19
+ * Building LER packages from manifests
20
+
21
+ == Prerequisites
22
+
23
+ * Expressir installed (see link:../../getting-started.html[Getting Started])
24
+ * Basic understanding of EXPRESS schemas
25
+ * Familiarity with link:../../schema-manifests.html[Schema Manifests]
26
+
27
+ == Complete Workflow
28
+
29
+ The typical manifest workflow consists of these steps:
30
+
31
+ [source]
32
+ ----
33
+ ┌─────────────────────┐
34
+ │ 1. Create Manifest │ ← From root schema(s)
35
+ │ from Root Schema │
36
+ └──────────┬──────────┘
37
+
38
+
39
+ ┌─────────────────────┐
40
+ │ 2. Review Manifest │ ← Check for unresolved schemas
41
+ │ and Edit Paths │
42
+ └──────────┬──────────┘
43
+
44
+
45
+ ┌─────────────────────┐
46
+ │ 3. Resolve Missing │ ← Auto-resolve or manual edit
47
+ │ Schema Paths │
48
+ └──────────┬──────────┘
49
+
50
+
51
+ ┌─────────────────────┐
52
+ │ 4. Validate │ ← Check integrity
53
+ │ Manifest │
54
+ └──────────┬──────────┘
55
+
56
+
57
+ ┌─────────────────────┐
58
+ │ 5. Build LER │ ← Create package
59
+ │ Package │
60
+ └─────────────────────┘
61
+ ----
62
+
63
+ == Quick Start Example
64
+
65
+ Here's a complete example workflow:
66
+
67
+ [source,bash]
68
+ ----
69
+ # Step 1: Create manifest from root schema
70
+ expressir manifest create schemas/activity/mim.exp \
71
+ -o activity_manifest.yaml \
72
+ --base-dirs ~/iso-10303/schemas \
73
+ --verbose
74
+
75
+ # Step 2: Review unresolved schemas in the output
76
+ # Edit activity_manifest.yaml to add missing paths
77
+
78
+ # Step 3: Try auto-resolution for remaining schemas
79
+ expressir manifest resolve activity_manifest.yaml \
80
+ -o resolved_manifest.yaml \
81
+ --verbose
82
+
83
+ # Step 4: Validate the manifest
84
+ expressir manifest validate resolved_manifest.yaml \
85
+ --check-references \
86
+ --verbose
87
+
88
+ # Step 5: Build the package
89
+ expressir package build \
90
+ --manifest resolved_manifest.yaml \
91
+ activity.ler \
92
+ --validate
93
+ ----
94
+
95
+ == When to Use Manifests
96
+
97
+ **Use manifests when:**
98
+
99
+ * Working with 10+ interdependent schemas
100
+ * Schemas are in non-standard locations
101
+ * You need reproducible builds
102
+ * Managing circular dependencies
103
+ * Building production packages
104
+ * Documenting schema relationships
105
+
106
+ **Use auto-resolution when:**
107
+
108
+ * Quick prototyping or development
109
+ * Schemas follow standard naming conventions
110
+ * All schemas are in standard locations
111
+ * Simple dependency structures
112
+
113
+ == Guide Contents
114
+
115
+ === link:creating-manifests.html[Creating Manifests]
116
+
117
+ Learn how to generate manifests from root schemas, understanding resolved vs unresolved schemas, and editing manifests to add missing paths.
118
+
119
+ **Topics covered:**
120
+
121
+ * Using `expressir manifest create`
122
+ * Understanding manifest structure
123
+ * Interpreting creation output
124
+ * Adding base directories
125
+ * Handling circular dependencies
126
+
127
+ === link:resolving-manifests.html[Resolving Manifests]
128
+
129
+ Discover how to automatically resolve missing schema paths and when to use the resolve command.
130
+
131
+ **Topics covered:**
132
+
133
+ * Using `expressir manifest resolve`
134
+ * Auto-resolution patterns
135
+ * When to use resolve vs manual editing
136
+ * Troubleshooting resolution failures
137
+
138
+ === link:validating-manifests.html[Validating Manifests]
139
+
140
+ Master manifest validation at different levels and learn to interpret validation errors.
141
+
142
+ **Topics covered:**
143
+
144
+ * Basic validation (file existence)
145
+ * Referential integrity checking
146
+ * Using `--check-references` flag
147
+ * Interpreting validation errors
148
+ * Fixing validation issues
149
+
150
+ === Best Practices
151
+
152
+ **Always validate before building:**
153
+ ```bash
154
+ expressir manifest validate manifest.yaml --check-references
155
+ ```
156
+
157
+ **Use verbose mode during development:**
158
+ ```bash
159
+ expressir manifest create schema.exp -o manifest.yaml --verbose
160
+ ```
161
+
162
+ **Version control your manifests:**
163
+ ```bash
164
+ git add manifest.yaml
165
+ git commit -m "Add schema manifest for activity module"
166
+ ```
167
+
168
+ **Document unresolved schemas:**
169
+ Add comments in the YAML to explain why certain schemas are unresolved:
170
+ ```yaml
171
+ schemas:
172
+ Activity_method_mim: # TODO: Waiting for upstream release
173
+ ```
174
+
175
+ **Keep base directories minimal:**
176
+ Only include necessary search directories to avoid false matches.
177
+
178
+ == Common Patterns
179
+
180
+ === Pattern 1: Standard Module Build
181
+
182
+ For a typical STEP module with standard structure:
183
+
184
+ [source,bash]
185
+ ----
186
+ expressir manifest create schemas/modules/activity/mim.exp \
187
+ -o activity.yaml \
188
+ --base-dirs schemas/resources,schemas/modules
189
+
190
+ expressir manifest validate activity.yaml --check-references
191
+ expressir package build --manifest activity.yaml activity.ler
192
+ ----
193
+
194
+ === Pattern 2: Mixed Resource and Module Schemas
195
+
196
+ When combining different schema types:
197
+
198
+ [source,bash]
199
+ ----
200
+ expressir manifest create \
201
+ schemas/resources/geometry.exp \
202
+ schemas/modules/mechanical/arm.exp \
203
+ -o combined.yaml \
204
+ --base-dirs schemas/resources,schemas/modules,schemas/integrated
205
+
206
+ expressir manifest validate combined.yaml --check-references --verbose
207
+ expressir package build --manifest combined.yaml combined.ler
208
+ ----
209
+
210
+ === Pattern 3: Incremental Resolution
211
+
212
+ For schemas with many missing dependencies:
213
+
214
+ [source,bash]
215
+ ----
216
+ # Initial creation
217
+ expressir manifest create root.exp -o manifest.yaml \
218
+ --base-dirs schemas/
219
+
220
+ # First resolution attempt
221
+ expressir manifest resolve manifest.yaml -o resolved1.yaml
222
+
223
+ # Manual editing of resolved1.yaml
224
+ # Add paths for schemas that couldn't be auto-resolved
225
+
226
+ # Second resolution with additional base dirs
227
+ expressir manifest resolve resolved1.yaml -o resolved2.yaml \
228
+ --base-dirs schemas/,additional/schemas/
229
+
230
+ # Validate
231
+ expressir manifest validate resolved2.yaml --check-references
232
+
233
+ # Build
234
+ expressir package build --manifest resolved2.yaml output.ler
235
+ ----
236
+
237
+ == Troubleshooting
238
+
239
+ === Problem: Many Unresolved Schemas
240
+
241
+ **Symptom:** Manifest creation shows many schemas without paths
242
+
243
+ **Solutions:**
244
+
245
+ 1. Add more base directories:
246
+ ```bash
247
+ expressir manifest create root.exp -o manifest.yaml \
248
+ --base-dirs dir1,dir2,dir3
249
+ ```
250
+
251
+ 2. Use the resolve command:
252
+ ```bash
253
+ expressir manifest resolve manifest.yaml -o resolved.yaml \
254
+ --base-dirs additional/dirs
255
+ ```
256
+
257
+ 3. Manually edit the manifest to add known paths
258
+
259
+ === Problem: Circular Dependency Warnings
260
+
261
+ **Symptom:** Warnings about circular references during creation
262
+
263
+ **Solution:** This is normal for schema-level circular dependencies in EXPRESS. The warning is informational only. Both schemas will be included correctly.
264
+
265
+ === Problem: Validation Fails with Missing References
266
+
267
+ **Symptom:** `--check-references` reports unresolved USE FROM or REFERENCE FROM
268
+
269
+ **Solutions:**
270
+
271
+ 1. Check if schema files actually exist at specified paths
272
+ 2. Verify schema names match actual SCHEMA declarations in files
273
+ 3. Add missing schemas to manifest with correct paths
274
+ 4. Use `--verbose` to see which schemas are being checked
275
+
276
+ === Problem: Package Build Fails After Successful Validation
277
+
278
+ **Symptom:** Manifest validates but package build fails
279
+
280
+ **Solutions:**
281
+
282
+ 1. Ensure all schema files are readable
283
+ 2. Check for syntax errors in EXPRESS files
284
+ 3. Verify file encodings (should be UTF-8)
285
+ 4. Use `--verbose` flag on build command
286
+
287
+ == Next Steps
288
+
289
+ Now that you understand the manifest workflow:
290
+
291
+ **Deep dive into creation**::
292
+ Read link:creating-manifests.html[Creating Manifests] for detailed guidance
293
+
294
+ **Learn resolution techniques**::
295
+ Explore link:resolving-manifests.html[Resolving Manifests]
296
+
297
+ **Master validation**::
298
+ Study link:validating-manifests.html[Validating Manifests]
299
+
300
+ **Build production packages**::
301
+ See link:../../ler-packages.html[LER Packages] for packaging details
302
+
303
+ == Bibliography
304
+
305
+ * link:../../schema-manifests.html[Schema Manifests] - Core concepts and API
306
+ * link:../../ler-packages.html[LER Packages] - Package building
307
+ * link:../ler/creating-packages.html[Creating LER Packages] - Detailed packaging guide