Class: Train::Platforms::Platform
- Inherits:
-
Object
- Object
- Train::Platforms::Platform
- Includes:
- Common
- Defined in:
- lib/train/platforms/platform.rb
Instance Attribute Summary collapse
-
#backend ⇒ Object
Returns the value of attribute backend.
-
#condition ⇒ Object
Returns the value of attribute condition.
-
#families ⇒ Object
Returns the value of attribute families.
-
#family_hierarchy ⇒ Object
Returns the value of attribute family_hierarchy.
-
#platform ⇒ Object
Returns the value of attribute platform.
Instance Method Summary collapse
-
#[](name) ⇒ Object
This is for backwords compatability with the current inspec os resource.
-
#add_platform_methods ⇒ Object
Add generic family? and platform methods to an existing platform.
- #clean_name(force: false) ⇒ Object
- #direct_families ⇒ Object
- #family ⇒ Object
- #find_family_hierarchy(platform = self) ⇒ Object
-
#initialize(name, condition = {}) ⇒ Platform
constructor
A new instance of Platform.
- #name ⇒ Object
- #title(title = nil) ⇒ Object
- #to_hash ⇒ Object
- #uuid ⇒ Object
Methods included from Common
Constructor Details
#initialize(name, condition = {}) ⇒ Platform
Returns a new instance of Platform.
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/train/platforms/platform.rb', line 8 def initialize(name, condition = {}) @name = name @condition = condition @families = {} @family_hierarchy = [] @platform = {} @detect = nil @title = name.to_s.capitalize # add itself to the platform list Train::Platforms.list[name] = self end |
Instance Attribute Details
#backend ⇒ Object
Returns the value of attribute backend.
6 7 8 |
# File 'lib/train/platforms/platform.rb', line 6 def backend @backend end |
#condition ⇒ Object
Returns the value of attribute condition.
6 7 8 |
# File 'lib/train/platforms/platform.rb', line 6 def condition @condition end |
#families ⇒ Object
Returns the value of attribute families.
6 7 8 |
# File 'lib/train/platforms/platform.rb', line 6 def families @families end |
#family_hierarchy ⇒ Object
Returns the value of attribute family_hierarchy.
6 7 8 |
# File 'lib/train/platforms/platform.rb', line 6 def family_hierarchy @family_hierarchy end |
#platform ⇒ Object
Returns the value of attribute platform.
6 7 8 |
# File 'lib/train/platforms/platform.rb', line 6 def platform @platform end |
Instance Method Details
#[](name) ⇒ Object
This is for backwords compatability with the current inspec os resource.
52 53 54 55 56 57 58 |
# File 'lib/train/platforms/platform.rb', line 52 def[](name) if respond_to?(name) send(name) else "unknown" end end |
#add_platform_methods ⇒ Object
Add generic family? and platform methods to an existing platform
This is done later to add any custom families/properties that were created
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/train/platforms/platform.rb', line 75 def add_platform_methods # Redo clean name if there is a detect override clean_name(force: true) unless @platform[:name].nil? # Add in family methods family_list = Train::Platforms.families family_list.each_value do |k| name = "#{k.name}?" next if respond_to?(name) define_singleton_method(name) do family_hierarchy.include?(k.name) end end # Helper methods for direct platform info @platform.each_key do |m| next if respond_to?(m) define_singleton_method(m) do @platform[m] end end # Create method for name if its not already true m = name + "?" return if respond_to?(m) define_singleton_method(m) do true end end |
#clean_name(force: false) ⇒ Object
41 42 43 44 |
# File 'lib/train/platforms/platform.rb', line 41 def clean_name(force: false) @cleaned_name = nil if force @cleaned_name ||= (@platform[:name] || @name).downcase.tr(" ", "_") end |
#direct_families ⇒ Object
21 22 23 |
# File 'lib/train/platforms/platform.rb', line 21 def direct_families @families.collect { |k, _v| k.name } end |
#family ⇒ Object
31 32 33 |
# File 'lib/train/platforms/platform.rb', line 31 def family @platform[:family] || @family_hierarchy[0] end |
#find_family_hierarchy(platform = self) ⇒ Object
25 26 27 28 29 |
# File 'lib/train/platforms/platform.rb', line 25 def find_family_hierarchy(platform = self) families = platform.families.map { |k, v| [k.name, find_family_hierarchy(k)] } @family_hierarchy = families.flatten end |
#name ⇒ Object
35 36 37 38 39 |
# File 'lib/train/platforms/platform.rb', line 35 def name # Override here incase a updated name was set # during the detect logic clean_name end |
#title(title = nil) ⇒ Object
60 61 62 63 64 65 |
# File 'lib/train/platforms/platform.rb', line 60 def title(title = nil) return @title if title.nil? @title = title self end |
#to_hash ⇒ Object
67 68 69 |
# File 'lib/train/platforms/platform.rb', line 67 def to_hash @platform end |