Module: Packs

Extended by:
T::Sig
Defined in:
lib/packs/pack.rb,
lib/packs/private.rb,
lib/packs-specification.rb,
lib/packs/private/configuration.rb

Overview

typed: strict

Defined Under Namespace

Classes: Pack

Constant Summary collapse

PACKAGE_FILE =
T.let('package.yml'.freeze, String)

Class Method Summary collapse

Class Method Details

.allObject



16
17
18
# File 'lib/packs-specification.rb', line 16

def all
  packs_by_name.values
end

.bust_cache!Object



34
35
36
37
38
# File 'lib/packs-specification.rb', line 34

def bust_cache!
  @packs_by_name = nil
  @config = nil
  @for_file = nil
end

.configObject



41
42
43
44
# File 'lib/packs-specification.rb', line 41

def config
  @config = T.let(@config, T.nilable(Private::Configuration))
  @config ||= Private::Configuration.fetch
end

.configure {|config| ... } ⇒ Object

Yields:



47
48
49
50
51
52
53
54
# File 'lib/packs-specification.rb', line 47

def configure(&blk)
  # If packs.yml is being used, then ignore direct configuration.
  # This is only a stop-gap to permit Stimpack users to more easily migrate
  # to packs.yml
  return if Private::Configuration::CONFIGURATION_PATHNAME.exist?

  yield(config)
end

.find(name) ⇒ Object



21
22
23
# File 'lib/packs-specification.rb', line 21

def find(name)
  packs_by_name[name]
end

.for_file(file_path) ⇒ Object



26
27
28
29
30
31
# File 'lib/packs-specification.rb', line 26

def for_file(file_path)
  path_string = file_path.to_s
  @for_file = T.let(@for_file, T.nilable(T::Hash[String, T.nilable(Pack)]))
  @for_file ||= {}
  @for_file[path_string] ||= all.find { |package| path_string.start_with?("#{package.name}/") || path_string == package.name }
end