2016-02-01 07:43:26 -05:00
|
|
|
# frozen_string_literal: true
|
2014-09-13 23:30:02 -04:00
|
|
|
##
|
|
|
|
# The primary source of gems is a file on disk, including all usages
|
|
|
|
# internal to rubygems.
|
|
|
|
#
|
|
|
|
# This is a private class, do not depend on it directly. Instead, pass a path
|
|
|
|
# object to `Gem::Package.new`.
|
|
|
|
|
|
|
|
class Gem::Package::FileSource < Gem::Package::Source # :nodoc: all
|
|
|
|
attr_reader :path
|
|
|
|
|
2018-11-21 05:20:47 -05:00
|
|
|
def initialize(path)
|
2014-09-13 23:30:02 -04:00
|
|
|
@path = path
|
|
|
|
end
|
|
|
|
|
|
|
|
def start
|
|
|
|
@start ||= File.read path, 20
|
|
|
|
end
|
|
|
|
|
|
|
|
def present?
|
|
|
|
File.exist? path
|
|
|
|
end
|
|
|
|
|
2018-11-21 05:20:47 -05:00
|
|
|
def with_write_io(&block)
|
2018-02-05 21:58:35 -05:00
|
|
|
File.open path, "wb", &block
|
2014-09-13 23:30:02 -04:00
|
|
|
end
|
|
|
|
|
2018-11-21 05:20:47 -05:00
|
|
|
def with_read_io(&block)
|
2018-02-05 21:58:35 -05:00
|
|
|
File.open path, "rb", &block
|
2014-09-13 23:30:02 -04:00
|
|
|
end
|
|
|
|
end
|