class Mamiya::Storages::Mock

Public Class Methods

clear() click to toggle source
# File lib/mamiya/storages/mock.rb, line 12
def self.clear
  @storage = {}
end
find(config={}) click to toggle source
# File lib/mamiya/storages/mock.rb, line 16
def self.find(config={})
  # TODO: FIXME: Should be an Hash
  storage.keys
end
new(*) click to toggle source
Calls superclass method Mamiya::Storages::Abstract::new
# File lib/mamiya/storages/mock.rb, line 21
def initialize(*)
  super
  self.class.storage[application] ||= {}
end
storage() click to toggle source
# File lib/mamiya/storages/mock.rb, line 8
def self.storage
  @storage ||= {}
end

Public Instance Methods

fetch(package_name, destination) click to toggle source
# File lib/mamiya/storages/mock.rb, line 38
def fetch(package_name, destination)
  self.class.storage[application] ||= {}
  raise NotFound unless self.class.storage[application][package_name]
  package_path = File.join(destination, "#{package_name}.tar.gz")
  meta_path = File.join(destination, "#{package_name}.json")

  if File.exists?(package_path) && File.exists?(meta_path)
    raise AlreadyFetched
  end

  package = self.class.storage[application][package_name][:package]
  FileUtils.cp package.path, package_path
  FileUtils.cp package.meta_path, meta_path
  return package
end
meta(package_name) click to toggle source
# File lib/mamiya/storages/mock.rb, line 54
def meta(package_name)
  package = self.class.storage[application][package_name]
  return unless package

  package[:package].meta
end
packages() click to toggle source
# File lib/mamiya/storages/mock.rb, line 26
def packages
  self.class.storage[application].keys
end
push(package) click to toggle source
# File lib/mamiya/storages/mock.rb, line 30
def push(package)
  raise TypeError, "package should be a kind of Mamiya::Package" unless package.kind_of?(Mamiya::Package)
  raise NotBuilt, "package not built" unless package.exists?
  self.class.storage[application] ||= {}
  raise AlreadyExists if self.class.storage[application][package.name]
  self.class.storage[application][package.name] = {package: package, config: config}
end