stepmod-utils 0.4.0 → 0.4.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc937fce5f5bcc0ae84e007894542cd6bcf76f9557436f8543bbfbd6e79d7d8c
4
- data.tar.gz: 427400b1a2353284fbdd080ed4219afa59d5230b5f297a63615eef58bc82cde6
3
+ metadata.gz: eeeb38f76c7cf7cdab0b754625328b5415039bcbd55a72c0b242c9d0c65ab56d
4
+ data.tar.gz: 8cc243ca6ac8ac28e42a0459fb297623de8a49679afe325ba3e8efc13f5b42eb
5
5
  SHA512:
6
- metadata.gz: 9fcf8e5182b797372d2d87d55ddcda604255bfea85efb22108a1e8cdb6e3b15091cde5ab8ef33f3d25b7ee4855029719b7409202f959cf9c6fe14a3c56b2e4a7
7
- data.tar.gz: cf4db46480fbac65e538f09a5edfb1ebca7ee15fdb5d8020d131c615d85a8ed4f978454486299fd5696811c1b89632cf3c58ca86401032798fa1ece49ba053ff
6
+ metadata.gz: 816f5e4870e736ef10890e04ff5d5652cf25d4bc3bda12618a356ae8fb0b48d936fc05861173b2a793e14eee69541d3572251f11233637971642dcd45e9499ae
7
+ data.tar.gz: f30e85a6cb731da00cf61e84314cbdc2faafc071380f6827706816cd419673b5c8c0725dd6d0de3f6a668f823fb986639bff3fb35961b6293027d6e32f259fd2
@@ -27,7 +27,10 @@ jobs:
27
27
  path: iso-10303-stepmod-wg12
28
28
 
29
29
  - name: Generate Annotated EXPRESS files
30
- run: bundle exec stepmod-annotate-all ./iso-10303-stepmod-wg12
30
+ run: |
31
+ bundle exec stepmod-annotate-all \
32
+ --stepmod-dir ./iso-10303-stepmod-wg12 \
33
+ --output schemas
31
34
 
32
35
  - name: Generate Concept YAML files
33
36
  working-directory: iso-10303-stepmod-wg12
data/README.adoc CHANGED
@@ -25,10 +25,106 @@ Or include it in your gemspec.
25
25
 
26
26
  == Usage
27
27
 
28
+ === EXPRESS schema validation
29
+
30
+ This command uses Expressir to validate all EXPRESS schemas listed in the
31
+ `{stepmod}/repository_index.xml` file.
32
+
33
+ There is a `SHOULD_REWRITE` constant that can be switched in the code which
34
+ allows overwriting of the EXPRESS schemas into a pretty-printed format.
35
+
36
+ WARNING: The `SHOULD_REWRITE` function is turned off because Expressir currently
37
+ does not support outputting remarks, and some of the pretty-printed schemas will
38
+ fail validation.
39
+
40
+ [source,sh]
41
+ ----
42
+ $ stepmod-validate-express {stepmod-directory}
43
+ ----
44
+
45
+ Output:
46
+
47
+ [source]
48
+ ----
49
+ Validating all EXPRESS schema files listed in:
50
+ repository_index.xml
51
+
52
+ NOTE: SHOULD_REWRITE mode is turned OFF
53
+ validating: ./data/modules/activity/arm.exp
54
+ validated : ./data/modules/activity/arm.exp
55
+ validating: ./data/modules/activity/mim.exp
56
+ validated : ./data/modules/activity/mim.exp
57
+ validating: ./data/modules/activity_as_realized/arm.exp
58
+ validated : ./data/modules/activity_as_realized/arm.exp
59
+ validating: ./data/modules/activity_as_realized/mim.exp
60
+ validated : ./data/modules/activity_as_realized/mim.exp
61
+ ...
62
+ The following schemas failed validation:
63
+ SCHEMA: data/resources/geometric_model_schema/geometric_model_schema.exp
64
+ ----
65
+
66
+ === Generating Annotated EXPRESS
67
+
68
+ This command takes the STEPmod directory and parses its XML to synthesize
69
+ with the target EXPRESS schemas to migrate into Annotated EXPRESS schemas.
70
+
71
+ Given the following schemas:
72
+
73
+ * Simple EXPRESS schema: `{stepmod-root-dir}/data/resources/action_schema/action_schema.exp`
74
+ * Output of Annotated EXPRESS schema: `{schemas-output-dir}/action_schema/action_schema.exp`
75
+
76
+ Command:
77
+
78
+ [source,sh]
79
+ ----
80
+ $ bundle exec stepmod-annotate-all \
81
+ --stepmod-dir {stepmod-root-dir} \
82
+ --output {schemas-output-dir}
83
+ ----
84
+
85
+ e.g.
86
+
87
+ [source,sh]
88
+ ----
89
+ $ bundle exec stepmod-annotate-all \
90
+ --stepmod-dir ./iso-10303-stepmod-wg12 \
91
+ --output schemas
92
+ ----
93
+
94
+
95
+ Output:
96
+
28
97
  [source,sh]
29
98
  ----
30
- # Extracts from specified stepmod/data/ directory
31
- $ stepmod-extract-terms -p {stepmod-data-directory} -i {path-to-repository_index.xml}
99
+ $ bundle exec stepmod-annotate-all --stepmod-dir iso-10303-stepmod-wg12 --output schemas
100
+ [stepmod-utils] STEPmod data path: `iso-10303-stepmod-wg12`
101
+ [stepmod-utils] SRL schemas output path: `schemas`
102
+ 5760: `iso-10303-stepmod-wg12/data/modules/activity/arm.exp` processing...
103
+ 5760: Written to: `schemas/activity/arm.exp`
104
+ 5760: Done processing `arm.exp` => `schemas/activity/arm.exp`
105
+ 5760: `iso-10303-stepmod-wg12/data/modules/activity/mim.exp` processing...
106
+ 5760: Written to: `schemas/activity/mim.exp`
107
+ 5760: Done processing `mim.exp` => `schemas/activity/mim.exp`
108
+ 5760: `iso-10303-stepmod-wg12/data/modules/activity_as_realized/arm.exp` processing...
109
+ 5760: Written to: `schemas/activity_as_realized/arm.exp`
110
+ 5760: Done processing `arm.exp` => `schemas/activity_as_realized/arm.exp`
111
+ 5760: `iso-10303-stepmod-wg12/data/modules/activity_as_realized/mim.exp` processing...
112
+ 5760: Written to: `schemas/activity_as_realized/mim.exp`
113
+ 5760: Done processing `mim.exp` => `schemas/activity_as_realized/mim.exp`
114
+ 5760: `iso-10303-stepmod-wg12/data/modules/activity_characterized/arm.exp` processing...
115
+ 5760: Written to: `schemas/activity_characterized/arm.exp`
116
+ ...
117
+ ----
118
+
119
+
120
+ === ISO 10303-2 concepts extraction
121
+
122
+ [source,sh]
123
+ ----
124
+ $ bundle exec stepmod-extract-concepts \
125
+ -p ./data \
126
+ -i ./repository_index.xml \
127
+ -o ./output-yaml
32
128
  ----
