class VisualStudio::Install
Attributes
name[R]
products[R]
root[R]
version[R]
Public Class Methods
available?(name_or_version)
click to toggle source
# File lib/visual_studio/install.rb, line 15 def self.available?(name_or_version) !!(self.find(name_or_version)) end
find(name_or_version)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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.expand_path(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()
click to toggle source
# File lib/visual_studio/install.rb, line 19 def self.latest VisualStudio::VERSIONS.map{|version| self.find_by_version(version)}.compact.first end
new(desc={})
click to toggle source
# File lib/visual_studio/install.rb, line 8 def initialize(desc={}) @name = desc[:name] @version = desc[:version] @root = desc[:root] @products = desc[:products] end