Class: Berkshelf::PathLocation

Inherits:
BaseLocation show all
Defined in:
lib/berkshelf/locations/path.rb

Instance Attribute Summary

Attributes inherited from BaseLocation

#dependency, #options

Instance Method Summary collapse

Methods inherited from BaseLocation

#initialize, #validate_cached!

Constructor Details

This class inherits a constructor from Berkshelf::BaseLocation

Instance Method Details

#==(other) ⇒ Object


50
51
52
53
54
# File 'lib/berkshelf/locations/path.rb', line 50

def ==(other)
  other.is_a?(PathLocation) &&
  other.metadata? == metadata? &&
  other.relative_path == relative_path
end

#cached_cookbookObject


20
21
22
# File 'lib/berkshelf/locations/path.rb', line 20

def cached_cookbook
  @cached_cookbook ||= CachedCookbook.from_path(expanded_path)
end

#expanded_pathPathname

The fully expanded path of this cookbook on disk, relative to the Berksfile.

Returns:


46
47
48
# File 'lib/berkshelf/locations/path.rb', line 46

def expanded_path
  @expanded_path ||= Pathname.new File.expand_path(options[:path], File.dirname(dependency.berksfile.filepath))
end

#inspectObject


66
67
68
# File 'lib/berkshelf/locations/path.rb', line 66

def inspect
  "#<Berkshelf::PathLocation metadata: #{metadata?}, path: #{relative_path}>"
end

#installObject

The installation for a path location is actually just a noop


15
16
17
# File 'lib/berkshelf/locations/path.rb', line 15

def install
  validate_cached!(expanded_path)
end

#installed?Boolean

Technically path locations are always installed, but this method intentionally returns false to force validation of the cookbook at the path.

Returns:

  • (Boolean)

See Also:


8
9
10
# File 'lib/berkshelf/locations/path.rb', line 8

def installed?
  false
end

#metadata?Boolean

Returns true if the location is a metadata location. By default, no locations are the metadata location.

Returns:

  • (Boolean)

28
29
30
# File 'lib/berkshelf/locations/path.rb', line 28

def metadata?
  !!options[:metadata]
end

#relative_pathPathname

Return this PathLocation's path relative to the associated Berksfile. It is actually the path reative to the associated Berksfile's parent directory.

Returns:

  • (Pathname)

    the relative path relative to the target


38
39
40
# File 'lib/berkshelf/locations/path.rb', line 38

def relative_path
  @relative_path ||= expanded_path.relative_path_from(Pathname.new(File.dirname(dependency.berksfile.filepath)))
end

#to_lockObject


56
57
58
59
60
# File 'lib/berkshelf/locations/path.rb', line 56

def to_lock
  out =  "    path: #{relative_path}\n"
  out << "    metadata: true\n" if metadata?
  out
end

#to_sObject


62
63
64
# File 'lib/berkshelf/locations/path.rb', line 62

def to_s
  "source at #{relative_path}"
end