Class: Mxrb::OfficialMarketplace::PackageEnvelope
- Inherits:
-
Object
- Object
- Mxrb::OfficialMarketplace::PackageEnvelope
- Defined in:
- lib/mxrb/official_marketplace/widget_package_installer.rb
Overview
Validates the two official Marketplace package envelopes MXRB accepts. rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
Class Method Summary collapse
Class Method Details
.kind(path) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/mxrb/official_marketplace/widget_package_installer.rb', line 18 def self.kind(path) Zip::File.open(path) do |archive| package = archive.find_entry('package.xml') raise MarketplaceError, 'package.xml is missing' unless package document = REXML::Document.new(package.get_input_stream.read) names = document.root&.elements&.map(&:name) || [] return :module if names.include?('modelerProject') return :widget if names.include?('clientModule') raise MarketplaceError, 'package.xml does not declare a module or widget' end rescue Zip::Error, REXML::ParseException => e raise MarketplaceError, "invalid Mendix package: #{e.}" end |