33
129
 
34
130
  Then these files will be created:
@@ -36,6 +132,130 @@ Then these files will be created:
36
132
  * `031-generated-terms.adoc` all terms extracted
37
133
  * `991-generated-bibliography.adoc` all bibliographic sources where the terms come from
38
134
 
135
+ If the STEPmod repository is a Git repository, term extract will work.
136
+
137
+ Sample output:
138
+
139
+ [source,sh]
140
+ ----
141
+ [stepmod-utils] INFO: STEPmod directory set to ../iso-10303-stepmod.
142
+ [stepmod-utils] INFO: Detecting paths...
143
+ [stepmod-utils] INFO: Processing XML file data/application_protocols/boundary_representation_for_iso_14306_open_jt/application_protocol.xml
144
+ [stepmod-utils] INFO: skipped ISO/CD 10303-243 as it is not IS, DIS or TS
145
+ [stepmod-utils] INFO: Processing XML file data/application_protocols/configuration_control_3d_design_ed2/application_protocol.xml
146
+ [stepmod-utils] INFO: Completed processing XML file data/application_protocols/configuration_control_3d_design_ed2/application_protocol.xml
147
+ [stepmod-utils] INFO: Processing XML file data/application_protocols/electronic_assembly_interconnect_and_packaging_design/application_protocol.xml
148
+ [stepmod-utils] INFO: skipped ISO/CD 10303-210:2019 as it is not IS, DIS or TS
149
+ [stepmod-utils] INFO: Processing XML file data/application_protocols/functional_data_and_their_schematic_representation_for_process_plant/application_protocol.xml
150
+ [stepmod-utils] INFO: Completed processing XML file data/application_protocols/functional_data_and_their_schematic_representation_for_process_plant/application_protocol.xml
151
+ ...
152
+ ----
153
+
154
+
155
+
156
+ === Creating the SRL
157
+
158
+ The single command to create the SRL from the STEPmod repository is as follows.
159
+
160
+ The command also takes the `--stepmod2mn-path {path}` option to specify the
161
+ location of the `stepmod2mn.jar` file. If it is not specified, or the path
162
+ doesn't exist, the command will automatically download the latest release of it
163
+ to use.
164
+
165
+ [source,sh]
166
+ ----
167
+ $ bundle exec stepmod-srl-migrate \
168
+ --srl-schemas-dir {path-to-new-srl-schemas} \
169
+ --srl-docs-dir {path-to-new-srl-documents} \
170
+ --stepmod-dir {stepmod-root-path}
171
+ ----
172
+
173
+ e.g.
174
+
175
+ [source,sh]
176
+ ----
177
+ $ bundle exec stepmod-srl-migrate \
178
+ --srl-schemas-dir schemas \
179
+ --srl-docs-dir documents \
180
+ --stepmod-dir iso-10303-stepmod-wg12
181
+ ----
182
+
183
+ Output:
184
+
185
+ [source,sh]
186
+ ----
187
+ To use retry middleware with Faraday v2.0+, install `faraday-retry` gem
188
+ [stepmod-utils] `stepmod2mn.jar` path: `/Users/mulgogi/src/mn/iso-10303-srl/stepmod2mn-1.25.jar`
189
+ [stepmod-utils] STEPmod path: `iso-10303-stepmod-wg12`
190
+ [stepmod-utils] SRL output schemas directory path: `schemas`
191
+ [stepmod-utils] SRL output documents directory path: `documents`
192
+ [stepmod-utils] ******************************
193
+ [stepmod-utils] [SRL MIGRATION] Migration starts!
194
+ [stepmod-utils] ******************************
195
+ [stepmod-utils] [SRL MIGRATION: stepmod2mn.jar] START document migration and SVG generation.
196
+ [stepmod-utils] ******************************
197
+ stepmod2mn Generate SVG file for iso-10303-stepmod-wg12/data/resource_docs/systems_engineering_representation/schema_diagexpg1.xml...
198
+ SVG saved in documents/systems_engineering_representation/schema_diagexpg1.svg.
199
+ Generate SVG file for iso-10303-stepmod-wg12/data/resource_docs/fundamentals_of_product_description_and_support/schema_diagexpg1.xml...
200
+ SVG saved in documents/fundamentals_of_product_description_and_support/schema_diagexpg1.svg.
201
+ Generate SVG file for iso-10303-stepmod-wg12/data/resource_docs/mathematical_representation/schema_diagexpg1.xml...
202
+ ...
203
+ Generate SVG file for iso-10303-stepmod-wg12/data/modules/assembly_module_with_subassembly/mimexpg2.xml...
204
+ SVG saved in documents/assembly_module_with_subassembly/mimexpg2.svg.
205
+ End!
206
+ [stepmod-utils] ******************************
207
+ [stepmod-utils] [SRL MIGRATION: stepmod2mn.jar] COMPLETE document migration and SVG generation.
208
+ [stepmod-utils] ******************************
209
+ [stepmod-utils] [SRL MIGRATION: stepmod-utils] START Annotated EXPRESS generation.
210
+ [stepmod-utils] ******************************
211
+ [stepmod-utils] STEPmod data path: `iso-10303-stepmod-wg12`
212
+ [stepmod-utils] SRL schemas output path: `schemas`
213
+ 5720: `iso-10303-stepmod-wg12/data/modules/activity/arm.exp` processing...
214
+ 5720: Written to: `schemas/activity/arm.exp`
215
+ 5720: Done processing `arm.exp` => `schemas/activity/arm.exp`
216
+ 5720: `iso-10303-stepmod-wg12/data/modules/activity/mim.exp` processing...
217
+ 5720: Written to: `schemas/activity/mim.exp`
218
+ 5720: Done processing `mim.exp` => `schemas/activity/mim.exp`
219
+ 5720: `iso-10303-stepmod-wg12/data/modules/activity_as_realized/arm.exp` processing...
220
+ ...
221
+ 5720: Done processing `mim.exp` => `schemas/zonal_breakdown/mim.exp`
222
+ 5720: `iso-10303-stepmod-wg12/data/resources/action_and_model_relationships_schema/action_and_model_relationships_schema.exp` processing...
223
+ 5720: Written to: `schemas/action_and_model_relationships_schema/action_and_model_relationships_schema.exp`
224
+ 5720: Copy image SKIPPED for `schemas/action_and_model_relationships_schema/action_and_model_relationships_schemaexpg1.svg` as it exists.
225
+ 5720: Copy image SKIPPED for `schemas/action_and_model_relationships_schema/action_and_model_relationships_schemaexpg2.svg` as it exists.
226
+ 5720: Done processing `action_and_model_relationships_schema.exp` => `schemas/action_and_model_relationships_schema/action_and_model_relationships_schema.exp`
227
+ 5720: `iso-10303-stepmod-wg12/data/resources/action_schema/action_schema.exp` processing...
228
+ 5720: Written to: `schemas/action_schema/action_schema.exp`
229
+ 5720: Copy image SKIPPED for `schemas/action_schema/action_schemaexpg1.svg` as it exists.
230
+ 5720: Copy image SKIPPED for `schemas/action_schema/action_schemaexpg2.svg` as it exists.
231
+ 5720: Done processing `action_schema.exp` => `schemas/action_schema/action_schema.exp`
232
+ 5720: `iso-10303-stepmod-wg12/data/resources/aic_advanced_brep/aic_advanced_brep.exp` processing...
233
+ 5720: Written to: `schemas/aic_advanced_brep/aic_advanced_brep.exp`
234
+ 5720: Done processing `aic_advanced_brep.exp` => `schemas/aic_advanced_brep/aic_advanced_brep.exp`
235
+ 5720: `iso-10303-stepmod-wg12/data/resources/aic_associative_draughting_elements/aic_associative_draughting_elements.exp` processing...
236
+ 5720: Written to: `schemas/aic_associative_draughting_elements/aic_associative_draughting_elements.exp`
237
+ ...
238
+ 5720: Written to: `schemas/business_object_models/managed_model_based_3d_engineering_domain/DomainModel.exp`
239
+ 5720: Done processing `DomainModel.exp` => `schemas/business_object_models/managed_model_based_3d_engineering_domain/DomainModel.exp`
240
+ [stepmod-utils] ******************************
241
+ [stepmod-utils] [SRL MIGRATION: stepmod-utils] COMPLETE Annotated EXPRESS generation.
242
+ [stepmod-utils] ******************************
243
+ [stepmod-utils] [SRL MIGRATION: stepmod-utils] START EXPRESS change YAML extraction.
244
+ [stepmod-utils] STEPmod data path: `iso-10303-stepmod-wg12`
245
+ [stepmod-utils] Copied arm.changes.yaml to schemas/activity/arm.changes.yaml
246
+ [stepmod-utils] Copied arm_lf.changes.yaml to schemas/activity/arm_lf.changes.yaml
247
+ [stepmod-utils] Copied mim.changes.yaml to schemas/activity/mim.changes.yaml
248
+ [stepmod-utils] Copied mim_lf.changes.yaml to schemas/activity/mim_lf.changes.yaml
249
+ [stepmod-utils] Copied arm.changes.yaml to schemas/activity_as_realized/arm.changes.yaml
250
+ ...
251
+ [stepmod-utils] Copied topology_schema.changes.yaml to schemas/topology_schema/topology_schema.changes.yaml
252
+ [stepmod-utils] ******************************
253
+ [stepmod-utils] [SRL MIGRATION: stepmod-utils] COMPLETE EXPRESS change YAML extraction.
254
+ [stepmod-utils] ******************************
255
+ [stepmod-utils] [SRL MIGRATION] Migration complete!
256
+ [stepmod-utils] ******************************
257
+ ----
258
+
39
259
  == Conversion of STEPmod descriptions.xml into adoc
