Class: ParsePackwerk::PackageTodo

Inherits:
T::Struct
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/parse_packwerk/package_todo.rb

Class Method Summary collapse

Class Method Details

.for(package) ⇒ Object



11
12
13
# File 'lib/parse_packwerk/package_todo.rb', line 11

def self.for(package)
  PackageTodo.from(yml(package.directory))
end

.from(pathname) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/parse_packwerk/package_todo.rb', line 16

def self.from(pathname)
  if pathname.exist?
    package_todo_loaded_yml = YAML.load_file(pathname)

    all_violations = []
    package_todo_loaded_yml&.each_key do |to_package_name|
      package_todo_per_package = package_todo_loaded_yml[to_package_name]
      package_todo_per_package.each_key do |class_name|
        symbol_usage = package_todo_per_package[class_name]
        files = symbol_usage['files']
        violations = symbol_usage['violations']
        violations.uniq.each do |violation_type|
          all_violations << Violation.new(type: violation_type, to_package_name: to_package_name, class_name: class_name, files: files)
        end
      end
    end

    new(
      pathname: pathname.cleanpath,
      violations: all_violations
    )
  else
    new(
      pathname: pathname.cleanpath,
      violations: []
    )
  end
end

.yml(dirname) ⇒ Object



46
47
48
# File 'lib/parse_packwerk/package_todo.rb', line 46

def self.yml(dirname)
  dirname.join(PACKAGE_TODO_YML_NAME).cleanpath
end