Class: Kamaze::Project::Tools::Vagrant::Composer::File
- 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
-
#empty? ⇒ Boolean
Denote file is empty.
-
#load ⇒ Hash
Load file.
-
#loadable? ⇒ Boolean
Denote file is loadable.
- #name ⇒ String
-
#override ⇒ Object
Get path to potential override.
-
#overriden? ⇒ Booolean
Denote file is overriden.
-
#yaml_read(path) ⇒ Object
protected
Read a file (by given path).
Instance Method Details
#empty? ⇒ Boolean
Denote file is empty
Return true
when content is empty
37 38 39 |
# File 'lib/kamaze/project/tools/vagrant/composer/file.rb', line 37 def empty? self.read.empty? end |
#load ⇒ Hash
Load file
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
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 |
#name ⇒ String
23 24 25 |
# File 'lib/kamaze/project/tools/vagrant/composer/file.rb', line 23 def name self.basename('.yml').to_s end |
#override ⇒ Object
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
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
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 |