summaryrefslogtreecommitdiff
path: root/lib/rubygems/package/file_source.rb
blob: 85316f62e7da82ab6ae6047d700a6d31651d269e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
##
# 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

  def initialize path
    @path = path
  end

  def start
    @start ||= File.read path, 20
  end

  def present?
    File.exist? path
  end

  def with_write_io &block
    open path, 'wb', &block
  end

  def with_read_io &block
    open path, 'rb', &block
  end

end