Class: Ree::PackagesFacade

Inherits:
Object show all
Includes:
Args
Defined in:
lib/ree/facades/packages_facade.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Args

#check_arg, #check_arg_any, #check_arg_array_of, #check_bool, #not_nil

Constructor Details

#initializePackagesFacade

Returns a new instance of PackagesFacade.



8
9
10
11
# File 'lib/ree/facades/packages_facade.rb', line 8

def initialize
  load_packages_schema
  @package_loader = Ree::PackageLoader.new(@packages_store)
end

Instance Attribute Details

#package_loaderObject (readonly)

Returns the value of attribute package_loader.



6
7
8
# File 'lib/ree/facades/packages_facade.rb', line 6

def package_loader
  @package_loader
end

#packages_storeObject (readonly)

Returns the value of attribute packages_store.



6
7
8
# File 'lib/ree/facades/packages_facade.rb', line 6

def packages_store
  @packages_store
end

Class Method Details

.write_packages_schemaObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/ree/facades/packages_facade.rb', line 14

def write_packages_schema
  Ree.logger.debug("write_packages_schema")
  packages_schema = Ree::PackagesSchemaBuilder.new.call

  json = JSON.pretty_generate(packages_schema)

  File.write(
    File.join(Ree.root_dir, Ree::PACKAGES_SCHEMA_FILE),
    json,
    mode: 'w'
  )

  json
end

Instance Method Details

#get_loaded_package(package_name) ⇒ Ree::Package

Parameters:

  • package_name (Symbol)

Returns:



32
33
34
# File 'lib/ree/facades/packages_facade.rb', line 32

def get_loaded_package(package_name)
  @package_loader.get_loaded_package(package_name)
end

#get_object(package_name, object_name) ⇒ Ree::Object

Parameters:

  • package_name (Symbol)
  • object_name (Symbol)

Returns:



39
40
41
42
43
44
# File 'lib/ree/facades/packages_facade.rb', line 39

def get_object(package_name, object_name)
  package = get_loaded_package(package_name)
  object = package.get_object(object_name)

  object
end

#get_package(package_name, raise_if_missing = true) ⇒ Ree::Package

Parameters:

  • package_name (Symbol)

Returns:



118
119
120
# File 'lib/ree/facades/packages_facade.rb', line 118

def get_package(package_name, raise_if_missing = true)
  @package_loader.get_package(package_name, raise_if_missing)
end

#has_object?(package_name, object_name) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
49
50
51
# File 'lib/ree/facades/packages_facade.rb', line 46

def has_object?(package_name, object_name)
  package = get_loaded_package(package_name)
  object = package.get_object(object_name)

  !object.nil?
end

#has_package?(package_name) ⇒ Bool

Parameters:

  • package_name (Symbol)

Returns:

  • (Bool)


111
112
113
114
# File 'lib/ree/facades/packages_facade.rb', line 111

def has_package?(package_name)
  check_arg(package_name, :package_name, Symbol)
  !!@packages_store.get(package_name)
end

#load_entire_package(package_name) ⇒ Ree::Package

Parameters:

  • package_name (Symbol)

Returns:



91
92
93
# File 'lib/ree/facades/packages_facade.rb', line 91

def load_entire_package(package_name)
  @package_loader.load_entire_package(package_name)
end

#load_file(path, package_name) ⇒ nil

Parameters:

  • path (String)
  • package_name (Symbol)

Returns:

  • (nil)


131
132
133
# File 'lib/ree/facades/packages_facade.rb', line 131

def load_file(path, package_name)
  @package_loader.load_file(path, package_name)
end

#load_package_entry(package_name) ⇒ Object

Returns nil.

Parameters:

  • package_name (Symbol)

Returns:

  • nil



55
56
57
# File 'lib/ree/facades/packages_facade.rb', line 55

def load_package_entry(package_name)
  @package_loader.load_package_entry(package_name)
end

#load_package_object(package_name, object_name) ⇒ Ree::Object

Parameters:

  • package_name (Symbol)
  • object_name (Symbol)

Returns:



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/ree/facades/packages_facade.rb', line 63

def load_package_object(package_name, object_name)
  package = get_loaded_package(package_name)
  object = get_object(package_name, object_name)

  unless object
    raise Ree::Error.new("object :#{object_name} from :#{package_name} was not found")
  end

  return object if object.loaded?

  Ree.logger.debug("load_package_object(:#{package_name}, :#{object_name})")

  if object.rpath
    object_path = Ree::PathHelper.abs_object_path(object)
    load_file(object_path, package_name)
  end

  object
end

#load_packages_schemaRee::PackagesStore

Returns:



96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/ree/facades/packages_facade.rb', line 96

def load_packages_schema
  Ree.logger.debug("load_packages_schema: #{self.object_id}")
  @packages_store = Ree::PackagesSchemaLoader.new.call(Ree.packages_schema_path, @packages_store)

  Ree.gems.each do |gem|
    Ree::PackagesSchemaLoader.new.call(
      gem.packages_schema_path, @packages_store, gem.name
    )
  end

  @packages_store
end

#read_package_structure(package_name) ⇒ Ree::Package

Parameters:

  • package_name (Symbol)

Returns:



85
86
87
# File 'lib/ree/facades/packages_facade.rb', line 85

def read_package_structure(package_name)
  @package_loader.read_package_structure(package_name)
end

#store_package(package) ⇒ Ree::Package

Parameters:

Returns:



124
125
126
# File 'lib/ree/facades/packages_facade.rb', line 124

def store_package(package)
  @packages_store.add_package(package)
end