40
260
 
41
261
  [source,sh]
@@ -111,7 +331,18 @@ expg_image:contract_schemaexpg1.xml[]
111
331
  expg_image:contract_schemaexpg2.xml[]
112
332
  ----
113
333
 
114
- == Convertion of all schema history information into independent per-schema YAML files
334
+ == Generate EXPRESS Change YAML files
335
+
336
+ EXPRESS Change YAML files are YAML files that contain schema history
337
+ information.
338
+
339
+ This command migrates existing schema change information (in XML) into
340
+ independent per-schema YAML files.
341
+
342
+ The files will be created in the same directory as the schema:
343
+
344
+ * Schema: `shape_dimension_schema/shape_dimension_schema.exp`
345
+ * Output: `shape_dimension_schema/shape_dimension_schema.changes.yaml`
115
346
 
116
347
  Command:
117
348
 
@@ -277,25 +508,3 @@ change_edition:
277
508
  name: connected_edge_with_length_set_items
278
509
  ----
279
510
 
280
-
281
- == Git repository
282
-
283
- If the STEPmod repository is a Git repository, term extract will work.
284
-
285
- Sample output:
286
-
287
- [source,sh]
288
- ----
289
- [stepmod-utils] INFO: STEPmod directory set to ../iso-10303-stepmod.
290
- [stepmod-utils] INFO: Detecting paths...
291
- [stepmod-utils] INFO: Processing XML file data/application_protocols/boundary_representation_for_iso_14306_open_jt/application_protocol.xml
292
- [stepmod-utils] INFO: skipped ISO/CD 10303-243 as it is not IS, DIS or TS
293
- [stepmod-utils] INFO: Processing XML file data/application_protocols/configuration_control_3d_design_ed2/application_protocol.xml
294
- [stepmod-utils] INFO: Completed processing XML file data/application_protocols/configuration_control_3d_design_ed2/application_protocol.xml
295
- [stepmod-utils] INFO: Processing XML file data/application_protocols/electronic_assembly_interconnect_and_packaging_design/application_protocol.xml
296
- [stepmod-utils] INFO: skipped ISO/CD 10303-210:2019 as it is not IS, DIS or TS
297
- [stepmod-utils] INFO: Processing XML file data/application_protocols/functional_data_and_their_schematic_representation_for_process_plant/application_protocol.xml
298
- [stepmod-utils] INFO: Completed processing XML file data/application_protocols/functional_data_and_their_schematic_representation_for_process_plant/application_protocol.xml
299
- ...
300
- ----
301
-
@@ -4,8 +4,52 @@ require "concurrent"
4
4
  require "stepmod/utils/stepmod_file_annotator"
