visual_studio 0.0.0.1 → 0.0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/visual_studio.rb +23 -62
- data/lib/visual_studio/install.rb +69 -0
- data/lib/visual_studio/name.rb +2 -2
- data/lib/visual_studio/version.rb +11 -0
- data/visual_studio.gemspec +2 -2
- metadata +3 -2
- data/lib/visual_studio/gem/version.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ecf6432e82f273c61131810726bac356c0fdab8a
|
4
|
+
data.tar.gz: cf7b56e584955844acd2d0cac638d2d910114d04
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22280b6319f9fcba3b50bd5ad74c16f3dbdc7f5f0c4e6cae0fb2b78eb8a49355dd2ec2ed301694ca03da63d618e88666f78079f85ebe9a7c5eb65c3e5069e501
|
7
|
+
data.tar.gz: 03a0052124bef8d0f74b07acf4cbb19a853dd2cdc9e887c85ef3d7660a64cab38e73db55d7b88d8e5af23ed67c560cb4a67f89a4d756f5c944e6bea68f8723d7
|
data/.gitignore
CHANGED
data/lib/visual_studio.rb
CHANGED
@@ -1,82 +1,43 @@
|
|
1
1
|
require 'hashie'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
PRETTY_NAMES = ['Visual Studio 2015', 'Visual Studio 2013', 'Visual Studio 2012', 'Visual Studio 2010',
|
6
|
-
'Visual Studio 2008', 'Visual Studio 2005', 'Visual Studio .NET 2003', 'Visual Studio 6.0']
|
7
|
-
VERSIONS = ['14.0', '12.0', '11.0', '10.0', '9.0', '8.0', '7.1', '7.0', '6.0']
|
8
|
-
NAME_TO_VERSION = Hash[NAMES.zip(VERSIONS)]
|
9
|
-
NAME_TO_PRETTY_NAME = Hash[NAMES.zip(PRETTY_NAMES)]
|
10
|
-
VERSION_TO_NAME = Hash[VERSIONS.zip(NAMES)]
|
3
|
+
module VisualStudio
|
4
|
+
autoload :VERSION, 'visual_studio/version'
|
11
5
|
|
12
|
-
|
13
|
-
|
14
|
-
attr_reader :install
|
15
|
-
attr_reader :toolsets
|
16
|
-
attr_reader :sdks
|
6
|
+
autoload :Name, 'visual_studio/name'
|
7
|
+
autoload :Install, 'visual_studio/install'
|
17
8
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
9
|
+
NAMES = [VisualStudio::Name.new('vs2015', pretty: 'Visual Studio 2015'),
|
10
|
+
VisualStudio::Name.new('vs2013', pretty: 'Visual Studio 2013'),
|
11
|
+
VisualStudio::Name.new('vs2012', pretty: 'Visual Studio 2012'),
|
12
|
+
VisualStudio::Name.new('vs2010', pretty: 'Visual Studio 2010'),
|
13
|
+
VisualStudio::Name.new('vs2008', pretty: 'Visual Studio 2008'),
|
14
|
+
VisualStudio::Name.new('vs2005', pretty: 'Visual Studio 2005'),
|
15
|
+
VisualStudio::Name.new('vs2003', pretty: 'Visual Studio .NET 2003'),
|
16
|
+
VisualStudio::Name.new('vs2003', pretty: 'Visual Studio .NET 2002'),
|
17
|
+
VisualStudio::Name.new('vs6', pretty: 'Visual Studio 6.0')]
|
18
|
+
|
19
|
+
VERSIONS = %w{14.0 12.0 11.0 10.0 9.0 8.0 7.1 7.0 6.0}
|
20
|
+
|
21
|
+
NAME_TO_VERSION = Hash[NAMES.zip(VERSIONS)]
|
22
|
+
VERSION_TO_NAME = Hash[VERSIONS.zip(NAMES)]
|
26
23
|
|
27
24
|
def self.available?
|
28
|
-
VERSIONS.any? { |version| installed?(version) }
|
25
|
+
VERSIONS.any? { |version| self.installed?(version) }
|
29
26
|
end
|
30
27
|
|
31
28
|
def self.installed?(name_or_version)
|
32
|
-
|
29
|
+
VisualStudio::Install.exists?(name_or_version)
|
33
30
|
end
|
34
31
|
|
35
32
|
def self.find(name_or_version)
|
36
|
-
|
37
|
-
return find_by_version(name_or_version) if VERSIONS.include?(name_or_version)
|
33
|
+
VisualStudio::Install.find(name_or_version)
|
38
34
|
end
|
39
35
|
|
40
36
|
def self.find_by_name(name)
|
41
|
-
|
37
|
+
VisualStudio::Install.find_by_name(name)
|
42
38
|
end
|
43
39
|
|
44
40
|
def self.find_by_version(version)
|
45
|
-
|
46
|
-
return if install.nil?
|
47
|
-
|
48
|
-
# HACK(mtwilliams): Assume C/C++ is installed.
|
49
|
-
c_and_cpp = File.join(install, 'VC')
|
50
|
-
# TODO(mtwilliams): Search for other toolsets, notably C#.
|
51
|
-
csharp = nil # File.join(install, 'VC#')
|
52
|
-
|
53
|
-
# TODO(mtwilliams): Look for SDKs, including packaged ones.
|
54
|
-
sdk = nil # ...
|
55
|
-
|
56
|
-
# TODO(mtwilliams): Cache.
|
57
|
-
VisualStudio.new(name: VERSION_TO_NAME[version],
|
58
|
-
version: version,
|
59
|
-
install: install,
|
60
|
-
toolsets: Hashie::Mash.new({
|
61
|
-
c: c_and_cpp,
|
62
|
-
cpp: c_and_cpp,
|
63
|
-
csharp: csharp }),
|
64
|
-
sdks: Hashie::Mash.new({
|
65
|
-
windows: nil }))
|
41
|
+
VisualStudio::Install.find_by_version(version)
|
66
42
|
end
|
67
|
-
|
68
|
-
private
|
69
|
-
def self._find_install_via_registry(version)
|
70
|
-
# TODO(mtwilliams): Try other products, like C#.
|
71
|
-
keys = ["SOFTWARE\\Microsoft\\VisualStudio\\#{version}\\Setup\\VC",
|
72
|
-
"SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\#{version}\\Setup\\VC"]
|
73
|
-
keys.each do |key|
|
74
|
-
begin
|
75
|
-
require 'win32/registry'
|
76
|
-
return File.expand_path(File.join(::Win32::Registry::HKEY_LOCAL_MACHINE.open(key, ::Win32::Registry::KEY_READ)['ProductDir'], '..')).to_s
|
77
|
-
rescue
|
78
|
-
return nil
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
43
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module VisualStudio
|
2
|
+
class Install
|
3
|
+
attr_reader :name
|
4
|
+
attr_reader :version
|
5
|
+
attr_reader :install
|
6
|
+
attr_reader :toolsets
|
7
|
+
attr_reader :sdks
|
8
|
+
|
9
|
+
def initialize(opts={})
|
10
|
+
@name = opts[:name]
|
11
|
+
@version = opts[:version]
|
12
|
+
@install = opts[:install]
|
13
|
+
@toolsets = opts[:toolsets]
|
14
|
+
@sdks = opts[:sdks]
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.exists?(name_or_version)
|
18
|
+
!!(find(name_or_version))
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.find(name_or_version)
|
22
|
+
return find_by_name(name_or_version) if NAMES.include?(name_or_version)
|
23
|
+
return find_by_version(name_or_version) if VERSIONS.include?(name_or_version)
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.find_by_name(name)
|
27
|
+
find_by_version(NAME_TO_VERSION[name]) if NAMES.include?(name)
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.find_by_version(version)
|
31
|
+
install = _find_install_via_registry(version)
|
32
|
+
return if install.nil?
|
33
|
+
|
34
|
+
# HACK(mtwilliams): Assume C/C++ is installed.
|
35
|
+
c_and_cpp = File.join(install, 'VC')
|
36
|
+
# TODO(mtwilliams): Search for other toolsets, notably C#.
|
37
|
+
csharp = nil # File.join(install, 'VC#')
|
38
|
+
|
39
|
+
# TODO(mtwilliams): Look for SDKs, including packaged ones.
|
40
|
+
sdk = nil # ...
|
41
|
+
|
42
|
+
# TODO(mtwilliams): Cache.
|
43
|
+
VisualStudio::Install.new(name: VERSION_TO_NAME[version],
|
44
|
+
version: version,
|
45
|
+
install: install,
|
46
|
+
toolsets: Hashie::Mash.new({
|
47
|
+
c: c_and_cpp,
|
48
|
+
cpp: c_and_cpp,
|
49
|
+
csharp: csharp }),
|
50
|
+
sdks: Hashie::Mash.new({
|
51
|
+
windows: nil }))
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
def self._find_install_via_registry(version)
|
56
|
+
# TODO(mtwilliams): Try other products, like C#.
|
57
|
+
keys = ["SOFTWARE\\Microsoft\\VisualStudio\\#{version}\\Setup\\VC",
|
58
|
+
"SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\#{version}\\Setup\\VC"]
|
59
|
+
keys.each do |key|
|
60
|
+
begin
|
61
|
+
require 'win32/registry'
|
62
|
+
return File.expand_path(File.join(::Win32::Registry::HKEY_LOCAL_MACHINE.open(key, ::Win32::Registry::KEY_READ)['ProductDir'], '..')).to_s
|
63
|
+
rescue
|
64
|
+
return nil
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/visual_studio/name.rb
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
class VisualStudio
|
2
|
+
module VERSION #:nodoc:
|
3
|
+
MAJOR, MINOR, PATCH, PRE = [0, 0, 0, 2]
|
4
|
+
STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
|
5
|
+
end
|
6
|
+
|
7
|
+
# Returns the semantic version of `visual_studio`.
|
8
|
+
def self.version
|
9
|
+
VisualStudio::VERSION::STRING
|
10
|
+
end
|
11
|
+
end
|
data/visual_studio.gemspec
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
$:.push File.expand_path(File.join(File.dirname(__FILE__), 'lib'))
|
2
|
-
require 'visual_studio/
|
2
|
+
require 'visual_studio/version'
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = 'visual_studio'
|
6
|
-
s.version = VisualStudio
|
6
|
+
s.version = VisualStudio.version
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
8
|
s.author = 'Michael Williams'
|
9
9
|
s.email = 'm.t.williams@live.com'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: visual_studio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.0.
|
4
|
+
version: 0.0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Williams
|
@@ -79,8 +79,9 @@ files:
|
|
79
79
|
- README.md
|
80
80
|
- Rakefile
|
81
81
|
- lib/visual_studio.rb
|
82
|
-
- lib/visual_studio/
|
82
|
+
- lib/visual_studio/install.rb
|
83
83
|
- lib/visual_studio/name.rb
|
84
|
+
- lib/visual_studio/version.rb
|
84
85
|
- visual_studio.gemspec
|
85
86
|
- visual_studio.sublime-project
|
86
87
|
homepage: https://github.com/mtwilliams/visual_studio
|
@@ -1,13 +0,0 @@
|
|
1
|
-
class VisualStudio
|
2
|
-
module Gem
|
3
|
-
module VERSION #:nodoc:
|
4
|
-
MAJOR, MINOR, PATCH, PRE = [0, 0, 0, 1]
|
5
|
-
STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
|
6
|
-
end
|
7
|
-
|
8
|
-
# Returns the semantic version of Visual Studio.
|
9
|
-
def self.version
|
10
|
-
VisualStudio::Gem::VERSION::STRING
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|