expressir 2.1.30 → 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 +244 -39
- data/Gemfile +2 -1
- data/README.adoc +621 -54
- 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/cli.rb +12 -4
- 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 +15 -2
- metadata +114 -4
- data/docs/benchmarking.adoc +0 -107
- data/docs/liquid_drops.adoc +0 -1547
data/README.adoc
CHANGED
|
@@ -81,6 +81,7 @@ Commands:
|
|
|
81
81
|
expressir format PATH # pretty print EXPRESS schema located at PATH
|
|
82
82
|
expressir help [COMMAND] # Describe available commands or one specific command
|
|
83
83
|
expressir validate *PATH # validate EXPRESS schema located at PATH
|
|
84
|
+
expressir validate ascii PATH # Validate EXPRESS files for ASCII-only content (excluding remarks)
|
|
84
85
|
expressir coverage *PATH # List EXPRESS entities and check documentation coverage
|
|
85
86
|
expressir version # Expressir Version
|
|
86
87
|
----
|
|
@@ -97,9 +98,10 @@ expressir format schemas/resources/action_schema/action_schema.exp
|
|
|
97
98
|
----
|
|
98
99
|
|
|
99
100
|
This command:
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
|
|
102
|
+
. Parses the EXPRESS schema
|
|
103
|
+
. Formats it with consistent indentation and spacing
|
|
104
|
+
. Outputs the formatted schema to stdout
|
|
103
105
|
|
|
104
106
|
=== Clean schema
|
|
105
107
|
|
|
@@ -124,29 +126,136 @@ expressir clean schemas/resources/action_schema/action_schema.exp --output clean
|
|
|
124
126
|
|
|
125
127
|
=== Validate schema
|
|
126
128
|
|
|
127
|
-
The `validate` command performs validation checks on EXPRESS schema files.
|
|
129
|
+
The `validate load` command performs validation checks on EXPRESS schema files.
|
|
128
130
|
|
|
129
131
|
It verifies:
|
|
130
132
|
|
|
131
|
-
. That the schema can be parsed correctly
|
|
133
|
+
. That the schema can be parsed correctly into the EXPRESS data model
|
|
132
134
|
. That the schema includes a version string
|
|
133
135
|
|
|
134
136
|
[source, sh]
|
|
135
137
|
----
|
|
136
138
|
# Validate a single schema
|
|
137
|
-
expressir validate schemas/resources/action_schema/action_schema.exp
|
|
139
|
+
expressir validate load schemas/resources/action_schema/action_schema.exp
|
|
138
140
|
|
|
139
141
|
# Validate multiple schemas
|
|
140
|
-
expressir validate schemas/resources/action_schema/action_schema.exp schemas/resources/approval_schema/approval_schema.exp
|
|
142
|
+
expressir validate load schemas/resources/action_schema/action_schema.exp schemas/resources/approval_schema/approval_schema.exp
|
|
143
|
+
|
|
144
|
+
# Validate schemas from a schema manifest YAML
|
|
145
|
+
expressir validate load schemas.yml
|
|
141
146
|
----
|
|
142
147
|
|
|
143
148
|
The command reports any schemas that:
|
|
144
149
|
|
|
145
|
-
* Failed to parse
|
|
150
|
+
* Failed to parse into the EXPRESS data model
|
|
146
151
|
* Are missing a version string
|
|
147
152
|
|
|
148
153
|
If all validations pass, it will display "Validation passed for all EXPRESS schemas."
|
|
149
154
|
|
|
155
|
+
=== Validate ASCII content
|
|
156
|
+
|
|
157
|
+
The `validate ascii` command validates that EXPRESS schema files contain only
|
|
158
|
+
ASCII characters outside of remarks. This ensures compatibility with systems
|
|
159
|
+
that don't support Unicode, while allowing Unicode in documentation comments.
|
|
160
|
+
|
|
161
|
+
[source, sh]
|
|
162
|
+
----
|
|
163
|
+
# Validate a single file
|
|
164
|
+
expressir validate ascii schema.exp
|
|
165
|
+
|
|
166
|
+
# Validate schema manifest YAML
|
|
167
|
+
expressir validate ascii schemas.yml
|
|
168
|
+
|
|
169
|
+
# Validate directory (non-recursive)
|
|
170
|
+
expressir validate ascii schemas/
|
|
171
|
+
|
|
172
|
+
# Validate directory recursively
|
|
173
|
+
expressir validate ascii schemas/ --recursive
|
|
174
|
+
|
|
175
|
+
# Output in YAML format
|
|
176
|
+
expressir validate ascii schemas/ --yaml
|
|
177
|
+
|
|
178
|
+
# Check remarks as well (include remarks in validation)
|
|
179
|
+
expressir validate ascii schema.exp --check-remarks
|
|
180
|
+
----
|
|
181
|
+
|
|
182
|
+
The command checks that all EXPRESS code (excluding remarks) contains only
|
|
183
|
+
7-bit ASCII characters. Tagged remarks (both embedded `(* ... *)` and tail
|
|
184
|
+
`-- ...` comments) are excluded from validation, allowing documentation to
|
|
185
|
+
contain Unicode without triggering errors.
|
|
186
|
+
|
|
187
|
+
[options="header"]
|
|
188
|
+
|===
|
|
189
|
+
| Option | Description
|
|
190
|
+
|
|
191
|
+
| `--recursive`, `-r`
|
|
192
|
+
| Validate EXPRESS files under the specified path recursively
|
|
193
|
+
|
|
194
|
+
| `--yaml`, `-y`
|
|
195
|
+
| Output results in YAML format for programmatic processing
|
|
196
|
+
|
|
197
|
+
| `--check-remarks`
|
|
198
|
+
| Include remarks in ASCII validation (default: false, remarks are excluded)
|
|
199
|
+
|===
|
|
200
|
+
|
|
201
|
+
The validator provides:
|
|
202
|
+
|
|
203
|
+
* Detailed violation reports with line and column numbers
|
|
204
|
+
* Replacement suggestions (AsciiMath for math symbols, ISO 10303-11 encoding for others)
|
|
205
|
+
* Summary statistics
|
|
206
|
+
* Visual indicators for non-ASCII sequences
|
|
207
|
+
|
|
208
|
+
This command is particularly useful before exporting schemas to formats that
|
|
209
|
+
don't support Unicode, such as EEP (Express Engine Parser) and eengine (Express
|
|
210
|
+
Engine).
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
[example]
|
|
214
|
+
====
|
|
215
|
+
[source, sh]
|
|
216
|
+
----
|
|
217
|
+
$ expressir validate ascii spec/fixtures/validate_ascii/non_ascii_in_code.exp
|
|
218
|
+
|
|
219
|
+
spec/fixtures/validate_ascii/non_ascii_in_code.exp:
|
|
220
|
+
Line 3, Column 9:
|
|
221
|
+
ENTITY 製品;
|
|
222
|
+
^^ Non-ASCII sequence
|
|
223
|
+
"製" - Hex: 0x88fd, UTF-8 bytes: 0xe8 0xa3 0xbd
|
|
224
|
+
Replacement: ISO 10303-11: "000088FD"
|
|
225
|
+
"品" - Hex: 0x54c1, UTF-8 bytes: 0xe5 0x93 0x81
|
|
226
|
+
Replacement: ISO 10303-11: "000054C1"
|
|
227
|
+
|
|
228
|
+
...
|
|
229
|
+
Line 10, Column 24:
|
|
230
|
+
symbol : STRING := 'μ';
|
|
231
|
+
^ Non-ASCII sequence
|
|
232
|
+
"μ" - Hex: 0x3bc, UTF-8 bytes: 0xce 0xbc
|
|
233
|
+
Replacement: AsciiMath: mu
|
|
234
|
+
|
|
235
|
+
...
|
|
236
|
+
|
|
237
|
+
Found 7 non-ASCII sequence(s) in non_ascii_in_code.exp
|
|
238
|
+
|
|
239
|
+
Summary:
|
|
240
|
+
Scanned 1 EXPRESS file(s)
|
|
241
|
+
Found 7 non-ASCII sequence(s) in 1 file(s)
|
|
242
|
+
|
|
243
|
+
╭──────────────────────────────────────────────────────────────────────────╮
|
|
244
|
+
│ Non-ASCII Characters Summary │
|
|
245
|
+
├──────────────────────────┬─────────────┬────────────────────┬────────────┤
|
|
246
|
+
│ File │ Symbol │ Replacement │ Occurrenc… │
|
|
247
|
+
├──────────────────────────┼─────────────┼────────────────────┼────────────┤
|
|
248
|
+
│ validate_ascii/non_asci… │ "製" (0x88… │ ISO 10303-11: "00… │ 1 │
|
|
249
|
+
│ validate_ascii/non_asci… │ "品" (0x54… │ ISO 10303-11: "00… │ 1 │
|
|
250
|
+
│ ... │ │ │ │
|
|
251
|
+
│ validate_ascii/non_asci… │ "μ" (0x3bc) │ AsciiMath: mu │ 1 │
|
|
252
|
+
│ ... │ │ │ │
|
|
253
|
+
│ TOTAL │ 10 unique │ — │ 11 │
|
|
254
|
+
╰──────────────────────────┴─────────────┴────────────────────┴────────────╯
|
|
255
|
+
----
|
|
256
|
+
====
|
|
257
|
+
|
|
258
|
+
|
|
150
259
|
=== Version
|
|
151
260
|
|
|
152
261
|
The `version` command displays the current version of the Expressir gem.
|
|
@@ -1026,9 +1135,10 @@ all_entities = Expressir::Coverage.find_entities(schema)
|
|
|
1026
1135
|
puts "Found #{all_entities.size} entities in schema #{schema.id}"
|
|
1027
1136
|
----
|
|
1028
1137
|
|
|
1029
|
-
=== EXPRESS schema manifest
|
|
1030
1138
|
|
|
1031
|
-
|
|
1139
|
+
== EXPRESS schema manifests
|
|
1140
|
+
|
|
1141
|
+
=== General
|
|
1032
1142
|
|
|
1033
1143
|
The EXPRESS schema manifest is a file format defined by ELF at
|
|
1034
1144
|
https://www.expresslang.org/docs[EXPRESS schema manifest specification].
|
|
@@ -1045,8 +1155,30 @@ The `SchemaManifest` class allows you to:
|
|
|
1045
1155
|
* Save manifest configurations to files
|
|
1046
1156
|
|
|
1047
1157
|
|
|
1158
|
+
=== File format
|
|
1159
|
+
|
|
1160
|
+
The schema manifest uses a structured YAML format:
|
|
1161
|
+
|
|
1162
|
+
[source,yaml]
|
|
1163
|
+
----
|
|
1164
|
+
schemas:
|
|
1165
|
+
- path: schemas/resources/action_schema/action_schema.exp
|
|
1166
|
+
id: action_schema
|
|
1167
|
+
- path: schemas/resources/approval_schema/approval_schema.exp
|
|
1168
|
+
id: approval_schema
|
|
1169
|
+
- path: schemas/resources/date_time_schema/date_time_schema.exp
|
|
1170
|
+
id: date_time_schema
|
|
1171
|
+
----
|
|
1172
|
+
|
|
1173
|
+
Each schema entry in the manifest can have the following attributes:
|
|
1174
|
+
|
|
1175
|
+
`path`:: (Required) The file path to the EXPRESS schema file
|
|
1176
|
+
`id`:: (Optional) A unique identifier for the schema
|
|
1177
|
+
`container_path`:: (Optional) Container path information
|
|
1178
|
+
|
|
1179
|
+
|
|
1048
1180
|
[example]
|
|
1049
|
-
.Example project structure with schema manifest
|
|
1181
|
+
.Example project structure with schema manifest
|
|
1050
1182
|
====
|
|
1051
1183
|
[source]
|
|
1052
1184
|
----
|
|
@@ -1073,9 +1205,362 @@ schemas:
|
|
|
1073
1205
|
----
|
|
1074
1206
|
====
|
|
1075
1207
|
|
|
1076
|
-
==== Creating a schema manifest
|
|
1077
1208
|
|
|
1078
|
-
|
|
1209
|
+
=== Commands for schema manifests
|
|
1210
|
+
|
|
1211
|
+
==== Creating a manifest from a root schema
|
|
1212
|
+
|
|
1213
|
+
The `manifest create` command generates a schema manifest YAML file by
|
|
1214
|
+
resolving all referenced schemas starting from a specified root schema file.
|
|
1215
|
+
|
|
1216
|
+
.`manifest create` - Generate schema manifest
|
|
1217
|
+
[source,sh]
|
|
1218
|
+
----
|
|
1219
|
+
Usage:
|
|
1220
|
+
expressir manifest create ROOT_SCHEMA [MORE_SCHEMAS...] -o, --output=OUTPUT
|
|
1221
|
+
|
|
1222
|
+
Options:
|
|
1223
|
+
-o, --output=OUTPUT # Output YAML file path
|
|
1224
|
+
[--base-dirs=BASE_DIRS] # Comma-separated base directories for schema resolution
|
|
1225
|
+
[--verbose], [--no-verbose], [--skip-verbose] # Show detailed output
|
|
1226
|
+
# Default: false
|
|
1227
|
+
|
|
1228
|
+
Description:
|
|
1229
|
+
Generate a YAML manifest of all schemas required for packaging.
|
|
1230
|
+
|
|
1231
|
+
The manifest uses the existing SchemaManifest format: schemas: schema_id: path:
|
|
1232
|
+
/path/to/schema.exp
|
|
1233
|
+
|
|
1234
|
+
Workflow: 1. Create manifest from root schema 2. Edit manifest to add paths for
|
|
1235
|
+
schemas with null paths 3. Validate manifest 4. Build package using manifest
|
|
1236
|
+
|
|
1237
|
+
Example: expressir manifest create schemas/activity/mim.exp \ -o
|
|
1238
|
+
activity_manifest.yaml \ --base-dirs /path/to/schemas
|
|
1239
|
+
----
|
|
1240
|
+
|
|
1241
|
+
Options:
|
|
1242
|
+
|
|
1243
|
+
`--output, -o FILE`:: (Required) Output YAML file path
|
|
1244
|
+
|
|
1245
|
+
`--base-dirs DIRS`:: Base directories for schema resolution (space-separated). Also supports comma-separated for backward compatibility.
|
|
1246
|
+
+
|
|
1247
|
+
Searches for schema files using these patterns:
|
|
1248
|
+
schema files named according to schema ID::: `<SCHEMA_ID>.exp`
|
|
1249
|
+
schema files named in the STEP module pattern::: `<LOWERCASE_SCHEMA_WO_MIMARM>/{mim,arm}.exp`
|
|
1250
|
+
+
|
|
1251
|
+
[source,sh]
|
|
1252
|
+
----
|
|
1253
|
+
# Space-separated (preferred)
|
|
1254
|
+
--base-dirs /path/to/schemas /another/path
|
|
1255
|
+
|
|
1256
|
+
# Comma-separated (backward compatible)
|
|
1257
|
+
--base-dirs /path/to/schemas,/another/path
|
|
1258
|
+
----
|
|
1259
|
+
|
|
1260
|
+
`--verbose`:: Show detailed output
|
|
1261
|
+
|
|
1262
|
+
Base directories can be provided to help locate schema files:
|
|
1263
|
+
|
|
1264
|
+
* During the resolving process, Expressir will search these directories for
|
|
1265
|
+
schema files matching known naming patterns.
|
|
1266
|
+
* Once a referenced schema is found, it will indicate from which source they
|
|
1267
|
+
were resolved.
|
|
1268
|
+
* If multiple matches are found, the first one encountered will be used, and a
|
|
1269
|
+
warning will be displayed for the user to manually edit the manifest if a
|
|
1270
|
+
different path is desired.
|
|
1271
|
+
|
|
1272
|
+
In the case of unresolved schemas, the created manifest will include entries
|
|
1273
|
+
without the `path:` field. The manifest can then be edited manually to add the
|
|
1274
|
+
correct paths.
|
|
1275
|
+
|
|
1276
|
+
|
|
1277
|
+
.Creating a manifest from a root schema
|
|
1278
|
+
[example]
|
|
1279
|
+
====
|
|
1280
|
+
The following command creates a manifest starting from the
|
|
1281
|
+
`schemas/modules/activity/mim.exp` root schema, searching for referenced schemas
|
|
1282
|
+
in the `schemas/resources` and `schemas/modules` base directories.
|
|
1283
|
+
|
|
1284
|
+
[source,sh]
|
|
1285
|
+
----
|
|
1286
|
+
$ expressir manifest create \
|
|
1287
|
+
schemas/modules/activity/mim.exp \
|
|
1288
|
+
-o new.yaml \
|
|
1289
|
+
--base-dirs schemas/modules schemas/resources/ \
|
|
1290
|
+
--verbose
|
|
1291
|
+
|
|
1292
|
+
Creating manifest from 1 root schema(s)...
|
|
1293
|
+
Base directories:
|
|
1294
|
+
- [source 1]: ~/src/mn/iso-10303/schemas/modules
|
|
1295
|
+
- [source 2]: ~/src/mn/iso-10303/schemas/resources/
|
|
1296
|
+
Resolving dependencies...
|
|
1297
|
+
USE FROM action_schema (in mim): ✓ [source 2] action_schema/action_schema.exp
|
|
1298
|
+
REFERENCE FROM basic_attribute_schema (in action_schema): ✓ [source 2] basic_attribute_schema/basic_attribute_schema.exp
|
|
1299
|
+
REFERENCE FROM support_resource_schema (in basic_attribute_schema): ✓ [source 2] support_resource_schema/support_resource_schema.exp
|
|
1300
|
+
REFERENCE FROM support_resource_schema (in action_schema): ✓ [source 2] support_resource_schema/support_resource_schema.exp
|
|
1301
|
+
USE FROM Activity_method_mim (in mim): ✓ [source 1] activity_method/mim.exp
|
|
1302
|
+
...
|
|
1303
|
+
REFERENCE FROM support_resource_schema (in management_resources_schema): ✓ [source 2] support_resource_schema/support_resource_schema.exp
|
|
1304
|
+
✓ Manifest created: new.yaml
|
|
1305
|
+
Resolved schemas: 42
|
|
1306
|
+
All schemas resolved successfully!
|
|
1307
|
+
----
|
|
1308
|
+
====
|
|
1309
|
+
|
|
1310
|
+
.Creating a manifest from a root schema with unresolved schemas
|
|
1311
|
+
[example]
|
|
1312
|
+
====
|
|
1313
|
+
The following command creates a manifest starting from the
|
|
1314
|
+
`schemas/modules/activity/mim.exp` root schema, searching for referenced schemas
|
|
1315
|
+
in the `schemas/resources` base directory only (i.e. it will miss schemas
|
|
1316
|
+
in `schemas/modules`).
|
|
1317
|
+
|
|
1318
|
+
[source,sh]
|
|
1319
|
+
----
|
|
1320
|
+
$ expressir manifest create \
|
|
1321
|
+
-o manifest.yaml \
|
|
1322
|
+
--base-dirs schemas/resources \
|
|
1323
|
+
--verbose \
|
|
1324
|
+
schemas/modules/activity/mim.exp
|
|
1325
|
+
|
|
1326
|
+
Creating manifest from 1 root schema(s)...
|
|
1327
|
+
Base directories:
|
|
1328
|
+
- [source 1]: ~/src/mn/iso-10303/schemas/resources
|
|
1329
|
+
Resolving dependencies...
|
|
1330
|
+
USE FROM action_schema (in mim): ✓ [source 1] action_schema/action_schema.exp
|
|
1331
|
+
REFERENCE FROM basic_attribute_schema (in action_schema): ✓ [source 1] basic_attribute_schema/basic_attribute_schema.exp
|
|
1332
|
+
REFERENCE FROM support_resource_schema (in basic_attribute_schema): ✓ [source 1] support_resource_schema/support_resource_schema.exp
|
|
1333
|
+
REFERENCE FROM support_resource_schema (in action_schema): ✓ [source 1] support_resource_schema/support_resource_schema.exp
|
|
1334
|
+
USE FROM Activity_method_mim (in mim): ✗ not found
|
|
1335
|
+
...
|
|
1336
|
+
REFERENCE FROM support_resource_schema (in management_resources_schema): ✓ [source 2] support_resource_schema/support_resource_schema.exp
|
|
1337
|
+
✓ Manifest created: manifest.yaml
|
|
1338
|
+
Resolved schemas: 41
|
|
1339
|
+
|
|
1340
|
+
⚠ Unresolved schemas (1):
|
|
1341
|
+
- Activity_method_mim
|
|
1342
|
+
|
|
1343
|
+
Please edit manifest.yaml and set 'path:' for unresolved schemas
|
|
1344
|
+
Then validate with: expressir manifest validate manifest.yaml
|
|
1345
|
+
----
|
|
1346
|
+
====
|
|
1347
|
+
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
==== Resolving schemas from a manifest
|
|
1351
|
+
|
|
1352
|
+
A schema manifest can be used as input to resolve and load all referenced
|
|
1353
|
+
schemas into a new manifest.
|
|
1354
|
+
|
|
1355
|
+
|
|
1356
|
+
[source,sh]
|
|
1357
|
+
----
|
|
1358
|
+
expressir manifest resolve MANIFEST -o, --output=OUTPUT
|
|
1359
|
+
----
|
|
1360
|
+
|
|
1361
|
+
[source,sh]
|
|
1362
|
+
----
|
|
1363
|
+
Usage:
|
|
1364
|
+
expressir manifest resolve MANIFEST -o, --output=OUTPUT
|
|
1365
|
+
|
|
1366
|
+
Options:
|
|
1367
|
+
-o, --output=OUTPUT # Output file path for resolved manifest
|
|
1368
|
+
[--base-dirs=one two three] # Base directories for schema search (can be specified multiple times)
|
|
1369
|
+
[--verbose], [--no-verbose], [--skip-verbose] # Show detailed resolution progress
|
|
1370
|
+
# Default: false
|
|
1371
|
+
|
|
1372
|
+
Description:
|
|
1373
|
+
Resolve missing or incomplete schema paths in a manifest file.
|
|
1374
|
+
|
|
1375
|
+
This command attempts to find file paths for schemas with missing or empty
|
|
1376
|
+
paths by searching in base directories using naming patterns:
|
|
1377
|
+
|
|
1378
|
+
Supported patterns:
|
|
1379
|
+
- Resource schemas: {schema_name}.exp
|
|
1380
|
+
- Module ARM/MIM: {module_name}/{arm|mim}.exp
|
|
1381
|
+
Example: Activity_method_mim -> activity_method/mim.exp
|
|
1382
|
+
|
|
1383
|
+
The resolved manifest is written to the output file, leaving the original
|
|
1384
|
+
unchanged.
|
|
1385
|
+
|
|
1386
|
+
Use this command after 'expressir manifest validate --check-references' fails
|
|
1387
|
+
to automatically resolve missing schema paths.
|
|
1388
|
+
|
|
1389
|
+
Examples: # Resolve paths using manifest's existing base directories expressir
|
|
1390
|
+
manifest resolve manifest.yaml -o resolved_manifest.yaml
|
|
1391
|
+
# Resolve with explicit base directories
|
|
1392
|
+
expressir manifest resolve manifest.yaml -o resolved.yaml \
|
|
1393
|
+
--base-dirs /path/to/schemas,/another/path
|
|
1394
|
+
# With verbose output
|
|
1395
|
+
expressir manifest resolve manifest.yaml -o resolved.yaml --verbose
|
|
1396
|
+
----
|
|
1397
|
+
|
|
1398
|
+
Options:
|
|
1399
|
+
|
|
1400
|
+
`--output, -o FILE`:: (Required) Output file path for resolved manifest
|
|
1401
|
+
|
|
1402
|
+
`--base-dirs DIRS`:: Base directories for schema search (space-separated). Also
|
|
1403
|
+
supports comma-separated for backward compatibility.
|
|
1404
|
+
+
|
|
1405
|
+
Searches for schema files using these patterns:
|
|
1406
|
+
schema files named according to schema ID::: `<SCHEMA_ID>.exp`
|
|
1407
|
+
schema files named in the STEP module pattern::: `<LOWERCASE_SCHEMA_WO_MIMARM>/{mim,arm}.exp`
|
|
1408
|
+
+
|
|
1409
|
+
[source,sh]
|
|
1410
|
+
----
|
|
1411
|
+
# Space-separated (preferred)
|
|
1412
|
+
--base-dirs /path/to/schemas /another/path
|
|
1413
|
+
|
|
1414
|
+
# Comma-separated (backward compatible)
|
|
1415
|
+
--base-dirs /path/to/schemas,/another/path
|
|
1416
|
+
----
|
|
1417
|
+
|
|
1418
|
+
`--verbose`:: Show detailed resolution progress
|
|
1419
|
+
|
|
1420
|
+
.Fully resolving a schema manifest
|
|
1421
|
+
[example]
|
|
1422
|
+
====
|
|
1423
|
+
The following command resolves all schemas in the `manifest.yaml` file and writes the
|
|
1424
|
+
fully resolved manifest to `resolved_manifest.yaml`.
|
|
1425
|
+
|
|
1426
|
+
[source,sh]
|
|
1427
|
+
----
|
|
1428
|
+
$ expressir manifest resolve manifest.yaml -o resolved.yaml --verbose
|
|
1429
|
+
|
|
1430
|
+
Resolving schema paths in: manifest.yaml...
|
|
1431
|
+
Using base directories:
|
|
1432
|
+
- [source 1] ~/src/mn/iso-10303/schemas/
|
|
1433
|
+
Attempting to resolve paths...
|
|
1434
|
+
Resolving dependencies from 1 root schema(s)...
|
|
1435
|
+
USE FROM action_schema (in mim): ✓ [source 1] resources/action_schema/action_schema.exp
|
|
1436
|
+
REFERENCE FROM basic_attribute_schema (in action_schema): ✓ [source 1] resources/basic_attribute_schema/basic_attribute_schema.exp
|
|
1437
|
+
REFERENCE FROM support_resource_schema (in basic_attribute_schema): ✓ [source 1] resources/support_resource_schema/support_resource_schema.exp
|
|
1438
|
+
REFERENCE FROM support_resource_schema (in action_schema): ✓ [source 1] resources/support_resource_schema/support_resource_schema.exp
|
|
1439
|
+
USE FROM Activity_method_mim (in mim): ✗ not found
|
|
1440
|
+
USE FROM basic_attribute_schema (in mim): ✓ [source 1] resources/basic_attribute_schema/basic_attribute_schema.exp
|
|
1441
|
+
USE FROM management_resources_schema (in mim): ✓ [source 1] resources/management_resources_schema/management_resources_schema.exp
|
|
1442
|
+
...
|
|
1443
|
+
REFERENCE FROM support_resource_schema (in management_resources_schema): ✓ [source 1] resources/support_resource_schema/support_resource_schema.exp
|
|
1444
|
+
✓ Manifest resolved: resolved.yaml
|
|
1445
|
+
Total schemas: 42
|
|
1446
|
+
Resolved schemas: 41
|
|
1447
|
+
|
|
1448
|
+
⚠ Unresolved schemas (1):
|
|
1449
|
+
- Activity_method_mim
|
|
1450
|
+
|
|
1451
|
+
These schemas could not be found in the search directories.
|
|
1452
|
+
You may need to:
|
|
1453
|
+
1. Add more base directories with --base-dirs
|
|
1454
|
+
2. Manually edit resolved.yaml and set their paths
|
|
1455
|
+
----
|
|
1456
|
+
====
|
|
1457
|
+
|
|
1458
|
+
.Resolving a manifest with multiple base directories
|
|
1459
|
+
[example]
|
|
1460
|
+
====
|
|
1461
|
+
[source,sh]
|
|
1462
|
+
----
|
|
1463
|
+
$ expressir manifest resolve manifest.yaml \
|
|
1464
|
+
-o resolved.yaml \
|
|
1465
|
+
--base-dirs ~/src/mn/iso-10303/schemas/modules \
|
|
1466
|
+
~/src/mn/iso-10303/schemas/resources/ --verbose
|
|
1467
|
+
|
|
1468
|
+
Resolving schema paths in: manifest.yaml...
|
|
1469
|
+
Using base directories:
|
|
1470
|
+
- [source 1]: ~/src/mn/iso-10303/schemas/modules
|
|
1471
|
+
- [source 2]: ~/src/mn/iso-10303/schemas/resources/
|
|
1472
|
+
Attempting to resolve paths...
|
|
1473
|
+
Resolving dependencies from 1 root schema(s)...
|
|
1474
|
+
Using base directories:
|
|
1475
|
+
- [source 1]: ~/src/mn/iso-10303/schemas/modules
|
|
1476
|
+
- [source 2]: ~/src/mn/iso-10303/schemas/resources
|
|
1477
|
+
USE FROM action_schema (in mim): ✓ [source 2] action_schema/action_schema.exp
|
|
1478
|
+
REFERENCE FROM basic_attribute_schema (in action_schema): ✓ [source 2] basic_attribute_schema/basic_attribute_schema.exp
|
|
1479
|
+
REFERENCE FROM support_resource_schema (in basic_attribute_schema): ✓ [source 2] support_resource_schema/support_resource_schema.exp
|
|
1480
|
+
REFERENCE FROM support_resource_schema (in action_schema): ✓ [source 2] support_resource_schema/support_resource_schema.exp
|
|
1481
|
+
USE FROM Activity_method_mim (in mim): ✓ [source 1] activity_method/mim.exp
|
|
1482
|
+
...
|
|
1483
|
+
REFERENCE FROM support_resource_schema (in management_resources_schema): ✓ [source 2] support_resource_schema/support_resource_schema.exp
|
|
1484
|
+
✓ Manifest resolved: resolved.yaml
|
|
1485
|
+
Total schemas: 42
|
|
1486
|
+
Resolved schemas: 42
|
|
1487
|
+
All schema paths resolved successfully!
|
|
1488
|
+
----
|
|
1489
|
+
====
|
|
1490
|
+
|
|
1491
|
+
|
|
1492
|
+
==== Validating a manifest
|
|
1493
|
+
|
|
1494
|
+
A schema manifest can be validated to ensure all referenced schemas are fully
|
|
1495
|
+
resolvable and correctly defined.
|
|
1496
|
+
|
|
1497
|
+
.`manifest validate` - Validate manifest
|
|
1498
|
+
[source,sh]
|
|
1499
|
+
----
|
|
1500
|
+
expressir manifest validate MANIFEST.yaml [OPTIONS]
|
|
1501
|
+
----
|
|
1502
|
+
|
|
1503
|
+
[source,sh]
|
|
1504
|
+
----
|
|
1505
|
+
Usage:
|
|
1506
|
+
expressir manifest validate MANIFEST
|
|
1507
|
+
|
|
1508
|
+
Options:
|
|
1509
|
+
[--verbose], [--no-verbose], [--skip-verbose] # Show detailed validation results
|
|
1510
|
+
# Default: false
|
|
1511
|
+
[--check-references], [--no-check-references], [--skip-check-references] # Validate referential integrity using dependency resolver
|
|
1512
|
+
# Default: false
|
|
1513
|
+
|
|
1514
|
+
Description:
|
|
1515
|
+
Validate a schema manifest file.
|
|
1516
|
+
|
|
1517
|
+
Validation types: - File existence: All schema paths exist on disk - Path
|
|
1518
|
+
completeness: All schemas have paths specified (warnings) - Referential integrity
|
|
1519
|
+
(--check-references): All USE/REFERENCE FROM resolve
|
|
1520
|
+
|
|
1521
|
+
Examples: # Basic validation (file existence and path completeness) expressir manifest
|
|
1522
|
+
validate activity_manifest.yaml # With referential integrity checking expressir
|
|
1523
|
+
manifest validate activity_manifest.yaml --check-references # With verbose output
|
|
1524
|
+
expressir manifest validate activity_manifest.yaml --check-references --verbose
|
|
1525
|
+
----
|
|
1526
|
+
|
|
1527
|
+
Options:
|
|
1528
|
+
|
|
1529
|
+
`--verbose`:: Show detailed validation results
|
|
1530
|
+
|
|
1531
|
+
`--check-references`:: Validate referential integrity using dependency resolver
|
|
1532
|
+
|
|
1533
|
+
.Validating a manifest to ensure all dependencies are defined
|
|
1534
|
+
[example]
|
|
1535
|
+
====
|
|
1536
|
+
Checking `REFERENCE FROM` and `USE FROM` references to ensure all dependencies
|
|
1537
|
+
are defined in EXPRESS schemas included in the manifest:
|
|
1538
|
+
|
|
1539
|
+
[source,sh]
|
|
1540
|
+
----
|
|
1541
|
+
$ expressir manifest validate manifest.yaml --check-references --verbose
|
|
1542
|
+
|
|
1543
|
+
Validating manifest: manifest.yaml...
|
|
1544
|
+
Checking referential integrity...
|
|
1545
|
+
Validating referential integrity for 42 schemas...
|
|
1546
|
+
|
|
1547
|
+
USE FROM action_schema (in Activity_method_mim): ✓ action_schema.exp
|
|
1548
|
+
REFERENCE FROM basic_attribute_schema (in action_schema): ✓ basic_attribute_schema.exp
|
|
1549
|
+
...
|
|
1550
|
+
USE FROM action_schema (in mim): ✓ action_schema.exp
|
|
1551
|
+
...
|
|
1552
|
+
REFERENCE FROM support_resource_schema (in topology_schema): ✓ support_resource_schema.exp
|
|
1553
|
+
✓ Manifest is valid
|
|
1554
|
+
Total schemas: 42
|
|
1555
|
+
Resolved schemas: 42
|
|
1556
|
+
----
|
|
1557
|
+
====
|
|
1558
|
+
|
|
1559
|
+
|
|
1560
|
+
|
|
1561
|
+
=== Ruby API for schema manifests
|
|
1562
|
+
|
|
1563
|
+
==== Loading manifests
|
|
1079
1564
|
|
|
1080
1565
|
Load an existing schema manifest from a YAML file:
|
|
1081
1566
|
|
|
@@ -1094,7 +1579,7 @@ end
|
|
|
1094
1579
|
schema_paths = manifest.schemas.map(&:path)
|
|
1095
1580
|
----
|
|
1096
1581
|
|
|
1097
|
-
|
|
1582
|
+
==== Creating manifests
|
|
1098
1583
|
|
|
1099
1584
|
Create a new schema manifest programmatically:
|
|
1100
1585
|
|
|
@@ -1117,32 +1602,7 @@ manifest.schemas << Expressir::SchemaManifestEntry.new(
|
|
|
1117
1602
|
manifest.base_path = "/path/to/schemas"
|
|
1118
1603
|
----
|
|
1119
1604
|
|
|
1120
|
-
====
|
|
1121
|
-
|
|
1122
|
-
The schema manifest uses a structured YAML format:
|
|
1123
|
-
|
|
1124
|
-
[source,yaml]
|
|
1125
|
-
----
|
|
1126
|
-
schemas:
|
|
1127
|
-
- path: schemas/resources/action_schema/action_schema.exp
|
|
1128
|
-
id: action_schema
|
|
1129
|
-
- path: schemas/resources/approval_schema/approval_schema.exp
|
|
1130
|
-
id: approval_schema
|
|
1131
|
-
- path: schemas/resources/date_time_schema/date_time_schema.exp
|
|
1132
|
-
----
|
|
1133
|
-
|
|
1134
|
-
===== Schema entry attributes
|
|
1135
|
-
|
|
1136
|
-
Each schema entry in the manifest can have the following attributes:
|
|
1137
|
-
|
|
1138
|
-
`path`:: (Required) The file path to the EXPRESS schema file
|
|
1139
|
-
`id`:: (Optional) A unique identifier for the schema
|
|
1140
|
-
`container_path`:: (Optional) Container path information
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
==== Working with schema manifests
|
|
1144
|
-
|
|
1145
|
-
===== Saving manifests
|
|
1605
|
+
==== Saving manifests
|
|
1146
1606
|
|
|
1147
1607
|
Save a manifest to a file:
|
|
1148
1608
|
|
|
@@ -1155,7 +1615,7 @@ manifest.to_file("output_schemas.yml")
|
|
|
1155
1615
|
manifest.save_to_path("/path/to/output/")
|
|
1156
1616
|
----
|
|
1157
1617
|
|
|
1158
|
-
|
|
1618
|
+
==== Concatenating manifests
|
|
1159
1619
|
|
|
1160
1620
|
Combine multiple manifests:
|
|
1161
1621
|
|
|
@@ -1171,7 +1631,7 @@ combined_manifest = manifest1.concat(manifest2)
|
|
|
1171
1631
|
combined_manifest = manifest1 + manifest2
|
|
1172
1632
|
----
|
|
1173
1633
|
|
|
1174
|
-
|
|
1634
|
+
==== Using manifests with parsers
|
|
1175
1635
|
|
|
1176
1636
|
Parse all schemas from a manifest:
|
|
1177
1637
|
|
|
@@ -1196,11 +1656,110 @@ repository = Expressir::Express::Parser.from_files(schema_paths) do |filename, s
|
|
|
1196
1656
|
end
|
|
1197
1657
|
----
|
|
1198
1658
|
|
|
1199
|
-
==== Integration with CLI commands
|
|
1200
1659
|
|
|
1201
|
-
Schema manifests are supported by several CLI commands:
|
|
1202
1660
|
|
|
1203
|
-
|
|
1661
|
+
== LER packages
|
|
1662
|
+
|
|
1663
|
+
=== General
|
|
1664
|
+
|
|
1665
|
+
LER (LutaML EXPRESS Repository) is a package format for distributing EXPRESS
|
|
1666
|
+
schemas and related resources in a single binary file.
|
|
1667
|
+
|
|
1668
|
+
EXPRESS schemas often utilize `REFERENCE FROM` or `USE FROM` statements to
|
|
1669
|
+
import definitions from other schemas, and those referenced schemas
|
|
1670
|
+
can deviate across different versions. Managing these dependencies
|
|
1671
|
+
is crucial for maintaining compatibility.
|
|
1672
|
+
|
|
1673
|
+
The LER package format helps encapsulate these dependencies, ensuring that all
|
|
1674
|
+
required schemas are included and versioned correctly, allowing the package
|
|
1675
|
+
to be used reliably in different environments.
|
|
1676
|
+
|
|
1677
|
+
LER packages have the `.ler` file extension and are essentially ZIP archives
|
|
1678
|
+
containing:
|
|
1679
|
+
|
|
1680
|
+
* EXPRESS schema files (`.exp`)
|
|
1681
|
+
* Metadata files (`metadata.yaml`)
|
|
1682
|
+
* pre-parsed model cache (serialized Ruby objects)
|
|
1683
|
+
|
|
1684
|
+
|
|
1685
|
+
=== Creating a package
|
|
1686
|
+
|
|
1687
|
+
Expressir provides a command-line interface for creating LER packages from
|
|
1688
|
+
an EXPRESS manifest.
|
|
1689
|
+
|
|
1690
|
+
Expressir supports building LER packages from EXPRESS schemas using a
|
|
1691
|
+
manifest-based workflow.
|
|
1692
|
+
|
|
1693
|
+
**Using a manifest (recommended for production)**::
|
|
1694
|
+
|
|
1695
|
+
[source,sh]
|
|
1696
|
+
----
|
|
1697
|
+
# Build from validated manifest
|
|
1698
|
+
expressir package build --manifest activity_manifest.yaml activity.ler \
|
|
1699
|
+
--name "Activity Module" \
|
|
1700
|
+
--validate
|
|
1701
|
+
----
|
|
1702
|
+
|
|
1703
|
+
**Using auto-resolution (quick prototyping)**:
|
|
1704
|
+
|
|
1705
|
+
[source,sh]
|
|
1706
|
+
----
|
|
1707
|
+
# Build from root schema with auto-resolution
|
|
1708
|
+
expressir package build schemas/activity/mim.exp activity.ler \
|
|
1709
|
+
--base-dirs ~/schemas/resources ~/schemas/modules \
|
|
1710
|
+
--name "Activity Module" \
|
|
1711
|
+
--validate
|
|
1712
|
+
----
|
|
1713
|
+
|
|
1714
|
+
Complete manifest workflow:
|
|
1715
|
+
|
|
1716
|
+
[source,sh]
|
|
1717
|
+
----
|
|
1718
|
+
# 1. Create manifest from root schema
|
|
1719
|
+
expressir manifest create schemas/activity/mim.exp \
|
|
1720
|
+
-o activity_manifest.yaml \
|
|
1721
|
+
--base-dirs ~/iso-10303/schemas \
|
|
1722
|
+
--name "Activity Module"
|
|
1723
|
+
|
|
1724
|
+
# 2. Edit manifest to add missing schema paths
|
|
1725
|
+
|
|
1726
|
+
# 3. Validate manifest
|
|
1727
|
+
expressir manifest validate activity_manifest.yaml
|
|
1728
|
+
|
|
1729
|
+
# 4. Build package from manifest
|
|
1730
|
+
expressir package build --manifest activity_manifest.yaml activity.ler
|
|
1731
|
+
----
|
|
1732
|
+
|
|
1733
|
+
|
|
1734
|
+
Unresolved schemas appear without `path:` field. Edit the manifest to add missing paths.
|
|
1735
|
+
|
|
1736
|
+
[source,yaml]
|
|
1737
|
+
----
|
|
1738
|
+
schemas:
|
|
1739
|
+
- name: action_schema
|
|
1740
|
+
path: /path/to/action_schema.exp
|
|
1741
|
+
- name: Activity_method_mim # Unresolved - no path
|
|
1742
|
+
----
|
|
1743
|
+
|
|
1744
|
+
|
|
1745
|
+
.`package build --manifest` - Build from manifest
|
|
1746
|
+
[source,sh]
|
|
1747
|
+
----
|
|
1748
|
+
expressir package build --manifest MANIFEST.yaml OUTPUT.ler [OPTIONS]
|
|
1749
|
+
----
|
|
1750
|
+
|
|
1751
|
+
See link:docs/_pages/ler-packages#manifest-workflow[LER Packages documentation] for complete details.
|
|
1752
|
+
|
|
1753
|
+
|
|
1754
|
+
|
|
1755
|
+
== Benchmarking
|
|
1756
|
+
|
|
1757
|
+
=== General
|
|
1758
|
+
|
|
1759
|
+
Expressir includes benchmarking tools to measure the performance of parsing and
|
|
1760
|
+
processing EXPRESS schemas.
|
|
1761
|
+
|
|
1762
|
+
=== Benchmarking with manifests
|
|
1204
1763
|
|
|
1205
1764
|
[source,sh]
|
|
1206
1765
|
----
|
|
@@ -1211,7 +1770,15 @@ expressir benchmark schemas.yml --verbose
|
|
|
1211
1770
|
expressir benchmark-cache schemas.yml --cache_path /tmp/cache.bin
|
|
1212
1771
|
----
|
|
1213
1772
|
|
|
1214
|
-
|
|
1773
|
+
|
|
1774
|
+
== Coverage reporting
|
|
1775
|
+
|
|
1776
|
+
=== General
|
|
1777
|
+
|
|
1778
|
+
Expressir provides coverage analysis tools to evaluate the documentation
|
|
1779
|
+
coverage of EXPRESS schemas.
|
|
1780
|
+
|
|
1781
|
+
=== Coverage analysis with manifests
|
|
1215
1782
|
|
|
1216
1783
|
[source,sh]
|
|
1217
1784
|
----
|
|
@@ -1224,7 +1791,7 @@ expressir coverage schemas.yml --format json --exclude=TYPE:SELECT
|
|
|
1224
1791
|
|
|
1225
1792
|
|
|
1226
1793
|
|
|
1227
|
-
==
|
|
1794
|
+
== EXPRESS Changes
|
|
1228
1795
|
|
|
1229
1796
|
=== General
|
|
1230
1797
|
|
|
@@ -1287,9 +1854,9 @@ end
|
|
|
1287
1854
|
change_schema.to_file("output.changes.yaml")
|
|
1288
1855
|
----
|
|
1289
1856
|
|
|
1290
|
-
|
|
1857
|
+
=== Compare modes
|
|
1291
1858
|
|
|
1292
|
-
|
|
1859
|
+
==== General
|
|
1293
1860
|
|
|
1294
1861
|
Expressir automatically detects and parses all three Eengine XML modes.
|
|
1295
1862
|
|
|
@@ -1305,7 +1872,7 @@ puts mim_report.mode # => "mim"
|
|
|
1305
1872
|
puts schema_report.mode # => "schema"
|
|
1306
1873
|
----
|
|
1307
1874
|
|
|
1308
|
-
|
|
1875
|
+
==== Schema mode
|
|
1309
1876
|
|
|
1310
1877
|
`<schema.changes>` with `<schema.additions>`, `<schema.modifications>`, `<schema.deletions>`
|
|
1311
1878
|
|
|
@@ -1327,7 +1894,7 @@ puts schema_report.mode # => "schema"
|
|
|
1327
1894
|
----
|
|
1328
1895
|
====
|
|
1329
1896
|
|
|
1330
|
-
|
|
1897
|
+
==== ARM mode
|
|
1331
1898
|
|
|
1332
1899
|
`<arm.changes>` root element with `<arm.additions>`,
|
|
1333
1900
|
`<arm.modifications>`, and `<arm.deletions>` sections
|
|
@@ -1345,7 +1912,7 @@ puts schema_report.mode # => "schema"
|
|
|
1345
1912
|
====
|
|
1346
1913
|
|
|
1347
1914
|
|
|
1348
|
-
|
|
1915
|
+
==== MIM mode
|
|
1349
1916
|
|
|
1350
1917
|
`<mim.changes>` root element with `<mim.additions>`,
|
|
1351
1918
|
`<mim.modifications>`, and `<mim.deletions>` sections
|
|
@@ -1362,7 +1929,7 @@ puts schema_report.mode # => "schema"
|
|
|
1362
1929
|
----
|
|
1363
1930
|
====
|
|
1364
1931
|
|
|
1365
|
-
|
|
1932
|
+
=== Interface changes
|
|
1366
1933
|
|
|
1367
1934
|
The eengine XML format tracks interface changes (USE_FROM, REFERENCE_FROM) with
|
|
1368
1935
|
the `interfaced.items` attribute. This attribute lists the specific items being
|
|
@@ -1425,7 +1992,7 @@ end
|
|
|
1425
1992
|
----
|
|
1426
1993
|
|
|
1427
1994
|
|
|
1428
|
-
|
|
1995
|
+
=== Supported change types
|
|
1429
1996
|
|
|
1430
1997
|
The import command recognizes all standard EXPRESS construct types:
|
|
1431
1998
|
|