5
5
  require "fileutils"
6
6
 
7
- stepmod_dir = ARGV.first || Dir.pwd
8
- stepmod_dir = Pathname.new(stepmod_dir.gsub("\\", "/"))
7
+ require "bundler/setup"
8
+ require "optparse"
9
+
10
+ def log(message, indent = 0)
11
+ indent_spaces = " " * (indent * 2)
12
+ puts "[stepmod-utils] #{indent_spaces}#{message}"
13
+ end
14
+
15
+ options = {}
16
+ OptionParser.new do |opts|
17
+ opts.banner = "Usage: #{$0} [options]"
18
+
19
+ opts.on(
20
+ "--stepmod-dir STEPMOD_DIR",
21
+ String,
22
+ "Path to STEPmod directory",
23
+ ) do |path|
24
+ options[:stepmod_dir] = path
25
+ end
26
+
27
+ opts.on(
28
+ "--output SRL_SCHEMAS_DIR",
29
+ String,
30
+ "Path to output SRL schemas",
31
+ ) do |path|
32
+ options[:srl_output_schemas_dir] = path
33
+ end
34
+
35
+ opts.on_tail("-h", "--help", "Show this message") do
36
+ puts opts
37
+ exit
38
+ end
39
+ end.parse!
40
+
41
+ stepmod_dir = options[:stepmod_dir]
42
+ raise StandardError.new("--stepmod-dir not set") unless stepmod_dir
43
+
44
+ stepmod_path = Pathname.new(stepmod_dir)
45
+ unless (stepmod_path.join("data").exist? && stepmod_path.join("data").directory?)
46
+ raise StandardError.new("--stepmod-dir should be the root STEPmod directory and contains data/")
47
+ end
48
+ log "STEPmod data path: `#{stepmod_dir}`"
49
+
50
+ srl_output_schemas_dir = options[:srl_output_schemas_dir]
51
+ raise StandardError.new("--output directory for SRL schemas not set") unless srl_output_schemas_dir
52
+ log "SRL schemas output path: `#{srl_output_schemas_dir}`"
9
53
 
10
54
  def all_express_files(stepmod_dir)
11
55
  index_file = File.read(File.join(stepmod_dir, "repository_index.xml"))
@@ -46,7 +90,6 @@ end
46
90
  # It will return nil if the file does not exist
47
91
  def file_system_path(filepath, filename_cache)
48
92
  dir = File.dirname(filepath)
49
- filename = File.basename(filepath)
50
93
 
51
94
  return filename_cache[dir][filepath.downcase] if filename_cache[dir]
52
95
 
@@ -69,32 +112,50 @@ MAX_QUEUE_SIZE = MAX_THREADS * 4
69
112
  files = all_express_files(stepmod_dir)
70
113
  filename_cache = {}
71
114
 
115
+ FileUtils.mkdir_p(srl_output_schemas_dir)
116
+
72
117
  files.each do |file|
73
- puts "#{Thread.current.object_id}: Processing #{file}"
118
+ puts "#{Thread.current.object_id}: `#{file}` processing..."
74
119
 
75
120
  result = Stepmod::Utils::StepmodFileAnnotator.new(
76
121
  express_file: file,
77
122
  stepmod_dir: stepmod_dir,
78
123
  ).call
79
124
 
80
- annotated_file_name = "#{File.basename(file, '.exp')}_annotated.exp"
81
- annotated_file_path = File.join(File.dirname(file), annotated_file_name)
125
+ destination_rel_path = Pathname.new(file).dirname.relative_path_from(stepmod_path.join("data"))
126
+ directory_type = destination_rel_path.each_filename.to_a.first
127
+
128
+ if %w(resources modules).include?(directory_type)
129
+ destination_rel_path = Pathname.new(file).dirname.relative_path_from(stepmod_path.join("data").join(directory_type))
130
+ end
131
+
132
+ destination_path = Pathname.new(srl_output_schemas_dir).join(destination_rel_path)
133
+ FileUtils.mkdir_p(destination_path)
134
+
135
+ annotated_file_path = destination_path.join(File.basename(file))
82
136
 
83
137
  File.open(annotated_file_path, "w") do |annotated_file|
84
138
  annotated_file.puts(result[:annotated_text])
85
139
  end
140
+ puts "#{Thread.current.object_id}: Written to: `#{annotated_file_path}`"
86
141
 
87
142
  result[:images_references].each do |source, destination|
88
- source_path = File.join(stepmod_dir, "data", source)
89
- system_source_path = file_system_path(source_path, filename_cache)
90
- destination_path = File.join(File.dirname(file), destination)
91
-
92
- puts "#{Thread.current.object_id}: Starting to copy file from #{source_path} to #{destination_path}"
93
- next if !system_source_path
94
-
95
- FileUtils.cp(system_source_path, destination_path)
96
- puts "#{Thread.current.object_id}: Done copying #{system_source_path} to #{destination_path}"
143
+ source_path = stepmod_path.join("data", source)
144
+ system_source_path = file_system_path(source_path.to_s, filename_cache)
145
+ image_dest_path = destination_path.join(destination)
146
+
147
+ unless system_source_path
148
+ if image_dest_path.exist?
149
+ puts "#{Thread.current.object_id}: Copy image SKIPPED for `#{image_dest_path}` as it exists."
150
+ else
151
+ puts "#{Thread.current.object_id}: Copy image FAILED from `#{source_path}` to `#{image_dest_path}`"
152
+ end
153
+ next
154
+ end
155
+
156
+ FileUtils.cp(system_source_path, image_dest_path)
157
+ puts "#{Thread.current.object_id}: Copy image SUCCESS: `#{system_source_path}` to `#{image_dest_path}`"
97
158
  end
98
159
 
