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.
- checksums.yaml +4 -4
- data/.github/workflows/docs.yml +98 -0
- data/.github/workflows/links.yml +100 -0
- data/.github/workflows/rake.yml +4 -0
- data/.github/workflows/release.yml +5 -0
- data/.github/workflows/validate_schemas.yml +1 -1
- data/.gitignore +3 -0
- data/.rubocop.yml +1 -1
- data/.rubocop_todo.yml +209 -55
- data/Gemfile +2 -1
- data/README.adoc +650 -83
- data/docs/Gemfile +12 -0
- data/docs/_config.yml +141 -0
- data/docs/_guides/changes/changes-format.adoc +778 -0
- data/docs/_guides/changes/importing-eengine.adoc +898 -0
- data/docs/_guides/changes/index.adoc +396 -0
- data/docs/_guides/changes/programmatic-usage.adoc +1038 -0
- data/docs/_guides/changes/validating-changes.adoc +681 -0
- data/docs/_guides/cli/benchmark-performance.adoc +834 -0
- data/docs/_guides/cli/coverage-analysis.adoc +921 -0
- data/docs/_guides/cli/format-schemas.adoc +547 -0
- data/docs/_guides/cli/index.adoc +8 -0
- data/docs/_guides/cli/managing-changes.adoc +927 -0
- data/docs/_guides/cli/validate-ascii.adoc +645 -0
- data/docs/_guides/cli/validate-schemas.adoc +534 -0
- data/docs/_guides/index.adoc +165 -0
- data/docs/_guides/ler/creating-packages.adoc +664 -0
- data/docs/_guides/ler/index.adoc +305 -0
- data/docs/_guides/ler/loading-packages.adoc +707 -0
- data/docs/_guides/ler/package-formats.adoc +748 -0
- data/docs/_guides/ler/querying-packages.adoc +826 -0
- data/docs/_guides/ler/validating-packages.adoc +750 -0
- data/docs/_guides/liquid/basic-templates.adoc +813 -0
- data/docs/_guides/liquid/documentation-generation.adoc +1042 -0
- data/docs/_guides/liquid/drops-reference.adoc +829 -0
- data/docs/_guides/liquid/filters-and-tags.adoc +912 -0
- data/docs/_guides/liquid/index.adoc +468 -0
- data/docs/_guides/manifests/creating-manifests.adoc +483 -0
- data/docs/_guides/manifests/index.adoc +307 -0
- data/docs/_guides/manifests/resolving-manifests.adoc +557 -0
- data/docs/_guides/manifests/validating-manifests.adoc +713 -0
- data/docs/_guides/ruby-api/formatting-schemas.adoc +605 -0
- data/docs/_guides/ruby-api/index.adoc +257 -0
- data/docs/_guides/ruby-api/parsing-files.adoc +421 -0
- data/docs/_guides/ruby-api/search-engine.adoc +609 -0
- data/docs/_guides/ruby-api/working-with-repository.adoc +577 -0
- data/docs/_pages/data-model.adoc +665 -0
- data/docs/_pages/express-language.adoc +506 -0
- data/docs/_pages/getting-started.adoc +414 -0
- data/docs/_pages/index.adoc +116 -0
- data/docs/_pages/introduction.adoc +256 -0
- data/docs/_pages/ler-packages.adoc +837 -0
- data/docs/_pages/parsers.adoc +683 -0
- data/docs/_pages/schema-manifests.adoc +431 -0
- data/docs/_references/index.adoc +228 -0
- data/docs/_tutorials/creating-ler-package.adoc +735 -0
- data/docs/_tutorials/documentation-coverage.adoc +795 -0
- data/docs/_tutorials/index.adoc +221 -0
- data/docs/_tutorials/liquid-templates.adoc +806 -0
- data/docs/_tutorials/parsing-your-first-schema.adoc +522 -0
- data/docs/_tutorials/querying-schemas.adoc +751 -0
- data/docs/_tutorials/working-with-multiple-schemas.adoc +676 -0
- data/docs/index.adoc +242 -0
- data/docs/lychee.toml +84 -0
- data/examples/demo_ler_usage.sh +86 -0
- data/examples/ler/README.md +111 -0
- data/examples/ler/simple_example.ler +0 -0
- data/examples/ler/simple_schema.exp +33 -0
- data/examples/ler_build.rb +75 -0
- data/examples/ler_cli.rb +79 -0
- data/examples/ler_demo_complete.rb +276 -0
- data/examples/ler_query.rb +91 -0
- data/examples/ler_query_examples.rb +305 -0
- data/examples/ler_stats.rb +81 -0
- data/examples/phase3_demo.rb +159 -0
- data/examples/query_demo_simple.rb +131 -0
- data/expressir.gemspec +2 -0
- data/lib/expressir/changes/schema_change.rb +32 -22
- data/lib/expressir/changes/{edition_change.rb → version_change.rb} +3 -3
- data/lib/expressir/cli.rb +12 -4
- data/lib/expressir/commands/changes_import_eengine.rb +2 -2
- data/lib/expressir/commands/changes_validate.rb +1 -1
- data/lib/expressir/commands/manifest.rb +427 -0
- data/lib/expressir/commands/package.rb +1274 -0
- data/lib/expressir/commands/validate.rb +70 -37
- data/lib/expressir/commands/validate_ascii.rb +607 -0
- data/lib/expressir/commands/validate_load.rb +88 -0
- data/lib/expressir/express/formatter.rb +5 -1
- data/lib/expressir/express/formatters/remark_item_formatter.rb +25 -0
- data/lib/expressir/express/parser.rb +33 -0
- data/lib/expressir/manifest/resolver.rb +213 -0
- data/lib/expressir/manifest/validator.rb +195 -0
- data/lib/expressir/model/declarations/entity.rb +6 -0
- data/lib/expressir/model/dependency_resolver.rb +270 -0
- data/lib/expressir/model/indexes/entity_index.rb +103 -0
- data/lib/expressir/model/indexes/reference_index.rb +148 -0
- data/lib/expressir/model/indexes/type_index.rb +149 -0
- data/lib/expressir/model/interface_validator.rb +384 -0
- data/lib/expressir/model/repository.rb +400 -5
- data/lib/expressir/model/repository_validator.rb +295 -0
- data/lib/expressir/model/search_engine.rb +525 -0
- data/lib/expressir/model.rb +4 -94
- data/lib/expressir/package/builder.rb +200 -0
- data/lib/expressir/package/metadata.rb +81 -0
- data/lib/expressir/package/reader.rb +165 -0
- data/lib/expressir/schema_manifest.rb +11 -1
- data/lib/expressir/version.rb +1 -1
- data/lib/expressir.rb +16 -3
- metadata +115 -5
- data/docs/benchmarking.adoc +0 -107
- 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
|