Class: VisualStudio::Install
- Inherits:
-
Object
- Object
- VisualStudio::Install
- Defined in:
- lib/visual_studio/install.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#products ⇒ Object
readonly
Returns the value of attribute products.
-
#root ⇒ Object
readonly
Returns the value of attribute root.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Class Method Summary collapse
- .available?(name_or_version) ⇒ Boolean
- .find(name_or_version) ⇒ Object
- .find_by(criteria) ⇒ Object
- .find_by_name(name) ⇒ Object
- .find_by_version(version) ⇒ Object
- .latest ⇒ Object
Instance Method Summary collapse
-
#initialize(desc = {}) ⇒ Install
constructor
A new instance of Install.
Constructor Details
#initialize(desc = {}) ⇒ Install
Returns a new instance of Install.
8 9 10 11 12 13 |
# File 'lib/visual_studio/install.rb', line 8 def initialize(desc={}) @name = desc[:name] @version = desc[:version] @root = desc[:root] @products = desc[:products] end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
3 4 5 |
# File 'lib/visual_studio/install.rb', line 3 def name @name end |
#products ⇒ Object (readonly)
Returns the value of attribute products.
3 4 5 |
# File 'lib/visual_studio/install.rb', line 3 def products @products end |
#root ⇒ Object (readonly)
Returns the value of attribute root.
3 4 5 |
# File 'lib/visual_studio/install.rb', line 3 def root @root end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
3 4 5 |
# File 'lib/visual_studio/install.rb', line 3 def version @version end |
Class Method Details
.available?(name_or_version) ⇒ Boolean
15 16 17 |
# File 'lib/visual_studio/install.rb', line 15 def self.available?(name_or_version) !!(self.find(name_or_version)) end |
.find(name_or_version) ⇒ Object
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/visual_studio/install.rb', line 23 def self.find(name_or_version) if VisualStudio::NAMES.include?(name_or_version) self.find_by_name(name_or_version) elsif VisualStudio::VERSIONS.include?(name_or_version) self.find_by_version(name_or_version) else # TODO(mtwilliams): Raise an exception. # raise VisualStudio::InvalidCriteria.new("Expected a name or version") end end |
.find_by(criteria) ⇒ Object
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/visual_studio/install.rb', line 34 def self.find_by(criteria) if criteria.include?(:name) self.find_by_name(criteria[:name]) elsif criteria.include?(:version) self.find_by_version(criteria[:version]) else # TODO(mtwilliams): Raise an exception. # raise VisualStudio::InvalidCriteria.new("Expected 'name' or 'version' to be specified") end end |
.find_by_name(name) ⇒ Object
45 46 47 48 49 50 51 52 |
# File 'lib/visual_studio/install.rb', line 45 def self.find_by_name(name) if VisualStudio::NAMES.include?(name) self.find_by_version(VisualStudio::NAME_TO_VERSION[name]) else # TODO(mtwilliams): Raise an exception. # raise VisualStudio::InvalidName.new(...) end end |
.find_by_version(version) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/visual_studio/install.rb', line 54 def self.find_by_version(version) if VisualStudio::VERSIONS.include?(version) # Try to find any products (that we care about) for this version. c_and_cpp = VisualStudio::Product.find('VC', version) csharp = VisualStudio::Product.find('VC#', version) # If no products (that we care about) for this version are installed, # then for all intents and purposes this version of Visual Studio # is "not installed". This might not be the truth, but who gives a fuck # about Visual Basic anymore?! return nil if [c_and_cpp, csharp].all?{|product| product.nil?} name = Helpers::PrettyString.new VisualStudio::VERSION_TO_NAME[version], pretty: VisualStudio::VERSION_TO_PRETTY_NAME[version] root = File.(File.join([c_and_cpp, csharp].compact.first.root, '..')) products = {c_and_cpp: c_and_cpp, csharp: csharp} products = products.reject{|_, v| v.nil?} VisualStudio::Install.new(name: name, version: version, root: root, products: products) else # TODO(mtwilliams): Raise an exception. # raise VisualStudio::InvalidVersion.new(...) end end |
.latest ⇒ Object
19 20 21 |
# File 'lib/visual_studio/install.rb', line 19 def self.latest VisualStudio::VERSIONS.map{|version| self.find_by_version(version)}.compact.first end |