Class: ParsePackwerk::Package

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

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.directory(package_name) ⇒ Object



41
42
43
# File 'lib/parse_packwerk/package.rb', line 41

def self.directory(package_name)
  Pathname.new(package_name).cleanpath
end

.from(pathname) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/parse_packwerk/package.rb', line 20

def self.from(pathname)
  package_loaded_yml = YAML.load_file(pathname) || {}
  package_name = pathname.dirname.cleanpath.to_s
  # Capture the original key order from the YAML file
  original_keys = package_loaded_yml.is_a?(Hash) ? package_loaded_yml.keys : []

  new(
    name: package_name,
    enforce_dependencies: package_loaded_yml[ENFORCE_DEPENDENCIES],
    enforce_privacy: package_loaded_yml[ENFORCE_PRIVACY] || false,
    enforce_layers: package_loaded_yml[ENFORCE_LAYERS] || false,
    public_path: package_loaded_yml[PUBLIC_PATH] || DEFAULT_PUBLIC_PATH,
    metadata: package_loaded_yml[METADATA] || {},
    dependencies: package_loaded_yml[DEPENDENCIES] || [],
    config: package_loaded_yml,
    violations: PackageTodo.from(PackageTodo.yml(directory(package_name))).violations,
    original_key_order: original_keys
  )
end

Instance Method Details

#directoryObject



51
52
53
# File 'lib/parse_packwerk/package.rb', line 51

def directory
  self.class.directory(name)
end

#enforces_dependencies?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/parse_packwerk/package.rb', line 61

def enforces_dependencies?
  enforce_dependencies
end

#enforces_layers?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/parse_packwerk/package.rb', line 71

def enforces_layers?
  enforce_layers
end

#enforces_privacy?Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/parse_packwerk/package.rb', line 66

def enforces_privacy?
  enforce_privacy
end

#public_directoryObject



56
57
58
# File 'lib/parse_packwerk/package.rb', line 56

def public_directory
  directory.join(public_path).cleanpath
end

#ymlObject



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

def yml
  Pathname.new(name).join(PACKAGE_YML_NAME).cleanpath
end