module Fig::Command::Action::Role::ListWalkingDependencyTree

Public Instance Methods

configure(options) click to toggle source
# File lib/fig/command/action/role/list_walking_dependency_tree.rb, line 28
def configure(options)
  @descriptor = options.descriptor
end
gather_package_dependency_configurations() click to toggle source
# File lib/fig/command/action/role/list_walking_dependency_tree.rb, line 32
def gather_package_dependency_configurations()
  packages = {}
  starting_config_names = base_display_config_names()
  base_package = @execution_context.base_package

  if ! base_package.name.nil?
    packages[base_package] = starting_config_names.to_set
  end

  do_walk_dependency_tree(base_package, starting_config_names, nil, 0, nil) do
    |package, config_name, depth|

    if (
          ! package.name.nil?           \
      &&  ! (
                ! list_all_configs?    \
            &&  @descriptor                     \
            &&  package.name == @descriptor.name
          )
    )
      packages[package] ||= Set.new
      packages[package] << config_name
    end
  end

  if ! list_all_configs? && @descriptor
    packages.reject! do |package, config_names|
      package.name == @descriptor.name
    end
  end

  return packages
end
modifies_repository?() click to toggle source
# File lib/fig/command/action/role/list_walking_dependency_tree.rb, line 14
def modifies_repository?()
  return false
end
walk_dependency_tree( base_package, config_names, include_block = nil, &package_block ) click to toggle source
# File lib/fig/command/action/role/list_walking_dependency_tree.rb, line 18
def walk_dependency_tree(
  base_package, config_names, include_block = nil, &package_block
)
  do_walk_dependency_tree(
    base_package, config_names, nil, 0, include_block, &package_block
  )

  return
end

Private Instance Methods

do_walk_dependency_tree( base_package, config_names, backtrace, depth, include_block, &package_block ) click to toggle source
# File lib/fig/command/action/role/list_walking_dependency_tree.rb, line 68
def do_walk_dependency_tree(
  base_package, config_names, backtrace, depth, include_block, &package_block
)
  config_names.each do
    |config_name|

    if depth < 1
      @execution_context.repository.reset_cached_data
      @execution_context.non_repository_packages.reset_cached_data
    end

    package_block.call base_package, config_name, depth

    new_backtrace = new_backtrace(backtrace, base_package, config_name)

    base_package.package_dependencies(config_name, new_backtrace).each do
      |descriptor|

      package = package_for_descriptor descriptor, base_package

      do_walk_dependency_tree(
        package,
        [descriptor.config || Fig::Package::DEFAULT_CONFIG],
        new_backtrace,
        depth + 1,
        include_block,
        &package_block
      )

      if include_block
        include_block.call(
          base_package, config_name, package, descriptor.config
        )
      end
    end
  end

  return
end
new_backtrace(backtrace, base_package, config_name) click to toggle source
# File lib/fig/command/action/role/list_walking_dependency_tree.rb, line 108
def new_backtrace(backtrace, base_package, config_name)
  return Fig::IncludeBacktrace.new(
    backtrace,
    Fig::PackageDescriptor.new(
      base_package.name(),
      base_package.version(),
      config_name,
      :description => base_package.description
    )
  )
end
package_for_descriptor(descriptor, base_package) click to toggle source
# File lib/fig/command/action/role/list_walking_dependency_tree.rb, line 120
def package_for_descriptor(descriptor, base_package)
  if descriptor.name
    return @execution_context.repository.get_package(
      descriptor, :allow_any_version
    )
  elsif descriptor.file_path
    return @execution_context.non_repository_packages[descriptor.file_path]
  end

  return base_package
end