Class: Packages::Rpm::RepositoryMetadata::UpdateXmlService

Inherits:
Object
  • Object
show all
Defined in:
app/services/packages/rpm/repository_metadata/update_xml_service.rb

Constant Summary collapse

BUILDERS =
{
  other: ::Packages::Rpm::RepositoryMetadata::BuildOtherXmlService,
  primary: ::Packages::Rpm::RepositoryMetadata::BuildPrimaryXmlService,
  filelist: ::Packages::Rpm::RepositoryMetadata::BuildFilelistXmlService
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(filename:, xml: nil, data: {}) ⇒ UpdateXmlService

Returns a new instance of UpdateXmlService.

Raises:

  • (ArgumentError)


12
13
14
15
16
17
18
19
# File 'app/services/packages/rpm/repository_metadata/update_xml_service.rb', line 12

def initialize(filename:, xml: nil, data: {})
  @builder_class = BUILDERS[filename]
  raise ArgumentError, "Filename must be one of: #{BUILDERS.keys.join(', ')}" if @builder_class.nil?

  @xml = Nokogiri::XML(xml) if xml.present?
  @data = data
  @filename = filename
end

Instance Method Details

#executeObject



21
22
23
24
25
26
27
28
# File 'app/services/packages/rpm/repository_metadata/update_xml_service.rb', line 21

def execute
  return build_empty_structure if xml.blank?

  remove_existing_packages
  update_xml_document
  update_package_count
  xml.to_xml
end