Class: Kamaze::Project::Tools::Vagrant::Composer::File

Inherits:
Pathname
  • Object
show all
Defined in:
lib/kamaze/project/tools/vagrant/composer/file.rb,
lib/kamaze/project/tools/vagrant/composer/file.rb

Overview

Describe a file

File can be overriden (.override.yml). A file has a name. It is loadable.

Instance Method Summary collapse

Instance Method Details

#empty?Boolean

Denote file is empty

Return true when content is empty

Returns:

  • (Boolean)


37
38
39
# File 'lib/kamaze/project/tools/vagrant/composer/file.rb', line 37

def empty?
  self.read.empty?
end

#loadHash

Load file

Returns:

  • (Hash)


60
61
62
63
64
65
66
67
# File 'lib/kamaze/project/tools/vagrant/composer/file.rb', line 60

def load
  return nil unless self.loadable?

  data = yaml_read(self)
  data.merge!(yaml_read(override)) if overriden?

  data
end

#loadable?Boolean

Denote file is loadable

This test is based on filesystem and emptyness

Returns:

  • (Boolean)


46
47
48
# File 'lib/kamaze/project/tools/vagrant/composer/file.rb', line 46

def loadable?
  self.file? and self.readable? and !self.empty?
end

#nameString

Returns:

  • (String)


23
24
25
# File 'lib/kamaze/project/tools/vagrant/composer/file.rb', line 23

def name
  self.basename('.yml').to_s
end

#overrideObject

Get path to potential override



28
29
30
# File 'lib/kamaze/project/tools/vagrant/composer/file.rb', line 28

def override
  self.dirname.join("#{name}.override.yml")
end

#overriden?Booolean

Denote file is overriden

Returns:

  • (Booolean)


53
54
55
# File 'lib/kamaze/project/tools/vagrant/composer/file.rb', line 53

def overriden?
  override.file? and override.readable?
end

#yaml_read(path) ⇒ Object (protected)

Read a file (by given path)

Use safe_load on file content

Parameters:

  • path (Pathname)


76
77
78
# File 'lib/kamaze/project/tools/vagrant/composer/file.rb', line 76

def yaml_read(path)
  YAML.safe_load(path.read, [Symbol])
end