class Mudguard::Infrastructure::Persistence::ProjectRepository

Provides access to the persisted source and policies

Public Class Methods

load_source_policies(project_path) click to toggle source
# File lib/mudguard/infrastructure/persistence/project_repository.rb, line 13
def load_source_policies(project_path)
  file = PolicyFile.read(project_path)
  scopes = file.flat_map do |patterns, policies|
    build_scope(patterns, policies, project_path)
  end

  sources = scopes.group_by { |e| e[:source] }

  sources.map(&method(:build_policies))
end

Private Class Methods

build_policies(source, group) click to toggle source
# File lib/mudguard/infrastructure/persistence/project_repository.rb, line 26
def build_policies(source, group)
  policies = group.flat_map { |r| r[:policies] }.uniq
  Domain::SourcePolicies.new(source: source, policies: policies)
end
build_scope(patterns, policies, project_path) click to toggle source
# File lib/mudguard/infrastructure/persistence/project_repository.rb, line 31
def build_scope(patterns, policies, project_path)
  sources = RubyFiles.select(project_path, patterns: [patterns])
  sources.flat_map { |s| { source: s, policies: policies } }
end