xcode-install 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/xcode/install.rb +26 -51
- data/lib/xcode/install/install.rb +3 -1
- data/lib/xcode/install/version.rb +1 -1
- data/spec/prerelease_spec.rb +6 -0
- data/xcode-install.gemspec +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0315796b802e96968533cbd84beffd9196db6278
|
4
|
+
data.tar.gz: 5f1e8191fdd093ce812d335917999e90455498e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6db340040ce85117495e443c0e39f05b3d617698e75aeb869717ffda3576c7b43c1e0162479f549383e7ed42401cc9a687bc59c5df989b24b0cbda3833a4bb15
|
7
|
+
data.tar.gz: 76b48c89942caf99ad195c0d713efb023fc27fc1bde695cd5dc02646ab6fda85af2db1044673ae400e87b01da6ba8fa7b0e40a1d394c9a6abbc7336c2320c944
|
data/lib/xcode/install.rb
CHANGED
@@ -1,50 +1,11 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
1
|
+
require 'fileutils'
|
2
|
+
require 'pathname'
|
3
|
+
require 'spaceship'
|
3
4
|
require 'nokogiri'
|
4
5
|
require 'rubygems/version'
|
5
6
|
require 'xcode/install/command'
|
6
7
|
require 'xcode/install/version'
|
7
8
|
|
8
|
-
module CredentialsManager
|
9
|
-
class PasswordManager
|
10
|
-
alias_method :old_ask_for_login, :ask_for_login
|
11
|
-
|
12
|
-
def ask_for_login
|
13
|
-
puts "\nXcodeInstall needs your developer AppleID credentials to access the DevCenter."
|
14
|
-
|
15
|
-
old_ask_for_login
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
module FastlaneCore
|
21
|
-
class DeveloperCenter
|
22
|
-
def cookies
|
23
|
-
cookie_string = ''
|
24
|
-
|
25
|
-
page.driver.cookies.each do |_key, cookie|
|
26
|
-
cookie_string << "#{cookie.name}=#{cookie.value};"
|
27
|
-
end
|
28
|
-
|
29
|
-
cookie_string
|
30
|
-
end
|
31
|
-
|
32
|
-
def download_seedlist
|
33
|
-
JSON.parse(page.evaluate_script("$.ajax({data: { start: \"0\", limit: \"1000\", " \
|
34
|
-
"sort: \"dateModified\", dir: \"DESC\", searchTextField: \"\", " \
|
35
|
-
"searchCategories: \"\", search: \"false\" } , type: 'GET', " \
|
36
|
-
"url: '/services-account/QH65B2/downloadws/listDownloads.action', " \
|
37
|
-
'async: false})')['responseText'])
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
module Helper
|
42
|
-
def self.is_test?
|
43
|
-
true
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
9
|
module XcodeInstall
|
49
10
|
class Curl
|
50
11
|
COOKIES_PATH = Pathname.new('/tmp/curl-cookies.txt')
|
@@ -88,7 +49,7 @@ module XcodeInstall
|
|
88
49
|
xcode = seedlist.find { |x| x.name == version }
|
89
50
|
dmg_file = Pathname.new(File.basename(xcode.path))
|
90
51
|
|
91
|
-
result = Curl.new.fetch(xcode.url, CACHE_DIR,
|
52
|
+
result = Curl.new.fetch(xcode.url, CACHE_DIR, spaceship.cookie, dmg_file)
|
92
53
|
result ? CACHE_DIR + dmg_file : nil
|
93
54
|
end
|
94
55
|
|
@@ -135,12 +96,12 @@ module XcodeInstall
|
|
135
96
|
FileUtils.rm_f(dmgPath) if clean
|
136
97
|
end
|
137
98
|
|
138
|
-
def install_version(version, switch = true, clean = true)
|
99
|
+
def install_version(version, switch = true, clean = true, install = true)
|
139
100
|
return if version.nil?
|
140
101
|
dmg_path = get_dmg(version)
|
141
102
|
fail Informative, "Failed to download Xcode #{version}." if dmg_path.nil?
|
142
103
|
|
143
|
-
install_dmg(dmg_path, "-#{version.split(' ')[0]}", switch, clean)
|
104
|
+
install_dmg(dmg_path, "-#{version.split(' ')[0]}", switch, clean) if install
|
144
105
|
end
|
145
106
|
|
146
107
|
def list_current
|
@@ -169,15 +130,21 @@ module XcodeInstall
|
|
169
130
|
|
170
131
|
private
|
171
132
|
|
133
|
+
def spaceship
|
134
|
+
@spaceship ||= begin
|
135
|
+
Spaceship.login(ENV["XCODE_INSTALL_USER"], ENV["XCODE_INSTALL_PASSWORD"])
|
136
|
+
if ENV.key?("XCODE_INSTALL_TEAM_ID")
|
137
|
+
Spaceship.client.team_id = ENV["XCODE_INSTALL_TEAM_ID"]
|
138
|
+
end
|
139
|
+
Spaceship.client
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
172
143
|
CACHE_DIR = Pathname.new("#{ENV['HOME']}/Library/Caches/XcodeInstall")
|
173
144
|
LIST_FILE = CACHE_DIR + Pathname.new('xcodes.bin')
|
174
145
|
MINIMUM_VERSION = Gem::Version.new('4.3')
|
175
146
|
SYMLINK_PATH = Pathname.new('/Applications/Xcode.app')
|
176
147
|
|
177
|
-
def devcenter
|
178
|
-
@devcenter ||= FastlaneCore::DeveloperCenter.new
|
179
|
-
end
|
180
|
-
|
181
148
|
def enable_developer_mode
|
182
149
|
`sudo /usr/sbin/DevToolsSecurity -enable`
|
183
150
|
`sudo /usr/sbin/dseditgroup -o edit -t group -a staff _developer`
|
@@ -193,7 +160,15 @@ module XcodeInstall
|
|
193
160
|
end
|
194
161
|
|
195
162
|
def fetch_seedlist
|
196
|
-
@xcodes = parse_seedlist(
|
163
|
+
@xcodes = parse_seedlist(spaceship.send(:request, :get, '/services-account/QH65B2/downloadws/listDownloads.action', {
|
164
|
+
start: "0",
|
165
|
+
limit: "1000",
|
166
|
+
sort: "dateModified",
|
167
|
+
dir: "DESC",
|
168
|
+
searchTextField: "",
|
169
|
+
searchCategories: "",
|
170
|
+
search: "false",
|
171
|
+
}).body)
|
197
172
|
|
198
173
|
names = @xcodes.map(&:name)
|
199
174
|
@xcodes += prereleases.reject { |pre| names.include?(pre.name) }
|
@@ -227,7 +202,7 @@ module XcodeInstall
|
|
227
202
|
end
|
228
203
|
|
229
204
|
def prereleases
|
230
|
-
page = Nokogiri::HTML.parse(
|
205
|
+
page = Nokogiri::HTML.parse(spaceship.send(:request, :get, '/xcode/downloads/').body)
|
231
206
|
links = page.xpath('//a').select { |link| link['href'].end_with?('.dmg') }
|
232
207
|
|
233
208
|
links.map { |pre| Xcode.new_prelease(pre.text.strip.gsub(/.*Xcode /, ''), pre['href']) }
|
@@ -10,6 +10,7 @@ module XcodeInstall
|
|
10
10
|
|
11
11
|
def self.options
|
12
12
|
[['--no-switch', 'Don’t switch to this version after installation'],
|
13
|
+
['--no-install', 'Only download DMG, but do not install it.'],
|
13
14
|
['--no-clean', 'Don’t delete DMG after installation.']].concat(super)
|
14
15
|
end
|
15
16
|
|
@@ -17,6 +18,7 @@ module XcodeInstall
|
|
17
18
|
@installer = Installer.new
|
18
19
|
@version = argv.shift_argument
|
19
20
|
@should_clean = argv.flag?('clean', true)
|
21
|
+
@should_install = argv.flag?('install', true)
|
20
22
|
@should_switch = argv.flag?('switch', true)
|
21
23
|
super
|
22
24
|
end
|
@@ -29,7 +31,7 @@ module XcodeInstall
|
|
29
31
|
|
30
32
|
def run
|
31
33
|
return if @version.nil?
|
32
|
-
@installer.install_version(@version, @should_switch, @should_clean)
|
34
|
+
@installer.install_version(@version, @should_switch, @should_clean, @should_install)
|
33
35
|
end
|
34
36
|
end
|
35
37
|
end
|
data/spec/prerelease_spec.rb
CHANGED
@@ -18,6 +18,12 @@ module XcodeInstall
|
|
18
18
|
devcenter = mock
|
19
19
|
devcenter.stubs(:download_file).returns(nil)
|
20
20
|
Installer.any_instance.stubs(:devcenter).returns(devcenter)
|
21
|
+
|
22
|
+
result = mock
|
23
|
+
result.stubs(:body).returns(nil)
|
24
|
+
client = mock
|
25
|
+
client.stubs(:request).returns(result)
|
26
|
+
Spaceship::Client.stubs(:login).returns(client)
|
21
27
|
end
|
22
28
|
|
23
29
|
it 'can parse prereleases from 20150414' do
|
data/xcode-install.gemspec
CHANGED
@@ -19,7 +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 '
|
22
|
+
spec.add_dependency 'spaceship', '0.0.11'
|
23
23
|
spec.add_dependency 'nokogiri', '~> 1.3'
|
24
24
|
|
25
25
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
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.3.
|
4
|
+
version: 0.3.3
|
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-
|
11
|
+
date: 2015-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: claide
|
@@ -25,19 +25,19 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.8.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: spaceship
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.0.11
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.0.11
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: nokogiri
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|