99
- puts "#{Thread.current.object_id}: Done processing #{File.basename(file)} => #{annotated_file_path}."
160
+ puts "#{Thread.current.object_id}: Done processing `#{File.basename(file)}` => `#{annotated_file_path}`"
100
161
  end
@@ -8,15 +8,6 @@ bin_file = Pathname.new(__FILE__).realpath
8
8
  # add self to libpath
9
9
  $:.unshift File.expand_path("../../lib", bin_file)
10
10
 
11
- # Fixes https://github.com/rubygems/rubygems/issues/1420
12
- require "rubygems/specification"
13
-
14
- module Gem
15
- class Specification
16
- def this; self; end
17
- end
18
- end
19
-
20
11
  require "bundler/setup"
21
12
  require "stepmod/utils/smrl_description_converter"
22
13
 
@@ -8,15 +8,6 @@ bin_file = Pathname.new(__FILE__).realpath
8
8
  # add self to libpath
9
9
  $:.unshift File.expand_path("../../lib", bin_file)
10
10
 
11
- # Fixes https://github.com/rubygems/rubygems/issues/1420
12
- require "rubygems/specification"
13
-
14
- module Gem
15
- class Specification
16
- def this; self; end
17
- end
18
- end
19
-
20
11
  require "bundler/setup"
21
12
  require "stepmod/utils/smrl_resource_converter"
22
13
 
@@ -7,15 +7,6 @@ bin_file = Pathname.new(__FILE__).realpath
7
7
  # add self to libpath
8
8
  $:.unshift File.expand_path("../../lib", bin_file)
9
9
 
10
- # Fixes https://github.com/rubygems/rubygems/issues/1420
11
- require "rubygems/specification"
12
-
13
- module Gem
14
- class Specification
15
- def this; self; end
16
- end
17
- end
18
-
19
10
  require "bundler/setup"
20
11
  require "stepmod/utils/changes_extractor"
21
12
  require "optparse"
@@ -9,15 +9,6 @@ bin_file = Pathname.new(__FILE__).realpath
9
9
  # add self to libpath
10
10
  $:.unshift File.expand_path("../../lib", bin_file)
11
11
 
12
- # Fixes https://github.com/rubygems/rubygems/issues/1420
13
- require "rubygems/specification"
14
-
15
- module Gem
16
- class Specification
17
- def this; self; end
18
- end
19
- end
20
-
21
12
  require "bundler/setup"
22
13
  require_relative "../lib/stepmod/utils/terms_extractor"
23
14
  require "optparse"
@@ -3,35 +3,43 @@
3
3
  # encoding: UTF-8
4
4
 
5
5
  require "pathname"
6
+ require "fileutils"
6
7
  bin_file = Pathname.new(__FILE__).realpath
7
8
 
8
9
  # add self to libpath
9
10
  $:.unshift File.expand_path("../../lib", bin_file)
10
11
 
11
- # Fixes https://github.com/rubygems/rubygems/issues/1420
12
- require "rubygems/specification"
13
-
14
- module Gem
15
- class Specification
16
- def this; self; end
17
- end
18
- end
19
-
20
12
  require "bundler/setup"
21
13
  require "optparse"
22
14
 
23
- def log(message)
15
+ def log(message, indent = 0)
16
+ indent_spaces = " " * (indent * 2)
24
17
  puts "[stepmod-utils] #{message}"
25
18
  end
26
19
 
20
+ def copy_files_to_schemas(path, srl_output_docs_dir)
21
+ schema_name = path.dirname.basename
22
+ file_name = path.basename
23
+
24
+ new_dir = File.join(srl_output_docs_dir, schema_name)
25
+ new_file_path = File.join(new_dir, file_name)
26
+
27
+ unless Dir.exist?(new_dir)
28
+ FileUtils.mkdir_p(new_dir)
29
+ end
30
+
31
+ FileUtils.copy_file(path, new_file_path)
32
+ log("Copied #{path.basename} to #{new_file_path}", 1)
33
+ end
34
+
27
35
  options = {}
28
36
  OptionParser.new do |opts|
29
37
  opts.banner = "Usage: #{$0} [options]"
30
38
 
31
39
  opts.on(
32
- "--stepmod-data-dir STEPMOD_DATA_DIR",
40
+ "--stepmod-dir STEPMOD_DIR",
33
41
  String,
34
- "Path to STEPmod data directory",
42
+ "Path to the STEPmod root directory",
35
43
  ) do |path|
36
44
  options[:stepmod_dir] = path
37
45
  end
@@ -39,7 +47,7 @@ OptionParser.new do |opts|
39
47
  opts.on(
40
48
  "--srl-docs-dir SRL_DOCS_DIR",
41
49
  String,
42
- "Path to output srl docs",
50
+ "Path to output SRL docs",
43
51
  ) do |path|
44
52
  options[:srl_output_docs_dir] = path
45
53
  end
@@ -47,50 +55,118 @@ OptionParser.new do |opts|
47
55
  opts.on(
48
56
  "--srl-schemas-dir SRL_SCHEMAS_DIR",
49
57
  String,
50
- "Path to output srl schemas",
58
+ "Path to output SRL schemas",
51
59
  ) do |path|
52
60
  options[:srl_output_schemas_dir] = path
53
61
  end
54
62
 
55
63
  opts.on(
56
- "-s",
57
- "--stepmod2mn-executeable STEPMOD2MN_EXECUTEABLE",
64
+ "--stepmod2mn-path STEPMOD2MN_JAR_PATH",
58
65
  String,
59
- "Path to STEPMOD2MN_EXECUTEABLE",
66
+ "Path to stepmod2mn-vx.y.jar",
60
67
  ) do |path|
61
68
  options[:stepmod2mn_path] = path
62
69
  end
63
70
 
64
- opts.on_tail("-h", "--help", "Show this message") do
71
+ opts.on_tail("-h", "--help", "Show this help message") do
65
72
  puts opts
66
73
  exit
67
74
  end
68
75
  end.parse!
69
76
 
