debian-mirror-gitlab/app/services/packages/rubygems/metadata_extraction_service.rb
2022-06-21 17:19:12 +05:30

60 lines
2 KiB
Ruby

# frozen_string_literal: true
module Packages
module Rubygems
class MetadataExtractionService
def initialize(package, gemspec)
@package = package
@gemspec = gemspec
end
def execute
write_metadata
end
private
attr_reader :package, :gemspec
# rubocop:disable Metrics/AbcSize
# rubocop:disable Metrics/PerceivedComplexity
# rubocop:disable Metrics/CyclomaticComplexity
def write_metadata
metadatum.update!(
authors: gemspec&.authors,
files: gemspec&.files&.to_json,
summary: gemspec&.summary,
description: gemspec&.description,
email: gemspec&.email,
homepage: gemspec&.homepage,
licenses: gemspec&.licenses&.to_json,
metadata: gemspec&.metadata&.to_json,
author: gemspec&.author,
bindir: gemspec&.bindir,
executables: gemspec&.executables&.to_json,
extensions: gemspec&.extensions&.to_json,
extra_rdoc_files: gemspec&.extra_rdoc_files&.to_json,
platform: gemspec&.platform,
post_install_message: gemspec&.post_install_message,
rdoc_options: gemspec&.rdoc_options&.to_json,
require_paths: gemspec&.require_paths&.to_json,
required_ruby_version: gemspec&.required_ruby_version&.to_s,
required_rubygems_version: gemspec&.required_rubygems_version&.to_s,
requirements: gemspec&.requirements&.to_json,
rubygems_version: gemspec&.rubygems_version
)
end
# rubocop:enable Metrics/AbcSize
# rubocop:enable Metrics/PerceivedComplexity
# rubocop:enable Metrics/CyclomaticComplexity
def metadatum
# safe_find_or_create_by! was originally called here.
# We merely switched to `find_or_create_by!`
# rubocop: disable CodeReuse/ActiveRecord
Packages::Rubygems::Metadatum.find_or_create_by!(package: package)
# rubocop: enable CodeReuse/ActiveRecord
end
end
end
end