xcode-installer 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/HISTORY.md +4 -0
- data/lib/xcode-installer.rb +1 -1
- data/lib/xcode-installer/commands/download.rb +3 -3
- data/lib/xcode-installer/commands/install.rb +3 -3
- data/lib/xcode-installer/download.rb +4 -2
- data/lib/xcode-installer/install.rb +18 -7
- data/lib/xcode-installer/list.rb +7 -1
- data/lib/xcode-installer/release-manager.rb +7 -2
- data/lib/xcode-installer/xcode-versions.yml +11 -56
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZmZhM2ZjMmIxYjg2ZjkzNjg4OGQwMWRjMjBkYzdhMjFkOGM4NjdmMQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NmU2ZWVjOTM3YWRjZTExM2JmZTk2OWMxMGRhMjg4NmI2NWI2ZGNmOA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YjhhODNhYzUzYzVlZTdlZjIzYTE4YzcwNTJlMTQ1NTUxYzYyNTg3ZmFjMDFj
|
10
|
+
NjlmMGYxYmIwNmEzMTQyYTdiYmM4NGMxMjZmZWZkNTE5ZDJkMTA5MjZiNTQ0
|
11
|
+
Zjk0MDcwYmZjMmMzZWFhNzliM2NkOTNkYjc3MTA3ZjIwM2Q3NDE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZmQ0MWJkMzc4NmQzNzg5N2NhNjA5ODk5MTdjMjJjYmFkYmE4MDBmMzY5MWI1
|
14
|
+
ZGU3OWQ2ZWZmOWU4MjkwODkxNGM2NjBmODljZDVlNWY5OGUzMDNlODg5Zjkx
|
15
|
+
YzdkNzZkYjI5NzhmNzM4MGU4OTE5ZGUyMWUzODk1YWYyYWJhNTI=
|
data/HISTORY.md
CHANGED
data/lib/xcode-installer.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'xcode-installer/download'
|
2
2
|
|
3
3
|
command :'download' do |c|
|
4
|
-
c.syntax = 'xcode-installer download [options]'
|
4
|
+
c.syntax = 'xcode-installer download [options] [gui|cli]'
|
5
5
|
c.option '--dry-run', 'Enables a HEAD request instead of downloading the file'
|
6
6
|
c.option '--release STRING', 'Used to specify an old or pre-release version of Xcode. Otherwise, latest GA release of Xcode is downloaded.'
|
7
7
|
c.option '--pre-release', 'Specifies to download the latest pre-release version of Xcode.'
|
8
|
-
c.summary = 'Initiates the download'
|
9
|
-
c.description = ''
|
8
|
+
c.summary = 'Initiates the download of the Xcode .dmg file.'
|
9
|
+
c.description = 'Specify "cli" to download command-line tools (gui is the default)'
|
10
10
|
|
11
11
|
c.action XcodeInstaller::Download, :action
|
12
12
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'xcode-installer/install'
|
2
2
|
|
3
3
|
command :'install' do |c|
|
4
|
-
c.syntax = 'xcode-installer install [options]'
|
4
|
+
c.syntax = 'xcode-installer install [options] [gui|cli]'
|
5
5
|
c.option '--no-trash', 'Prevents trashing .dmg after install'
|
6
6
|
c.option '--release STRING', 'Used to specify an old or pre-release version of Xcode. Otherwise, latest GA release of Xcode is downloaded.'
|
7
7
|
c.option '--pre-release', 'Specifies to download the latest pre-release version of Xcode.'
|
8
|
-
c.summary = 'Installs
|
9
|
-
c.description = 'NEEDS SOME WORK - Use download and mount .dmg manually for now'
|
8
|
+
c.summary = 'Installs Xcode (or the command-line tools) from a .dmg file, downloading it if not already present'
|
9
|
+
c.description = 'NEEDS SOME WORK - Use download and mount .dmg manually for now. Specify "cli" to install command-line tools (gui is the default)'
|
10
10
|
|
11
11
|
c.action XcodeInstaller::Install, :action
|
12
12
|
end
|
@@ -9,10 +9,12 @@ module XcodeInstaller
|
|
9
9
|
attr_accessor :release
|
10
10
|
|
11
11
|
def action(args, options)
|
12
|
+
download_type = (args.include? 'cli') ? 'cli' : 'gui'
|
13
|
+
|
12
14
|
mgr = XcodeInstaller::ReleaseManager.new
|
13
|
-
@release = mgr.get_release(options.release, options.pre_release)
|
15
|
+
@release = mgr.get_release(options.release, options.pre_release, download_type)
|
14
16
|
|
15
|
-
if release
|
17
|
+
if @release
|
16
18
|
xcode_url = @release['download_url']
|
17
19
|
else
|
18
20
|
puts "No Xcode release with number #{options.release}. Use the 'list' command to see a list of known releases."
|
@@ -21,9 +21,11 @@ module XcodeInstaller
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def action(args, options)
|
24
|
+
install_type = (args.include? 'cli') ? 'cli' : 'gui'
|
25
|
+
|
24
26
|
@verbose = options.verbose
|
25
27
|
mgr = XcodeInstaller::ReleaseManager.new
|
26
|
-
@release = mgr.get_release(options.release, options.pre_release)
|
28
|
+
@release = mgr.get_release(options.release, options.pre_release, install_type)
|
27
29
|
@version_suffix = "-#{@release['version']}"
|
28
30
|
|
29
31
|
files = Dir.glob(dmg_file_name)
|
@@ -42,14 +44,23 @@ module XcodeInstaller
|
|
42
44
|
# system "hdid '#{dmg_file}' -mountpoint #{mountpoint}"
|
43
45
|
system "hdiutil attach -quiet #{dmg_file}"
|
44
46
|
|
45
|
-
|
47
|
+
#
|
48
|
+
# Install
|
49
|
+
#
|
50
|
+
if (install_type == 'gui')
|
51
|
+
app_bundle_name = @release['app_bundle_name'] ||= "Xcode.app"
|
46
52
|
|
47
|
-
|
48
|
-
|
49
|
-
|
53
|
+
# Trash existing install (so command is rerunnable)
|
54
|
+
destination = "/Applications/Xcode#{version_suffix}.app"
|
55
|
+
Trash.new.throw_out(destination)
|
50
56
|
|
51
|
-
|
52
|
-
|
57
|
+
# TODO: Dynamically determine .app file name (DP releases have the version embedded)
|
58
|
+
copy("#{mountpoint}/#{app_bundle_name}", destination)
|
59
|
+
else
|
60
|
+
# CLI install
|
61
|
+
mountpoint = '/Volumes/Command\ Line\ Developer\ Tools'
|
62
|
+
system "sudo installer -package #{mountpoint}/*.pkg -target /"
|
63
|
+
end
|
53
64
|
|
54
65
|
system "hdiutil detach -quiet #{mountpoint}"
|
55
66
|
end
|
data/lib/xcode-installer/list.rb
CHANGED
@@ -35,13 +35,19 @@ module XcodeInstaller
|
|
35
35
|
# Extra line between tables
|
36
36
|
puts if show_all
|
37
37
|
|
38
|
+
os_version = `sw_vers -productVersion`
|
39
|
+
# Drop the patch number
|
40
|
+
os_version = os_version.match(/\d+\.\d+/)[0]
|
41
|
+
|
38
42
|
if show_all || show_cli
|
39
43
|
title = 'Xcode Command-Line'
|
40
44
|
table = Terminal::Table.new :title => title do |t|
|
41
45
|
t << ['Version', 'Release Date', 'Download URL']
|
42
46
|
cli_versions.each do |release|
|
43
|
-
|
47
|
+
# Skip releases for a different OS version
|
48
|
+
next unless release['os_version'].to_s == os_version
|
44
49
|
|
50
|
+
t << :separator
|
45
51
|
row = [release['version'], release['release_date'], release['download_url']]
|
46
52
|
t << row
|
47
53
|
end
|
@@ -15,7 +15,7 @@ module XcodeInstaller
|
|
15
15
|
return list
|
16
16
|
end
|
17
17
|
|
18
|
-
def get_release(version, include_beta)
|
18
|
+
def get_release(version, include_beta, interface_type)
|
19
19
|
version ||= 'latest'
|
20
20
|
include_beta ||= false
|
21
21
|
interface_type ||= 'gui'
|
@@ -26,8 +26,13 @@ module XcodeInstaller
|
|
26
26
|
elsif version == 'latest'
|
27
27
|
version = LATEST_GA
|
28
28
|
end
|
29
|
+
|
30
|
+
os_version = `sw_vers -productVersion`
|
31
|
+
# Drop the patch number
|
32
|
+
os_version = os_version.match(/\d+\.\d+/)[0]
|
33
|
+
|
29
34
|
list.each { |release|
|
30
|
-
if release['version'] == version
|
35
|
+
if release['version'].to_s == version && release['os_version'].to_s == os_version
|
31
36
|
return release
|
32
37
|
end
|
33
38
|
}
|
@@ -121,62 +121,17 @@ gui:
|
|
121
121
|
download_url: https://developer.apple.com/downloads/download.action?path=Developer_Tools/xcode_4.6/xcode460417218a.dmg
|
122
122
|
interface_type: gui
|
123
123
|
cli:
|
124
|
-
- version: 5
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
# download_url: https://developer.apple.com/downloads/download.action?path=Developer_Tools/command_line_tools_for_os_x_mavericks_developer_preview_6/command_line_tools_for_os_x_mavericks_developer_preview_6.dmg
|
131
|
-
# release_date: 2013-08-16
|
132
|
-
# interface_type: cli
|
133
|
-
# os_version: 10.9
|
134
|
-
- version: 5-DP6
|
135
|
-
download_url: https://developer.apple.com/downloads/download.action?path=Developer_Tools/command_line_tools_for_os_x_mountain_lion_developer_preview_6/command_line_tools_for_os_x_mountain_lion_developer_preview_6.dmg
|
136
|
-
release_date: 2013-08-21
|
137
|
-
interface_type: cli
|
138
|
-
os_version: 10.8
|
139
|
-
# - version: 5-DP5
|
140
|
-
# download_url: https://developer.apple.com/downloads/download.action?path=Developer_Tools/command_line_tools_for_os_x_mavericks_developer_preview_5/command_line_tools_for_os_x_mavericks_developer_preview_5.dmg
|
141
|
-
# release_date: 2013-08-06
|
142
|
-
# interface_type: cli
|
143
|
-
# os_version: 10.9
|
144
|
-
- version: 5-DP5
|
145
|
-
download_url: https://developer.apple.com/downloads/download.action?path=Developer_Tools/command_line_tools_for_os_x_mountain_lion_developer_preview_5/command_line_tools_for_os_x_mountain_lion_developer_preview_5.dmg
|
146
|
-
release_date: 2013-08-06
|
147
|
-
interface_type: cli
|
148
|
-
os_version: 10.8
|
149
|
-
# - version: 5-DP4
|
150
|
-
# download_url: https://developer.apple.com/downloads/download.action?path=Developer_Tools/command_line_tools_for_os_x_mavericks_developer_preview_4/command_line_tools_for_os_x_mavericks_developer_preview_4.dmg
|
151
|
-
# release_date: 2013-07-29
|
152
|
-
# interface_type: cli
|
153
|
-
# os_version: 10.9
|
154
|
-
- version: 5-DP4
|
155
|
-
download_url: https://developer.apple.com/downloads/download.action?path=Developer_Tools/command_line_tools_for_os_x_mountain_lion_developer_preview_4/command_line_tools_for_os_x_mountain_lion_developer_preview_4.dmg
|
156
|
-
release_date: 2013-07-29
|
124
|
+
- version: 5.1
|
125
|
+
os_version: 10.9
|
126
|
+
description: Command Line Tools (OS X Mavericks) for Xcode - March 2014
|
127
|
+
download_url: https://developer.apple.com/downloads/download.action?path=Developer_Tools/command_line_tools_os_x_mavericks_for_xcode__march_2014/commandline_tools_os_x_mavericks_for_xcode__march_2014.dmg
|
128
|
+
release_date: 2014-03-10
|
129
|
+
last_modified: 'Mon, 10 Mar 2014 19:03:18 GMT'
|
157
130
|
interface_type: cli
|
131
|
+
- version: 5.1
|
158
132
|
os_version: 10.8
|
159
|
-
-
|
160
|
-
download_url: https://developer.apple.com/downloads/download.action?path=Developer_Tools/
|
161
|
-
release_date:
|
162
|
-
|
163
|
-
- version: 5-DP
|
164
|
-
download_url: https://developer.apple.com/downloads/download.action?path=Developer_Tools/command_line_tools_os_x_mountain_lion_for_xcode_5__june_2013/command_line_tools_mountain_lion_for_xcode_5_june_2013.dmg
|
165
|
-
release_date: 2013-06-10
|
166
|
-
interface_type: cli
|
167
|
-
- version: 4.6.3
|
168
|
-
download_url: https://developer.apple.com/downloads/download.action?path=wwdc_2013/command_line_tools_os_x_v10.9_for_xcode_5__june_2013/command_line_tools_os_x_v10.9_for_xcode_5_developer_preview.dmg
|
169
|
-
interface_type: cli
|
170
|
-
- version: 4.6.2
|
171
|
-
download_url: https://developer.apple.com/downloads/download.action?path=Developer_Tools/command_line_tools_os_x_mountain_lion_for_xcode__april_2013/xcode462_cltools_10_86938259a.dmg
|
172
|
-
release_date: 2013-04-15
|
173
|
-
interface_type: cli
|
174
|
-
- version: 4.6.1
|
175
|
-
download_url: https://developer.apple.com/downloads/download.action?path=Developer_Tools/command_line_tools_os_x_mountain_lion_for_xcode__march_2013/xcode461_cltools_10_86938245a.dmg
|
176
|
-
release_date: 2013-03-14
|
177
|
-
interface_type: cli
|
178
|
-
- version: 4.6
|
179
|
-
download_url: https://developer.apple.com/downloads/download.action?path=Developer_Tools/command_line_tools_os_x_mountain_lion_for_xcode__january_2013/xcode46cltools_10_86938131a.dmg
|
180
|
-
release_date: 2013-02-19
|
133
|
+
description: Command Line Tools (OS X Mountain Lion) for Xcode - March 2014
|
134
|
+
download_url: https://developer.apple.com/downloads/download.action?path=Developer_Tools/command_line_tools_os_x_mountain_lion_for_xcode__march_2014/commandline_tools_os_x_mountain_lion_for_xcode__march_2014.dmg
|
135
|
+
release_date: 2014-03-10
|
136
|
+
last_modified:
|
181
137
|
interface_type: cli
|
182
|
-
|