Class: Suma::SchemaExporter

Inherits:
Object
  • Object
show all
Defined in:
lib/suma/schema_exporter.rb

Overview

Exports EXPRESS schemas to a directory, with optional ZIP packaging.

Pure sink: the exporter accepts already-loaded Suma::ExpressSchema instances and writes their content to disk. Construction of those instances (with the right output_path and is_standalone_file flags) is the caller's responsibility — the exporter does not reach across the seam to inspect manifest entries or classify schema types itself.

This is a deep module: a small interface (one export method, one option hash) backed by save_exp + zip packaging. The CLI and SchemaCollection adapters construct ExpressSchema instances; the exporter never inspects their shape.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(schemas:, output_path:, options: {}) ⇒ SchemaExporter

Returns a new instance of SchemaExporter.



22
23
24
25
26
# File 'lib/suma/schema_exporter.rb', line 22

def initialize(schemas:, output_path:, options: {})
  @schemas = schemas
  @output_path = Pathname.new(output_path).expand_path
  @options = default_options.merge(options)
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



20
21
22
# File 'lib/suma/schema_exporter.rb', line 20

def options
  @options
end

#output_pathObject (readonly)

Returns the value of attribute output_path.



20
21
22
# File 'lib/suma/schema_exporter.rb', line 20

def output_path
  @output_path
end

#schemasObject (readonly)

Returns the value of attribute schemas.



20
21
22
# File 'lib/suma/schema_exporter.rb', line 20

def schemas
  @schemas
end

Instance Method Details

#exportObject



28
29
30
31
32
33
34
35
# File 'lib/suma/schema_exporter.rb', line 28

def export
  Utils.log "Exporting schemas to: #{output_path}"

  export_to_directory(schemas)
  create_zip_archive if options[:create_zip]

  Utils.log "Export complete!"
end