Class: Rdm::Handlers::DependenciesHandler

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

Constant Summary collapse

ALREADY_MENTIONED_DEPS =
'...'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(package_name, project_path) ⇒ DependenciesHandler

Returns a new instance of DependenciesHandler.



20
21
22
23
# File 'lib/rdm/handlers/dependencies_handler.rb', line 20

def initialize(package_name, project_path)
  @package_name = package_name
  @project_path = project_path
end

Class Method Details

.draw(package_name:, project_path:) ⇒ Object



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

def draw(package_name:, project_path:)
  new(package_name, project_path).draw
end

.show_names(package_name:, project_path:) ⇒ Object



7
8
9
# File 'lib/rdm/handlers/dependencies_handler.rb', line 7

def show_names(package_name:, project_path:)
  new(package_name, project_path).show_names
end

.show_packages(package_name:, project_path:) ⇒ Object



11
12
13
# File 'lib/rdm/handlers/dependencies_handler.rb', line 11

def show_packages(package_name:, project_path:)
  new(package_name, project_path).show_packages
end

Instance Method Details

#draw(pkg_name = @package_name, uniq_packages = [], self_predicate = '', child_predicate = '') ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/rdm/handlers/dependencies_handler.rb', line 45

def draw(pkg_name = @package_name, uniq_packages = [], self_predicate = '', child_predicate = '')
  raise Rdm::Errors::InvalidParams, "Type package name, ex: rdm gen.deps repository" if pkg_name.to_s.empty?
  raise Rdm::Errors::PackageHasNoDependencies, @package_name if source.packages[@package_name].local_dependencies.empty?

  node = [format(pkg_name, self_predicate)]
  
  return node if pkg_name == ALREADY_MENTIONED_DEPS

  local_dependencies = source.packages[pkg_name].local_dependencies.dup

  if uniq_packages.include?(pkg_name)
    local_dependencies = local_dependencies.count == 0 ? [] : [ALREADY_MENTIONED_DEPS]
  else
    uniq_packages.push(pkg_name)
  end

  local_dependencies.count.times do
    dependency = local_dependencies.pop

    if local_dependencies.empty?
      tmp_self_predicate = child_predicate + '2'
      tmp_child_predicate = child_predicate + '0'
    else
      tmp_self_predicate = child_predicate + '1'
      tmp_child_predicate = child_predicate + '3'
    end
    
    node.push(*draw(dependency, uniq_packages, tmp_self_predicate, tmp_child_predicate))
  end

  node
end

#show_namesObject



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/rdm/handlers/dependencies_handler.rb', line 25

def show_names
  if @package_name.nil? || @package_name.empty?
    raise Rdm::Errors::InvalidParams, "Package name should be specified" 
  end
  
  if @project_path.nil? || @project_path.empty?
    raise Rdm::Errors::InvalidParams, "Project directory should be specified" 
  end
  
  recursive_find_dependencies([@package_name])
end

#show_packagesObject



37
38
39
40
41
42
43
# File 'lib/rdm/handlers/dependencies_handler.rb', line 37

def show_packages
  names = show_names

  source.packages.values.select do |p| 
    names.include?(p.name)
  end
end