class Composer::Repository::FilesystemRepository

Filesystem repository.

PHP Authors: Konstantin Kudryashov <ever.zet@gmail.com> Jordi Boggiano <j.boggiano@seld.be>

Ruby Authors: Ioannis Kappas <ikappas@devworks.gr>

Public Class Methods

new(repository_file) click to toggle source

Initializes filesystem repository. @param [Composer::Json::JsonFile] repository_file repository json file

# File lib/composer/repository/filesystem_repository.rb, line 26
def initialize(repository_file)
  unless repository_file
    raise ArgumentError,
          'repository_file must be specified'
  end
  unless repository_file.is_a?(Composer::Json::JsonFile)
    raise TypeError,
          'repository_file type must be a \
          Composer::Json::JsonFile or superclass'
  end
  super([])
  @file = repository_file
end

Public Instance Methods

reload() click to toggle source
# File lib/composer/repository/filesystem_repository.rb, line 40
def reload
  @packages = nil
  initialize_repository
end
write() click to toggle source

Writes writable repository.

# File lib/composer/repository/filesystem_repository.rb, line 46
def write
  data = []
  dumper = Composer::Package::Dumper::HashDumper.new

  canonical_packages.each { |package| data << dumper.dump(package) }

  @file.write(data)
end

Protected Instance Methods

initialize_repository() click to toggle source

Initializes repository (reads file, or remote address).

# File lib/composer/repository/filesystem_repository.rb, line 58
def initialize_repository
  super
  return unless @file.exists?

  begin
    packages_data = @file.read
    unless packages_data.is_a?(Array)
      raise UnexpectedValueError,
            'Could not parse package list from the repository'
    end
  rescue => e
    raise InvalidRepositoryError,
          "Invalid repository data in #{@file.path}, \
          packages could not be loaded: \
          [#{e.class}] #{e.message}"
  end

  loader = Composer::Package::Loader::HashLoader.new(nil, true)
  packages_data.each do |package_data|
    package = loader.load(package_data)
    add_package(package)
  end

end