Class: Batali::Source
- Defined in:
- lib/batali/source.rb,
lib/batali/source/git.rb,
lib/batali/source/path.rb,
lib/batali/source/site.rb,
lib/batali/source/chef_server.rb
Overview
Source of asset
Direct Known Subclasses
Defined Under Namespace
Classes: ChefServer, Git, Path, Site
Class Method Summary collapse
-
.build(args) ⇒ Source
Build a source.
Instance Method Summary collapse
- #==(s) ⇒ TrueClass, FalseClass
-
#asset ⇒ String
Directory containing contents.
- #clean_asset(asset_path) ⇒ TrueClass, FalseClass
-
#diff(s) ⇒ Smash
Detect differences in equivalency.
- #unit_dependencies ⇒ Array<Array<name, constraints>>
- #unit_version ⇒ String
Class Method Details
.build(args) ⇒ Source
Note:
uses :type to build concrete source
Build a source
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/batali/source.rb', line 74 def self.build(args) type = args.delete(:type) unless(type) raise ArgumentError.new 'Missing required option `:type`!' end unless(type.to_s.include?('::')) type = [self.name, Bogo::Utility.camel(type)].join('::') end klass = Bogo::Utility.constantize(type) unless(klass) raise TypeError.new "Unknown source type provided `#{type}`!" else klass.new(args.merge(:type => type)) end end |
Instance Method Details
#==(s) ⇒ TrueClass, FalseClass
44 45 46 47 48 49 50 |
# File 'lib/batali/source.rb', line 44 def ==(s) s.is_a?(Source) && attributes.map do |key, attr| key if attr[:equivalent] end.compact.all? do |key| attributes[key] == s.attributes[key] end end |
#asset ⇒ String
25 26 27 |
# File 'lib/batali/source.rb', line 25 def asset raise NotImplementedError.new 'Abstract class' end |
#clean_asset(asset_path) ⇒ TrueClass, FalseClass
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/batali/source.rb', line 30 def clean_asset(asset_path) if(self.respond_to?(:cache)) false else if(File.exists?(asset_path)) FileUtils.rm_rf(asset_path) true else false end end end |
#diff(s) ⇒ Smash
Detect differences in equivalency
56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/batali/source.rb', line 56 def diff(s) Smash.new.tap do |_diff| self.class.attributes.each do |k,v| if(v[:equivalent]) s_attrs = s.respond_to?(:attributes) ? s.attributes : {} unless(attributes[k] == s_attrs[k]) _diff[k] = [attributes[k], s_attrs[k]] end end end end end |
#unit_dependencies ⇒ Array<Array<name, constraints>>
20 21 22 |
# File 'lib/batali/source.rb', line 20 def unit_dependencies raise NotImplementedError.new 'Abstract class' end |
#unit_version ⇒ String
15 16 17 |
# File 'lib/batali/source.rb', line 15 def unit_version raise NotImplementedError.new 'Abstract class' end |