xcode-install 0.3.3 → 0.9.0
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/.gitattributes +1 -0
- data/README.md +16 -6
- data/lib/xcode/install.rb +28 -6
- data/lib/xcode/install/install.rb +2 -0
- data/lib/xcode/install/uninstall.rb +2 -0
- data/lib/xcode/install/version.rb +1 -1
- data/spec/prerelease_spec.rb +6 -6
- data/xcode-install.gemspec +1 -2
- metadata +5 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82276c486f016d15325b027bac509063ef807cba
|
4
|
+
data.tar.gz: 12791f86b6e6d6a43ff5f179381c6c44d7649bb3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c75ef419ed9ffe50f16716c642114c99ce294baf2343455f1fe5de79ed9bb2099df340d48cd9621f797f52b43bfdbfbd9f4b94a83ce3741ec18dd08eda1be92
|
7
|
+
data.tar.gz: f956fc36418324bb1f55c2afda840d314b569135bbbdd6bd83e45c635347b46f6731439397febbb3d91c13ead6735dc3e96d21422e645da010d6f2132cd14605
|
data/.gitattributes
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
spec/fixtures/* linguist-documentation
|
data/README.md
CHANGED
@@ -20,8 +20,13 @@ $ gem install xcode-install
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
XcodeInstall
|
24
|
-
using the [CredentialsManager][1] of [Fastlane][2]
|
23
|
+
XcodeInstall needs environment variables with your credentials to access the Apple Developer
|
24
|
+
Center, they are stored using the [CredentialsManager][1] of [Fastlane][2]:
|
25
|
+
|
26
|
+
```
|
27
|
+
XCODE_INSTALL_USER
|
28
|
+
XCODE_INSTALL_PASSWORD
|
29
|
+
```
|
25
30
|
|
26
31
|
To list available versions:
|
27
32
|
|
@@ -52,11 +57,15 @@ This will download and install that version of Xcode. It will also be automatica
|
|
52
57
|
|
53
58
|
## Limitations
|
54
59
|
|
55
|
-
|
60
|
+
Unfortunately, the installation size of Xcodes downloaded will be bigger than when downloading via the Mac App Store, see [#10](/../../issues/10) and feel free to dupe the radar. 📡
|
56
61
|
|
57
|
-
|
62
|
+
XcodeInstall automatically installs additional components so that it is immediately usable from the
|
63
|
+
commandline. Unfortunately, Xcode will load third-party plugins even in that situation, which leads
|
64
|
+
to a dialog popping up. Feel free to dupe [the radar][5]. 📡
|
58
65
|
|
59
|
-
|
66
|
+
XcodeInstall uses the Spotlight index to locate installed versions of Xcode. If you use it while
|
67
|
+
indexing is happening, it might show inaccurate results and it will not be able to see installed
|
68
|
+
versions on unindexed volumes.
|
60
69
|
|
61
70
|
## Thanks
|
62
71
|
|
@@ -72,7 +81,8 @@ for doing the installation.
|
|
72
81
|
5. Create a new Pull Request
|
73
82
|
|
74
83
|
|
75
|
-
[1]: https://github.com/
|
84
|
+
[1]: https://github.com/fastlane/credentials_manager#using-environment-variables
|
76
85
|
[2]: http://fastlane.tools
|
77
86
|
[3]: http://atastypixel.com/blog/resuming-adc-downloads-cos-safari-sucks/
|
78
87
|
[4]: https://github.com/magneticbear/Jenkins_Bootstrap
|
88
|
+
[5]: http://www.openradar.me/22001810
|
data/lib/xcode/install.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
require 'pathname'
|
3
3
|
require 'spaceship'
|
4
|
-
require 'nokogiri'
|
5
4
|
require 'rubygems/version'
|
6
5
|
require 'xcode/install/command'
|
7
6
|
require 'xcode/install/version'
|
@@ -57,6 +56,10 @@ module XcodeInstall
|
|
57
56
|
list_versions.include?(version)
|
58
57
|
end
|
59
58
|
|
59
|
+
def install_components(xcode_path)
|
60
|
+
`#{xcode_path}/Contents/MacOS/Xcode -installComponents`
|
61
|
+
end
|
62
|
+
|
60
63
|
def installed?(version)
|
61
64
|
installed_versions.map(&:version).include?(version)
|
62
65
|
end
|
@@ -75,7 +78,11 @@ module XcodeInstall
|
|
75
78
|
source = Dir.glob('/Volumes/Xcode/Xcode*.app').first
|
76
79
|
|
77
80
|
if source.nil?
|
78
|
-
puts
|
81
|
+
$stderr.puts <<-HELP
|
82
|
+
No `Xcode.app` found in DMG. Please remove #{dmgPath} if you suspect a corrupted
|
83
|
+
download or run `xcode-install update` to see if the version you tried to install
|
84
|
+
has been pulled by Apple. If none of this is true, please open a new GH issue.
|
85
|
+
HELP
|
79
86
|
return
|
80
87
|
end
|
81
88
|
|
@@ -84,6 +91,7 @@ module XcodeInstall
|
|
84
91
|
|
85
92
|
enable_developer_mode
|
86
93
|
`sudo xcodebuild -license` unless xcode_license_approved?
|
94
|
+
install_components(xcode_path)
|
87
95
|
|
88
96
|
if switch
|
89
97
|
`sudo rm -f #{SYMLINK_PATH}` unless current_symlink.nil?
|
@@ -132,7 +140,16 @@ module XcodeInstall
|
|
132
140
|
|
133
141
|
def spaceship
|
134
142
|
@spaceship ||= begin
|
135
|
-
|
143
|
+
begin
|
144
|
+
Spaceship.login(ENV["XCODE_INSTALL_USER"], ENV["XCODE_INSTALL_PASSWORD"])
|
145
|
+
rescue Spaceship::Client::InvalidUserCredentialsError
|
146
|
+
$stderr.puts <<-HELP
|
147
|
+
Please provide your Apple developer account credentials via the
|
148
|
+
XCODE_INSTALL_USER and XCODE_INSTALL_PASSWORD environment variables.
|
149
|
+
HELP
|
150
|
+
exit(1)
|
151
|
+
end
|
152
|
+
|
136
153
|
if ENV.key?("XCODE_INSTALL_TEAM_ID")
|
137
154
|
Spaceship.client.team_id = ENV["XCODE_INSTALL_TEAM_ID"]
|
138
155
|
end
|
@@ -181,6 +198,11 @@ module XcodeInstall
|
|
181
198
|
end
|
182
199
|
|
183
200
|
def installed
|
201
|
+
unless (`mdutil -s /` =~ /disabled/).nil?
|
202
|
+
$stderr.puts 'Please enable Spotlight indexing for /Applications.'
|
203
|
+
exit(1)
|
204
|
+
end
|
205
|
+
|
184
206
|
`mdfind "kMDItemCFBundleIdentifier == 'com.apple.dt.Xcode'" 2>/dev/null`.split("\n")
|
185
207
|
end
|
186
208
|
|
@@ -202,10 +224,10 @@ module XcodeInstall
|
|
202
224
|
end
|
203
225
|
|
204
226
|
def prereleases
|
205
|
-
|
206
|
-
links
|
227
|
+
body=spaceship.send(:request, :get, '/xcode/downloads/').body
|
228
|
+
links=body.scan(/<a.+?href="(.+?.dmg)".*>(.*)<\/a>/)
|
207
229
|
|
208
|
-
links.map { |pre| Xcode.new_prelease(pre.
|
230
|
+
links.map { |pre| Xcode.new_prelease(pre[1].strip.gsub(/.*Xcode /, ''), pre[0]) }
|
209
231
|
end
|
210
232
|
|
211
233
|
def seedlist
|
@@ -24,6 +24,8 @@ module XcodeInstall
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def validate!
|
27
|
+
super
|
28
|
+
|
27
29
|
return if @version.nil?
|
28
30
|
fail Informative, "Version #{@version} already installed." if @installer.installed?(@version)
|
29
31
|
fail Informative, "Version #{@version} doesn't exist." unless @installer.exist?(@version)
|
@@ -11,9 +11,11 @@ module XcodeInstall
|
|
11
11
|
def initialize(argv)
|
12
12
|
@installer = Installer.new
|
13
13
|
@version = argv.shift_argument
|
14
|
+
super
|
14
15
|
end
|
15
16
|
|
16
17
|
def validate!
|
18
|
+
super
|
17
19
|
fail Informative, "Version #{@version} is not installed." unless @installer.installed?(@version)
|
18
20
|
end
|
19
21
|
|
data/spec/prerelease_spec.rb
CHANGED
@@ -3,12 +3,12 @@ require File.expand_path('../spec_helper', __FILE__)
|
|
3
3
|
module XcodeInstall
|
4
4
|
describe Installer do
|
5
5
|
def fixture(date)
|
6
|
-
|
6
|
+
File.read("spec/fixtures/devcenter/xcode-#{date}.html")
|
7
7
|
end
|
8
8
|
|
9
9
|
def parse_prereleases(date)
|
10
10
|
fixture = fixture(date)
|
11
|
-
|
11
|
+
@result.stubs(:body).returns(fixture)
|
12
12
|
|
13
13
|
installer = Installer.new
|
14
14
|
installer.send(:prereleases)
|
@@ -19,11 +19,11 @@ module XcodeInstall
|
|
19
19
|
devcenter.stubs(:download_file).returns(nil)
|
20
20
|
Installer.any_instance.stubs(:devcenter).returns(devcenter)
|
21
21
|
|
22
|
-
result = mock
|
23
|
-
result.stubs(:body).returns(nil)
|
22
|
+
@result = mock
|
23
|
+
@result.stubs(:body).returns(nil)
|
24
24
|
client = mock
|
25
|
-
client.stubs(:request).returns(result)
|
26
|
-
Spaceship::
|
25
|
+
client.stubs(:request).returns(@result)
|
26
|
+
Spaceship::PortalClient.stubs(:login).returns(client)
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'can parse prereleases from 20150414' do
|
data/xcode-install.gemspec
CHANGED
@@ -19,8 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
21
|
spec.add_dependency 'claide', '~> 0.8.1'
|
22
|
-
spec.add_dependency 'spaceship', '0.
|
23
|
-
spec.add_dependency 'nokogiri', '~> 1.3'
|
22
|
+
spec.add_dependency 'spaceship', '~> 0.3.2'
|
24
23
|
|
25
24
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
26
25
|
spec.add_development_dependency 'rake', '~> 10.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xcode-install
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Boris Bügling
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: claide
|
@@ -26,32 +26,18 @@ dependencies:
|
|
26
26
|
version: 0.8.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: spaceship
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.0.11
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - '='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.0.11
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: nokogiri
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
31
|
- - ~>
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
33
|
+
version: 0.3.2
|
48
34
|
type: :runtime
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
38
|
- - ~>
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
40
|
+
version: 0.3.2
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: bundler
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,6 +74,7 @@ executables:
|
|
88
74
|
extensions: []
|
89
75
|
extra_rdoc_files: []
|
90
76
|
files:
|
77
|
+
- .gitattributes
|
91
78
|
- .gitignore
|
92
79
|
- .rubocop.yml
|
93
80
|
- .travis.yml
|