77
+ def download_stepmod2mn(path)
78
+ return path if path && path.exist?
79
+
80
+ require 'octokit'
81
+ require "down"
82
+ require "fileutils"
83
+
84
+ client = Octokit::Client.new
85
+ download_url = client.latest_release('metanorma/stepmod2mn').assets.first.browser_download_url
86
+
87
+ filename = Pathname.new(download_url).basename.to_s
88
+
89
+ destination_path = path || Pathname.pwd.join(filename)
90
+ return destination_path if !destination_path.nil? && destination_path.exist?
91
+
92
+ puts "Downloading `stepmod2mn.jar` to `#{destination_path}`."
93
+ tempfile = Down.download(download_url)
94
+ FileUtils.mkdir_p(Pathname.new(destination_path).dirname)
95
+ FileUtils.mv(tempfile.path, destination_path)
96
+
97
+ destination_path
98
+ end
99
+
70
100
  stepmod2mn_path = options[:stepmod2mn_path]
71
- if stepmod2mn_path.nil?
72
- raise StandardError.new(
73
- "stepmod2mn executeable is required, set with the `-s` option.",
74
- )
101
+ if !stepmod2mn_path.nil?
102
+ if Pathname.new(stepmod2mn_path).exist?
103
+ puts "Specified `stepmod2mn.jar` found, using existing file."
104
+ else
105
+ stepmod2mn_path = download_stepmod2mn(Pathname.new(stepmod2mn_path))
106
+ end
107
+ puts "Specified `stepmod2mn.jar` not found, downloading from GitHub."
108
+ else
109
+ stepmod2mn_path = download_stepmod2mn(nil)
75
110
  end
111
+ log "`stepmod2mn.jar` path: `#{stepmod2mn_path}`"
76
112
 
77
113
  stepmod_dir = options[:stepmod_dir] || "stepmod"
78
114
  if stepmod_dir.nil?
79
115
  raise StandardError.new(
80
- "stepmod data directory required, set with the `--stepmod_dir` option.",
116
+ "Please provide path to the STEPmod root directory with `--stepmod_dir`.",
81
117
  )
82
118
  end
83
119
 
