Class: Rdm::PackageImporter

Inherits:
Object
  • Object
show all
Defined in:
lib/rdm/package_importer.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.import_file(package_path, group: nil) ⇒ Rdm::Package

Initialize current package using Package.rb

Parameters:

  • package_path (String)

    Package.rb file path

  • group (Optional<String>) (defaults to: nil)

    Dependency group

Returns:



10
11
12
# File 'lib/rdm/package_importer.rb', line 10

def import_file(package_path, group: nil)
  instance.import_file(package_path, group: group)
end

.import_package(package_name, source:, group: nil) ⇒ Object

Import package and initialize module



15
16
17
# File 'lib/rdm/package_importer.rb', line 15

def import_package(package_name, source:, group: nil)
  instance.import_package(package_name, source: source, group: group)
end

.instanceObject



19
20
21
# File 'lib/rdm/package_importer.rb', line 19

def instance
  @instance ||= new
end

.reset!Object



23
24
25
# File 'lib/rdm/package_importer.rb', line 23

def reset!
  @instance = nil
end

Instance Method Details

#import_file(package_path, group: nil) ⇒ Rdm::Package

Initialize current package using Package.rb

Parameters:

  • package_path (String)

    Package.rb file path

  • group (Optional<String>) (defaults to: nil)

    Dependency group

Returns:



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/rdm/package_importer.rb', line 32

def import_file(package_path, group: nil)
  package = Rdm::PackageParser.parse_file(package_path)
  source  = read_and_init_source(package.source)

  # Init Rdm.root based on Rdm.packages directory
  Rdm.root = File.dirname(package.source)

  # Import package and it's dependencies
  import_package(package.name, source: source, group: group.to_s)

  package
end

#import_package(package_name, source:, group: nil) ⇒ Object

Import package and initialize module



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/rdm/package_importer.rb', line 54

def import_package(package_name, source:, group: nil)
  return imported_packages if imported_packages.include?(package_name.to_s)
  package = source.packages[package_name.to_s]

  raise "Can't find package with name: #{package_name}" if package.nil?

  init_package(package, group: group)
  imported_packages << package_name

  # also import local dependencies
  package.local_dependencies(group).each do |dependency|
    import_package(dependency, source: source, group: group)
  end

  # also import config dependencies
  package.config_dependencies(group).each do |dependency|
    import_config(dependency, source: source)
  end

  # only after importing dependencies - require package itself
  begin
    require package_name
  rescue LoadError => e
    unless Rdm.settings.silence_missing_package_file
      package_require_path = "#{package_name}/#{package_subdir_name}/#{package_name}.rb"
      puts "WARNING: Can't require package #{package_name}, please make sure that file #{package_require_path} exists and it's valid."
      raise e
    end
  end
  imported_packages
end

#imported_configsObject



49
50
51
# File 'lib/rdm/package_importer.rb', line 49

def imported_configs
  @imported_configs ||= []
end

#imported_packagesObject



45
46
47
# File 'lib/rdm/package_importer.rb', line 45

def imported_packages
  @imported_packages ||= []
end