Class: VisualStudio
- Inherits:
-
Object
- Object
- VisualStudio
- Defined in:
- lib/visual_studio.rb,
lib/visual_studio/name.rb,
lib/visual_studio/gem/version.rb
Defined Under Namespace
Constant Summary collapse
- NAMES =
['vs2015', 'vs2013', 'vs2012', 'vs2010', 'vs2008', 'vs2005', 'vs2003', 'vs2002', 'vs6']
- PRETTY_NAMES =
['Visual Studio 2015', 'Visual Studio 2013', 'Visual Studio 2012', 'Visual Studio 2010', 'Visual Studio 2008', 'Visual Studio 2005', 'Visual Studio .NET 2003', 'Visual Studio 6.0']
- VERSIONS =
['14.0', '12.0', '11.0', '10.0', '9.0', '8.0', '7.1', '7.0', '6.0']
- NAME_TO_VERSION =
- NAME_TO_PRETTY_NAME =
- VERSION_TO_NAME =
Instance Attribute Summary collapse
-
#install ⇒ Object
readonly
Returns the value of attribute install.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#sdks ⇒ Object
readonly
Returns the value of attribute sdks.
-
#toolsets ⇒ Object
readonly
Returns the value of attribute toolsets.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Class Method Summary collapse
- .available? ⇒ Boolean
- .find(name_or_version) ⇒ Object
- .find_by_name(name) ⇒ Object
- .find_by_version(version) ⇒ Object
- .installed?(name_or_version) ⇒ Boolean
Instance Method Summary collapse
-
#initialize(opts = {}) ⇒ VisualStudio
constructor
A new instance of VisualStudio.
Constructor Details
#initialize(opts = {}) ⇒ VisualStudio
Returns a new instance of VisualStudio.
18 19 20 21 22 23 24 25 |
# File 'lib/visual_studio.rb', line 18 def initialize(opts={}) require 'visual_studio/name' @name = VisualStudio::Name.new(opts[:name], pretty: NAME_TO_PRETTY_NAME[opts[:name]]) @version = opts[:version] @install = opts[:install] @toolsets = opts[:toolsets] @sdks = opts[:sdks] end |
Instance Attribute Details
#install ⇒ Object (readonly)
Returns the value of attribute install.
14 15 16 |
# File 'lib/visual_studio.rb', line 14 def install @install end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
12 13 14 |
# File 'lib/visual_studio.rb', line 12 def name @name end |
#sdks ⇒ Object (readonly)
Returns the value of attribute sdks.
16 17 18 |
# File 'lib/visual_studio.rb', line 16 def sdks @sdks end |
#toolsets ⇒ Object (readonly)
Returns the value of attribute toolsets.
15 16 17 |
# File 'lib/visual_studio.rb', line 15 def toolsets @toolsets end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
13 14 15 |
# File 'lib/visual_studio.rb', line 13 def version @version end |
Class Method Details
.available? ⇒ Boolean
27 28 29 |
# File 'lib/visual_studio.rb', line 27 def self.available? VERSIONS.any? { |version| installed?(version) } end |
.find(name_or_version) ⇒ Object
35 36 37 38 |
# File 'lib/visual_studio.rb', line 35 def self.find(name_or_version) return find_by_name(name_or_version) if NAMES.include?(name_or_version) return find_by_version(name_or_version) if VERSIONS.include?(name_or_version) end |
.find_by_name(name) ⇒ Object
40 41 42 |
# File 'lib/visual_studio.rb', line 40 def self.find_by_name(name) find_by_version(NAME_TO_VERSION[name]) if NAMES.include?(name) end |
.find_by_version(version) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/visual_studio.rb', line 44 def self.find_by_version(version) install = _find_install_via_registry(version) return if install.nil? # HACK(mtwilliams): Assume C/C++ is installed. c_and_cpp = File.join(install, 'VC') # TODO(mtwilliams): Search for other toolsets, notably C#. csharp = nil # File.join(install, 'VC#') # TODO(mtwilliams): Look for SDKs, including packaged ones. sdk = nil # ... # TODO(mtwilliams): Cache. VisualStudio.new(name: VERSION_TO_NAME[version], version: version, install: install, toolsets: Hashie::Mash.new({ c: c_and_cpp, cpp: c_and_cpp, csharp: csharp }), sdks: Hashie::Mash.new({ windows: nil })) end |
.installed?(name_or_version) ⇒ Boolean
31 32 33 |
# File 'lib/visual_studio.rb', line 31 def self.installed?(name_or_version) !!(find(name_or_version)) end |