class Pocky::PackwerkLoader

Public Class Methods

load(root_path, package_paths) click to toggle source
# File lib/pocky/packwerk_loader.rb, line 5
def self.load(root_path, package_paths)
  new(root_path, package_paths).load
end
new(root_path, package_paths) click to toggle source
# File lib/pocky/packwerk_loader.rb, line 10
def initialize(root_path, package_paths)
  @root_path = root_path
  @package_paths = package_paths
  @packages = {}
end

Public Instance Methods

load() click to toggle source
# File lib/pocky/packwerk_loader.rb, line 16
def load
  load_primary_packages
  load_secondary_packages

  @packages
end

Private Instance Methods

dependencies_files() click to toggle source
# File lib/pocky/packwerk_loader.rb, line 35
def dependencies_files
  @dependencies_files ||= begin
    return Dir[@root_path.join('**', Pocky::Package::DEPENDENCIES_FILENAME).to_s] unless @package_paths

    @package_paths.flat_map do |path|
      Dir[@root_path.join(path, '**', Pocky::Package::DEPENDENCIES_FILENAME).to_s]
    end
  end
end
deprecated_references_files() click to toggle source
# File lib/pocky/packwerk_loader.rb, line 25
def deprecated_references_files
  @deprecated_references_files ||= begin
    return Dir[@root_path.join('**', Pocky::Package::DEPRECATED_REFERENCES_FILENAME).to_s] unless @package_paths

    @package_paths.flat_map do |path|
      Dir[@root_path.join(path, '**', Pocky::Package::DEPRECATED_REFERENCES_FILENAME).to_s]
    end
  end
end
init_package(package_name, primary) click to toggle source
# File lib/pocky/packwerk_loader.rb, line 45
def init_package(package_name, primary)
  Pocky::Package.new(
    name: package_name,
    path: @root_path.join(package_name).to_s,
    primary: primary
  )
end
load_primary_packages() click to toggle source
# File lib/pocky/packwerk_loader.rb, line 53
def load_primary_packages
  filenames = dependencies_files + deprecated_references_files
  primary_package_names = filenames.map { |filename| parse_package_name(filename) }.uniq
  primary_package_names.each do |name|
    @packages[name] ||= init_package(name, true)
  end
end
load_secondary_packages() click to toggle source
# File lib/pocky/packwerk_loader.rb, line 61
def load_secondary_packages
  secondary_packages = {}
  @packages.each do |_, package|
    package.dependencies.each do |dependency|
      secondary_packages[dependency] ||= init_package(dependency, false) unless @packages[dependency]
    end

    package.deprecated_references.each do |reference, _violations|
      secondary_packages[reference] ||= init_package(reference, false) unless @packages[reference]
    end
  end

  @packages.merge!(secondary_packages)
end
parse_package_name(filename) click to toggle source
# File lib/pocky/packwerk_loader.rb, line 76
def parse_package_name(filename)
  name = File.dirname(filename).gsub(@root_path.to_s, '')
  name == '' ? '.' : name.gsub(/^\//, '')
end