Class: Packages::Rpm::ParsePackageService

Inherits:
Object
  • Object
show all
Includes:
Gitlab::Utils::StrongMemoize
Defined in:
app/services/packages/rpm/parse_package_service.rb

Constant Summary collapse

BUILD_ATTRIBUTES_METHOD_NAMES =
%i[changelogs requirements provides].freeze
STATIC_ATTRIBUTES =
%i[name version release summary description arch
license sourcerpm group buildhost packager vendor].freeze
CHANGELOGS_RPM_KEYS =
%i[changelogtext changelogtime].freeze
REQUIREMENTS_RPM_KEYS =
%i[requirename requireversion requireflags].freeze
PROVIDES_RPM_KEYS =
%i[providename provideflags provideversion].freeze

Instance Method Summary collapse

Constructor Details

#initialize(package_file) ⇒ ParsePackageService

Returns a new instance of ParsePackageService.



16
17
18
# File 'app/services/packages/rpm/parse_package_service.rb', line 16

def initialize(package_file)
  @rpm = RPM::File.new(package_file)
end

Instance Method Details

#executeObject

Raises:

  • (ArgumentError)


20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/services/packages/rpm/parse_package_service.rb', line 20

def execute
  raise ArgumentError, 'Unable to parse package' unless valid_package?

  {
    files: rpm.files || [],
    epoch: package_tags[:epoch] || '0',
    changelogs: build_changelogs,
    requirements: build_requirements,
    provides: build_provides,
    directories: package_tags[:dirnames]
  }.merge(extract_static_attributes)
end