44 lines
949 B
Ruby
44 lines
949 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Packages
|
|
module Rubygems
|
|
class CreateGemspecService
|
|
def initialize(package, gemspec)
|
|
@package = package
|
|
@gemspec = gemspec
|
|
end
|
|
|
|
def execute
|
|
write_gemspec_to_file
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :package, :gemspec
|
|
|
|
def write_gemspec_to_file
|
|
file = Tempfile.new
|
|
|
|
begin
|
|
content = gemspec.to_ruby
|
|
file.write(content)
|
|
file.flush
|
|
|
|
md5 = Gitlab::FIPS.enabled? ? nil : Digest::MD5.hexdigest(content)
|
|
|
|
package.package_files.create!(
|
|
file: file,
|
|
size: file.size,
|
|
file_name: "#{gemspec.name}.gemspec",
|
|
file_sha1: Digest::SHA1.hexdigest(content),
|
|
file_md5: md5,
|
|
file_sha256: Digest::SHA256.hexdigest(content)
|
|
)
|
|
ensure
|
|
file.close
|
|
file.unlink
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|