84
- migrate_docs_command = %(stepmod-srl-migrate-docs -s "#{stepmod2mn_path}" --stepmod-data-dir "#{stepmod_dir}")
85
- migrate_docs_command += %( --srl-docs-dir #{options[:srl_output_docs_dir]}) if options[:srl_output_docs_dir]
120
+ stepmod_path = Pathname.new(stepmod_dir)
121
+ unless stepmod_path.exist? && stepmod_path.directory? &&
122
+ stepmod_path.join("data").exist? && stepmod_path.join("data").directory?
123
+ puts "Specified STEPmod directory not found, not a directory, or does not contain `data/`. Aborting."
124
+ exit 1
125
+ end
126
+
127
+ stepmod_dir = options[:stepmod_dir] || "stepmod"
128
+ log "STEPmod path: `#{stepmod_dir}`"
86
129
 
87
- migrate_schemas_command = %(stepmod-srl-migrate-schemas -s "#{stepmod2mn_path}" --stepmod-data-dir "#{stepmod_dir}")
88
- migrate_schemas_command += %( --srl-schemas-dir #{options[:srl_output_schemas_dir]}) if options[:srl_output_schemas_dir]
130
+ srl_output_schemas_dir = options[:srl_output_schemas_dir] || "schemas"
131
+ unless File.directory?(srl_output_schemas_dir)
132
+ FileUtils.mkdir_p(srl_output_schemas_dir)
133
+ end
134
+ log "SRL output schemas directory path: `#{srl_output_schemas_dir}`"
135
+
136
+ srl_output_docs_dir = options[:srl_output_docs_dir] || "documents"
137
+ unless File.directory?(srl_output_docs_dir)
138
+ FileUtils.mkdir_p(srl_output_docs_dir)
139
+ end
140
+ log "SRL output documents directory path: `#{srl_output_docs_dir}`"
141
+
142
+ log("*"*30)
143
+ log("[SRL MIGRATION] Migration starts!")
144
+
145
+ log("*"*30)
146
+ log("[SRL MIGRATION: stepmod2mn.jar] START document migration and SVG generation.")
147
+ log("*"*30)
148
+ system "java -Xss5m -jar #{stepmod2mn_path} #{stepmod_dir} --output #{srl_output_docs_dir}"
149
+ log("*"*30)
150
+ log("[SRL MIGRATION: stepmod2mn.jar] COMPLETE document migration and SVG generation.")
151
+
152
+ log("*"*30)
153
+ log("[SRL MIGRATION: stepmod-utils] START Annotated EXPRESS generation.")
154
+ log("*"*30)
155
+ system "stepmod-annotate-all --stepmod-dir #{stepmod_dir} --output #{srl_output_schemas_dir}"
156
+ log("*"*30)
157
+ log("[SRL MIGRATION: stepmod-utils] COMPLETE Annotated EXPRESS generation.")
158
+
159
+ log("*"*30)
160
+ log("[SRL MIGRATION: stepmod-utils] START EXPRESS change YAML extraction.")
161
+ system "stepmod-extract-changes -p #{stepmod_dir}"
162
+ Dir.glob("#{stepmod_dir}/data/**/*.changes.yaml").each do |filepath|
163
+ path = Pathname.new(filepath)
164
+ copy_files_to_schemas(path, srl_output_schemas_dir)
165
+ end
166
+ log("*"*30)
167
+ log("[SRL MIGRATION: stepmod-utils] COMPLETE EXPRESS change YAML extraction.")
89
168
 
90
- log("--- START Migrate Docs ---")
91
- system migrate_docs_command
92
- log("--- END Migrate Docs ---")
169
+ log("*"*30)
170
+ log("[SRL MIGRATION] Migration complete!")
93
171
 
94
- log("--- START Migrate Schemas ---")
95
- system migrate_schemas_command
96
- log("--- END Migrate Schemas ---")
172
+ log("*"*30)
@@ -0,0 +1,104 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'nokogiri'
4
+ require 'expressir'
5
+ require 'expressir/express/parser'
6
+ require 'expressir/express/formatter'
7
+
8
+ stepmod_dir = ARGV.pop || "iso-10303-stepmod-wg12"
9
+ stepmod_path = Pathname.new(stepmod_dir)
10
+
11
+ SHOULD_REWRITE = false
12
+
13
+ REPO_INDEX_XML = stepmod_path.join("repository_index.xml")
14
+
15
+ def all_express_files(stepmod_dir)
16
+ index_file = File.read(REPO_INDEX_XML)
17
+ index = Nokogiri::XML(index_file).root
18
+
19
+ files = []
20
+ index.xpath("modules/module").each do |item|
21
+ files << "#{stepmod_dir}/data/modules/#{item['name']}/arm.exp"
22
+ files << "#{stepmod_dir}/data/modules/#{item['name']}/mim.exp"
23
+ end
24
+
25
+ index.xpath("resources/resource").each do |item|
26
+ next if item["name"] == "iso13584_expressions_schema"
27
+
28
+ files << "#{stepmod_dir}/data/resources/#{item['name']}/#{item['name']}.exp"
29
+ end
30
+
31
+ index.xpath("business_object_models/business_object_model").each do |item|
32
+ files << "#{stepmod_dir}/data/business_object_models/#{item['name']}/bom.exp"
33
+ files << "#{stepmod_dir}/data/business_object_models/#{item['name']}/DomainModel.exp"
34
+ end
35
+
36
+ files.filter { |file| File.exist?(file) }
37
+ end
38
+
39
+ def parse_express_schema(path)
40
+ Expressir::Express::Parser.from_file(path)
41
+ rescue
42
+ puts "ERROR: Broken schema detected in #{path}!"
43
+ nil
44
+ end
45
+
46
+ def format_express_schema(repo)
47
+ Expressir::Express::Formatter.format(repo)
48
+ end
49
+
50
+ schemas_status = {}
51
+
52
+ puts "Validating all EXPRESS schema files listed in:"
53
+ puts REPO_INDEX_XML
54
+ puts
55
+ puts "NOTE: SHOULD_REWRITE mode is turned #{SHOULD_REWRITE ? 'ON' : 'OFF'}"
56
+
57
+ all_express_files(stepmod_dir).each_with_index do |exp_file, i|
58
+ # puts "i #{i}"
59
+ # next if i > 10
60
+
61
+ puts "validating: #{exp_file}"
62
+ exp_path = Pathname.new(exp_file)
63
+ repo = parse_express_schema(exp_file)
64
+
65
+
66
+ schemas_status[exp_path.to_s] = repo ? true : false
67
+
68
+ if repo.nil?
69
+ puts "FAILED : #{exp_file}"
70
+ next
71
+ end
72
+
73
+ puts "validated : #{exp_file}"
74
+
75
+ # Commented out pretty formatting as some formatted schemas will fail validation...
76
+ if SHOULD_REWRITE
77
+ formatted_schema = format_express_schema(repo)
78
+ # experimental_path = exp_path.dirname.join(exp_path.basename('.exp').to_s+".x.exp")
79
+
80
+ puts "rewriting : #{exp_path.to_s}"
81
+ exp_path.truncate(0)
82
+ exp_path.write(formatted_schema)
83
+ end
84
+
85
+ end
86
+
87
+ puts "*"*30
88
+
89
+ if schemas_status.values.include?(false)
90
+ puts "The following schemas failed validation:"
91
+ schemas_status.select do |path, status|
92
+ status == false
93
+ end.each_pair do |path, status|
94
+ puts "SCHEMA: #{path}"
95
+ end
96
+ puts "*"*30
97
+
98
+ exit 1
99
+ end
100
+
101
+ puts "All schemas passed validation."
102
+ puts "*"*30
103
+
104
+ exit 0
@@ -130,7 +130,9 @@ module Stepmod
130
130
  private
131
131
 
132
132
  def sanitize(file_content)
133
- file_content.gsub("(*)", "(`*`)")
133
+ file_content
134
+ .gsub("(*)", "(`*`)")
135
+ .gsub(";;", ";")
134
136
  end
135
137
 
136
138
  def add_images_references(description, schema_base_dir, processed_images_cache)
@@ -150,6 +152,8 @@ module Stepmod
150
152
  processed_images_cache[new_image_file_path] = true
151
153
  @images_references[image_file_path] = new_image_file_path
152
154
  end
155
+
156
+ @images_references
153
157
  end
154
158
 
155
159
  def convert_from_description_text(descriptions_file, description)
@@ -1,5 +1,5 @@
1
1
  module Stepmod
2
2
  module Utils
3
- VERSION = "0.4.0".freeze
3
+ VERSION = "0.4.2".freeze
4
4
  end
5
5
  end
@@ -37,6 +37,8 @@ Gem::Specification.new do |spec|
37
37
  spec.add_runtime_dependency "indefinite_article"
38
38
  spec.add_runtime_dependency "ptools"
39
39
  spec.add_runtime_dependency "pubid-iso"
40
+ spec.add_runtime_dependency "octokit"
41
+ spec.add_runtime_dependency "down"
40
42
  spec.add_runtime_dependency "reverse_adoc", ">= 0.3"
41
43
  spec.add_runtime_dependency "thor", ">= 0.20"
42
44
  spec.add_development_dependency "rubocop"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stepmod-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-12-01 00:00:00.000000000 Z
11
+ date: 2023-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -94,6 +94,34 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: octokit
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: down
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: reverse_adoc
99
127
  requirement: !ruby/object:Gem::Requirement
@@ -176,8 +204,7 @@ executables:
176
204
  - stepmod-extract-changes
177
205
  - stepmod-extract-concepts
178
206
  - stepmod-srl-migrate
179
- - stepmod-srl-migrate-docs
180
- - stepmod-srl-migrate-schemas
207
+ - stepmod-validate-express
181
208
  extensions: []
182
209
  extra_rdoc_files: []
183
210
  files:
@@ -201,8 +228,7 @@ files:
201
228
  - exe/stepmod-extract-changes
202
229
  - exe/stepmod-extract-concepts
203
230
  - exe/stepmod-srl-migrate
204
- - exe/stepmod-srl-migrate-docs
205
- - exe/stepmod-srl-migrate-schemas
231
+ - exe/stepmod-validate-express
206
232
  - lib/stepmod/utils.rb
207
233
  - lib/stepmod/utils/bibdata.rb
208
234
  - lib/stepmod/utils/change.rb
@@ -1,82 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # encoding: UTF-8
4
-
5
- require "fileutils"
6
- # resolve bin path, ignoring symlinks
7
- require "pathname"
8
- bin_file = Pathname.new(__FILE__).realpath
9
-
10
- # add self to libpath
11
- $:.unshift File.expand_path("../../lib", bin_file)
12
-
13
- # Fixes https://github.com/rubygems/rubygems/issues/1420
14
- require "rubygems/specification"
15
-
16
- module Gem
17
- class Specification
18
- def this; self; end
19
- end
20
- end
21
-
22
- require "bundler/setup"
23
- require "optparse"
24
-
25
- def log(message)
26
- puts "[stepmod-utils] #{message}"
27
- end
28
-
29
- options = {}
30
- OptionParser.new do |opts|
31
- opts.banner = "Usage: #{$0} [options]"
32
-
33
- opts.on(
34
- "--stepmod-data-dir STEPMOD_DATA_DIR",
35
- String,
36
- "Path to STEPmod data directory",
37
- ) do |path|
38
- options[:stepmod_dir] = path
39
- end
40
-
41
- opts.on(
42
- "--srl-docs-dir SRL_DOCS_DIR",
43
- String,
44
- "Path to output srl docs",
45
- ) do |path|
46
- options[:srl_output_docs_dir] = path
47
- end
48
-
49
- opts.on(
50
- "-s",
51
- "--stepmod2mn-executeable STEPMOD2MN_EXECUTEABLE",
52
- String,
53
- "Path to STEPMOD2MN_EXECUTEABLE",
54
- ) do |path|
55
- options[:stepmod2mn_path] = path
56
- end
57
-
58
- opts.on_tail("-h", "--help", "Show this message") do
59
- puts opts
60
- exit
61
- end
62
- end.parse!
63
-
64
- stepmod2mn_path = options[:stepmod2mn_path]
65
- if stepmod2mn_path.nil?
66
- raise StandardError.new(
67
- "stepmod2mn executeable is required, set with the `-s` option.",
68
- )
69
- else
70
- log "stepmod2mn executeable path: `#{stepmod2mn_path}`"
71
- end
72
-
73
- stepmod_dir = options[:stepmod_dir] || "stepmod/data"
74
- log "STEPmod data path: `#{stepmod_dir}`"
75
-
76
- srl_output_docs_dir = options[:srl_output_docs_dir] || "documents"
77
- unless File.directory?(srl_output_docs_dir)
78
- FileUtils.mkdir_p(srl_output_docs_dir)
79
- end
80
- log "SRL output docs directory path: `#{srl_output_docs_dir}`"
81
-
82
- system "java -Xss5m -jar #{stepmod2mn_path} #{stepmod_dir} --output #{srl_output_docs_dir}"
@@ -1,114 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # encoding: UTF-8
4
-
5
- require "fileutils"
6
- # resolve bin path, ignoring symlinks
7
- require "pathname"
8
- bin_file = Pathname.new(__FILE__).realpath
9
-
10
- # add self to libpath
11
- $:.unshift File.expand_path("../../lib", bin_file)
12
-
13
- # Fixes https://github.com/rubygems/rubygems/issues/1420
14
- require "rubygems/specification"
15
-
16
- module Gem
17
- class Specification
18
- def this; self; end
19
- end
20
- end
21
-
22
- require "bundler/setup"
23
- require "optparse"
24
-
25
- def log(message, indent = 0)
26
- indent_spaces = " " * (indent * 2)
27
- puts "[stepmod-utils] #{indent_spaces}#{message}"
28
- end
29
-
30
- def copy_files_to_schemas(path, output_dir)
31
- schema_name = path.dirname.basename
32
- file_name = path.basename
33
-
34
- new_dir = File.join(output_dir, schema_name)
35
- new_file_path = File.join(new_dir, file_name.to_s.gsub("_annotated.exp", ".exp"))
36
-
37
- unless Dir.exist?(new_dir)
38
- FileUtils.mkdir_p(new_dir)
39
- end
40
-
41
- FileUtils.copy_file(path, new_file_path)
42
- log("Copied #{path.basename} to #{new_file_path}", 1)
43
- end
44
-
45
- options = {}
46
- OptionParser.new do |opts|
47
- opts.banner = "Usage: #{$0} [options]"
48
-
49
- opts.on(
50
- "--stepmod-data-dir STEPMOD_DATA_DIR",
51
- String,
52
- "Path to STEPmod data directory",
53
- ) do |path|
54
- options[:stepmod_dir] = path
55
- end
56
-
57
- opts.on(
58
- "--srl-schemas-dir SRL_SCHEMAS_DIR",
59
- String,
60
- "Path to output srl schemas",
61
- ) do |path|
62
- options[:srl_output_schemas_dir] = path
63
- end
64
-
65
- opts.on(
66
- "-s",
67
- "--stepmod2mn-executeable STEPMOD2MN_EXECUTEABLE",
68
- String,
69
- "Path to STEPMOD2MN_EXECUTEABLE",
70
- ) do |path|
71
- options[:stepmod2mn_path] = path
72
- end
73
-
74
- opts.on_tail("-h", "--help", "Show this message") do
75
- puts opts
76
- exit
77
- end
78
- end.parse!
79
-
80
- stepmod2mn_path = options[:stepmod2mn_path]
81
- if stepmod2mn_path.nil?
82
- raise StandardError.new(
83
- "stepmod2mn executeable is required, set with the `-s` option.",
84
- )
85
- else
86
- log "stepmod2mn executeable path: `#{stepmod2mn_path}`"
87
- end
88
-
89
- stepmod_dir = options[:stepmod_dir] || "stepmod/data"
90
- log "STEPmod data path: `#{stepmod_dir}`"
91
-
92
- srl_output_schemas_dir = options[:srl_output_schemas_dir] || "schemas"
93
- unless File.directory?(srl_output_schemas_dir)
94
- FileUtils.mkdir_p(srl_output_schemas_dir)
95
- end
96
- log "SRL output schemas directory path: `#{srl_output_schemas_dir}`"
97
-
98
- system "java -Xss5m -jar #{stepmod2mn_path} #{stepmod_dir} --output #{srl_output_schemas_dir} --svg"
99
-
100
- system "stepmod-annotate-all #{stepmod_dir}"
101
-
102
- Dir.glob("#{stepmod_dir}/data/**/*_annotated.exp").each do |filepath|
103
- path = Pathname.new(filepath)
104
- copy_files_to_schemas(path, srl_output_schemas_dir)
105
- end
106
-
107
- system "stepmod-extract-changes -p #{stepmod_dir}"
108
-
109
- Dir.glob("#{stepmod_dir}/data/**/*.changes.yaml").each do |filepath|
110
- path = Pathname.new(filepath)
111
- copy_files_to_schemas(path, srl_output_schemas_dir)
112
- end
113
-
114
- log("Done")