Class: Mxrb::OfficialMarketplace::ModulePackageReader
- Inherits:
-
Object
- Object
- Mxrb::OfficialMarketplace::ModulePackageReader
- Defined in:
- lib/mxrb/official_marketplace/module_package_importer.rb
Overview
Parses and safely stages a Mendix module package archive.
Defined Under Namespace
Classes: Descriptor
Instance Method Summary collapse
- #descriptor ⇒ Object
- #extract_project(descriptor, temporary) ⇒ Object
-
#initialize(archive) ⇒ ModulePackageReader
constructor
A new instance of ModulePackageReader.
- #stage_files(files, temporary) ⇒ Object
Constructor Details
#initialize(archive) ⇒ ModulePackageReader
Returns a new instance of ModulePackageReader.
14 15 16 |
# File 'lib/mxrb/official_marketplace/module_package_importer.rb', line 14 def initialize(archive) @archive = archive end |
Instance Method Details
#descriptor ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/mxrb/official_marketplace/module_package_importer.rb', line 18 def descriptor package_xml = @archive.find_entry('package.xml') raise MarketplaceError, 'package.xml is missing' unless package_xml document = REXML::Document.new(package_xml.get_input_stream.read) build_descriptor(document, parse_manifest) end |
#extract_project(descriptor, temporary) ⇒ Object
26 27 28 29 30 31 |
# File 'lib/mxrb/official_marketplace/module_package_importer.rb', line 26 def extract_project(descriptor, temporary) entry = @archive.find_entry(descriptor.project_file) raise MarketplaceError, "package project not found: #{descriptor.project_file}" unless entry copy_entry(entry, File.join(temporary, 'source.mpr')) end |
#stage_files(files, temporary) ⇒ Object
33 34 35 36 37 38 39 40 41 |
# File 'lib/mxrb/official_marketplace/module_package_importer.rb', line 33 def stage_files(files, temporary) root = File.join(temporary, 'assets') files.to_h do |relative| entry = @archive.find_entry(relative) || @archive.find_entry(relative.tr('/', '\\')) raise MarketplaceError, "declared package file is missing: #{relative}" unless entry&.file? [relative, copy_entry(entry, File.join(root, relative))] end end |