Class: PackageFacts

Inherits:
Object
  • Object
show all
Defined in:
lib/lace/package/facts.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(package_path) ⇒ PackageFacts

Returns a new instance of PackageFacts.



13
14
15
16
17
18
19
20
# File 'lib/lace/package/facts.rb', line 13

def initialize(package_path)
  @package_path = Pathname.new(package_path)
  @facts_file = @package_path / '.lace.yml'
  raise PackageFactsNotFound, @package_path unless @facts_file.exist?

  @facts = facts_file_to_hash
  @unflavorable_facts = facts_file_to_hash
end

Instance Attribute Details

#facts_fileObject (readonly)

Returns the value of attribute facts_file.



7
8
9
# File 'lib/lace/package/facts.rb', line 7

def facts_file
  @facts_file
end

Instance Method Details

#config_filesObject



30
31
32
33
34
35
36
37
38
39
# File 'lib/lace/package/facts.rb', line 30

def config_files
  if has_config_files?
    @facts['config_files'].flatten.map do |path|
      Pathname.glob(@package_path + path).delete_if do |match|
        match.directory? and path.include? '*'
      end
    end.flatten
  else
    [] end
end

#flavor!(the_flavor) ⇒ Object



82
83
84
85
86
# File 'lib/lace/package/facts.rb', line 82

def flavor!(the_flavor)
  raise PackageFlavorDoesNotExist.new(the_flavor, flavors) unless flavors.include? the_flavor

  @facts = @unflavorable_facts['flavors'][the_flavor]
end

#flavor_with(the_flavor) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/lace/package/facts.rb', line 22

def flavor_with(the_flavor)
  if has_flavors? && the_flavor.nil?
    raise FlavorArgumentRequired, flavors
  elsif has_flavors? && the_flavor != false
    flavor! the_flavor
  end
end

#flavorsObject



74
75
76
77
78
79
80
# File 'lib/lace/package/facts.rb', line 74

def flavors
  if @unflavorable_facts&.key?('flavors')
    @unflavorable_facts['flavors'].keys.sort
  else
    []
  end
end

#globbed_folderObject



41
42
43
44
45
46
# File 'lib/lace/package/facts.rb', line 41

def globbed_folder
  if has_config_files?
    @facts['config_files'].flatten.select { |f| f.include? '*' }
  else
    [] end
end

#has_config_files?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/lace/package/facts.rb', line 48

def has_config_files?
  key? 'config_files'
end

#has_flavors?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/lace/package/facts.rb', line 52

def has_flavors?
  @unflavorable_facts && !@unflavorable_facts['flavors'].nil?
end

#homepageObject



70
71
72
# File 'lib/lace/package/facts.rb', line 70

def homepage
  @unflavorable_facts['homepage'] if @unflavorable_facts.key? 'homepage'
end

#inspectObject



9
10
11
# File 'lib/lace/package/facts.rb', line 9

def inspect
  "#<Facts:#{@package_path}>"
end

#key?(key) ⇒ Boolean

Returns:

  • (Boolean)


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

def key?(key)
  @unflavorable_facts && (@unflavorable_facts.key?(key) or @facts.key?(key))
end

#post(hook_point) ⇒ Object



92
93
94
95
96
97
98
99
# File 'lib/lace/package/facts.rb', line 92

def post(hook_point)
  if @unflavorable_facts.nil? || !@facts.key?('post')
    []
  else
    post_hook = @facts['post']
    (post_hook[hook_point.to_s] || []).flatten
  end
end

#setup_filesObject



64
65
66
67
68
# File 'lib/lace/package/facts.rb', line 64

def setup_files
  @facts['setup'].flatten
rescue StandardError
  []
end

#unflavor!Object



88
89
90
# File 'lib/lace/package/facts.rb', line 88

def unflavor!
  @facts = @unflavorable_facts
end

#versionObject



60
61
62
# File 'lib/lace/package/facts.rb', line 60

def version
  @unflavorable_facts['version'] if @unflavorable_facts.key? 'version'
end