xcode-install 2.5.0 → 2.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f963f106ba542c0705d573d9262d8fb92595df9d
4
- data.tar.gz: ac247b88aba2b1548179b04c7e7a6eb6358c5004
2
+ SHA256:
3
+ metadata.gz: 968729b1842c8f61bb71810891dd3690dd6153c64227c997e8688f1edf930b4c
4
+ data.tar.gz: 04f1e73ff7d6a7dbc33744dccc61e7f87cad8d2557d0535c85d1f502ca86f59e
5
5
  SHA512:
6
- metadata.gz: e525ac44989fb47d31f0b976228eb1952f4d710fef60def7c3aaee7059312332c9d29e258b3a3a0760f6d39d2a1b067af9f3b3fc622c49a3780a14bd8fd61593
7
- data.tar.gz: e630821045db39f07f64840f17e6d96df9ba3cfaeca05cc3391f9b9dc8843d48038382580b96743c3ea5868afda8aed92e8135153bea24320680b99f4f7933c9
6
+ metadata.gz: f00f1dd8776dd06b58da3f4142f802af2efb248eb9fb96609148d64d909bac042b8dc55866b3f36f467cb2b80ee172977579b9ab512c5d1e13b0df230e40f3be
7
+ data.tar.gz: c2cf129e9f2afd1257243585c3c5c517f54d0d7336f86c151431fa0c57a69dc5f6aa468d7cc48d312d1ecb20e38857a24cabaf5e0e4139c7a946075bc572a13d
@@ -0,0 +1,33 @@
1
+ version: 2
2
+
3
+ jobs:
4
+ build:
5
+ macos:
6
+ xcode: "9.0"
7
+ working_directory: ~/xcode-install
8
+ shell: /bin/bash --login -eo pipefail
9
+ steps:
10
+ - checkout
11
+
12
+ # See Also: https://discuss.circleci.com/t/circleci-2-0-ios-error-installing-gems/23291/4
13
+ - run:
14
+ name: Set Ruby Version
15
+ command: echo "ruby-2.4" > ~/.ruby-version
16
+
17
+ - run:
18
+ name: Install ruby dependencies
19
+ command: bundle install
20
+
21
+ - run:
22
+ name: Run test
23
+ command: bundle exec rake spec
24
+
25
+ - run:
26
+ name: Run lint
27
+ command: bundle exec rake rubocop
28
+
29
+ workflows:
30
+ version: 2
31
+ build_and_test:
32
+ jobs:
33
+ - build
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Xcode::Install
2
2
 
3
- [![Gem Version](http://img.shields.io/gem/v/xcode-install.svg?style=flat)](http://badge.fury.io/rb/xcode-install) [![CircleCI](https://circleci.com/gh/KrauseFx/xcode-install.svg?style=svg)](https://circleci.com/gh/KrauseFx/xcode-install)
3
+ [![Gem Version](http://img.shields.io/gem/v/xcode-install.svg?style=flat)](http://badge.fury.io/rb/xcode-install) [![CircleCI](https://circleci.com/gh/xcpretty/xcode-install.svg?style=svg)](https://circleci.com/gh/xcpretty/xcode-install)
4
4
 
5
5
  Install and update your Xcodes automatically.
6
6
 
@@ -8,7 +8,8 @@ require 'xcode/install/command'
8
8
  require 'xcode/install/version'
9
9
  require 'shellwords'
10
10
  require 'open3'
11
- require 'fileutils'
11
+ require 'fastlane/action'
12
+ require 'fastlane/actions/verify_build'
12
13
 
13
14
  module XcodeInstall
14
15
  CACHE_DIR = Pathname.new("#{ENV['HOME']}/Library/Caches/XcodeInstall")
@@ -57,6 +58,7 @@ module XcodeInstall
57
58
  retry_options = ['--retry', '3']
58
59
  command = [
59
60
  'curl',
61
+ '--disable',
60
62
  *options,
61
63
  *retry_options,
62
64
  '--location',
@@ -210,14 +212,13 @@ module XcodeInstall
210
212
  end
211
213
 
212
214
  def install_dmg(dmg_path, suffix = '', switch = true, clean = true)
213
- archive_util = '/System/Library/CoreServices/Applications/Archive Utility.app/Contents/MacOS/Archive Utility'
214
215
  prompt = "Please authenticate for Xcode installation.\nPassword: "
215
216
  xcode_path = "/Applications/Xcode#{suffix}.app"
216
217
 
217
218
  if dmg_path.extname == '.xip'
218
- `'#{archive_util}' #{dmg_path}`
219
- xcode_orig_path = dmg_path.dirname + 'Xcode.app'
220
- xcode_beta_path = dmg_path.dirname + 'Xcode-beta.app'
219
+ `xip -x #{dmg_path}`
220
+ xcode_orig_path = File.join(Dir.pwd, 'Xcode.app')
221
+ xcode_beta_path = File.join(Dir.pwd, 'Xcode-beta.app')
221
222
  if Pathname.new(xcode_orig_path).exist?
222
223
  `sudo -p "#{prompt}" mv "#{xcode_orig_path}" "#{xcode_path}"`
223
224
  elsif Pathname.new(xcode_beta_path).exist?
@@ -250,13 +251,14 @@ HELP
250
251
  `umount "/Volumes/Xcode"`
251
252
  end
252
253
 
253
- unless verify_integrity(xcode_path)
254
+ xcode = InstalledXcode.new(xcode_path)
255
+
256
+ unless xcode.verify_integrity
254
257
  `sudo rm -rf #{xcode_path}`
255
258
  return
256
259
  end
257
260
 
258
261
  enable_developer_mode
259
- xcode = InstalledXcode.new(xcode_path)
260
262
  xcode.approve_license
261
263
  xcode.install_components
262
264
 
@@ -364,8 +366,9 @@ HELP
364
366
  return path if path.exist?
365
367
  end
366
368
  if ENV.key?('XCODE_INSTALL_CACHE_DIR')
367
- cache_path = Pathname.new(ENV['XCODE_INSTALL_CACHE_DIR']) + Pathname.new("xcode-#{version}.dmg")
368
- return cache_path if cache_path.exist?
369
+ Pathname.glob(ENV['XCODE_INSTALL_CACHE_DIR'] + '/*').each do |fpath|
370
+ return fpath if /^xcode_#{version}\.dmg|xip$/ =~ fpath.basename.to_s
371
+ end
369
372
  end
370
373
 
371
374
  download(version, progress, url, progress_block)
@@ -448,11 +451,6 @@ HELP
448
451
  links
449
452
  end
450
453
 
451
- def verify_integrity(path)
452
- puts `/usr/sbin/spctl --assess --verbose=4 --type execute #{path}`
453
- $?.exitstatus.zero?
454
- end
455
-
456
454
  def hdiutil(*args)
457
455
  io = IO.popen(['hdiutil', *args])
458
456
  result = io.read
@@ -578,6 +576,9 @@ HELP
578
576
  end
579
577
 
580
578
  class InstalledXcode
579
+ TEAM_IDENTIFIER = '59GAB85EFG'.freeze
580
+ AUTHORITY = 'Software Signing'.freeze
581
+
581
582
  attr_reader :path
582
583
  attr_reader :version
583
584
  attr_reader :bundle_version
@@ -613,12 +614,18 @@ HELP
613
614
 
614
615
  def approve_license
615
616
  if Gem::Version.new(version) < Gem::Version.new('7.3')
616
- license_path = "#{@path}/Contents/Resources/English.lproj/License.rtf"
617
- license_id = IO.read(license_path).match(/\bEA\d{4}\b/)
617
+ license_info_path = File.join(@path, 'Contents/Resources/LicenseInfo.plist')
618
+ license_id = `/usr/libexec/PlistBuddy -c 'Print :licenseID' #{license_info_path}`
619
+ license_type = `/usr/libexec/PlistBuddy -c 'Print :licenseType' #{license_info_path}`
618
620
  license_plist_path = '/Library/Preferences/com.apple.dt.Xcode.plist'
619
621
  `sudo rm -rf #{license_plist_path}`
620
- `sudo /usr/libexec/PlistBuddy -c "add :IDELastGMLicenseAgreedTo string #{license_id}" #{license_plist_path}`
621
- `sudo /usr/libexec/PlistBuddy -c "add :IDEXcodeVersionForAgreedToGMLicense string #{@version}" #{license_plist_path}`
622
+ if license_type == 'GM'
623
+ `sudo /usr/libexec/PlistBuddy -c "add :IDELastGMLicenseAgreedTo string #{license_id}" #{license_plist_path}`
624
+ `sudo /usr/libexec/PlistBuddy -c "add :IDEXcodeVersionForAgreedToGMLicense string #{version}" #{license_plist_path}`
625
+ else
626
+ `sudo /usr/libexec/PlistBuddy -c "add :IDELastBetaLicenseAgreedTo string #{license_id}" #{license_plist_path}`
627
+ `sudo /usr/libexec/PlistBuddy -c "add :IDEXcodeVersionForAgreedToBetaLicense string #{version}" #{license_plist_path}`
628
+ end
622
629
  else
623
630
  `sudo #{@path}/Contents/Developer/usr/bin/xcodebuild -license accept`
624
631
  end
@@ -655,6 +662,10 @@ HELP
655
662
  output.split("\n").first.split(' ')[1]
656
663
  end
657
664
 
665
+ def verify_integrity
666
+ verify_app_security_assessment && verify_app_cert
667
+ end
668
+
658
669
  :private
659
670
 
660
671
  def bundle_version_string
@@ -669,6 +680,18 @@ HELP
669
680
  def plist_entry(keypath)
670
681
  `/usr/libexec/PlistBuddy -c "Print :#{keypath}" "#{path}/Contents/Info.plist"`.chomp
671
682
  end
683
+
684
+ def verify_app_security_assessment
685
+ puts `/usr/sbin/spctl --assess --verbose=4 --type execute #{@path}`
686
+ $?.exitstatus.zero?
687
+ end
688
+
689
+ def verify_app_cert
690
+ cert_info = Fastlane::Actions::VerifyBuildAction.gather_cert_info(@path.to_s)
691
+ apple_team_identifier_result = cert_info['team_identifier'] == TEAM_IDENTIFIER
692
+ apple_authority_result = cert_info['authority'].include?(AUTHORITY)
693
+ apple_team_identifier_result && apple_authority_result
694
+ end
672
695
  end
673
696
 
674
697
  # A version of Xcode we fetched from the Apple Developer Portal
@@ -5,7 +5,10 @@ module XcodeInstall
5
5
  self.summary = 'Installs Xcode Command Line Tools.'
6
6
 
7
7
  def run
8
- fail Informative, 'Xcode CLI Tools are already installed.' if installed?
8
+ if installed?
9
+ print 'Xcode CLI Tools are already installed.'
10
+ exit(0)
11
+ end
9
12
  install
10
13
  end
11
14
 
@@ -1,3 +1,3 @@
1
1
  module XcodeInstall
2
- VERSION = '2.5.0'.freeze
2
+ VERSION = '2.6.0'.freeze
3
3
  end
@@ -35,6 +35,7 @@ module XcodeInstall
35
35
 
36
36
  command = [
37
37
  'curl',
38
+ '--disable',
38
39
  '--cookie customCookie',
39
40
  '--cookie-jar /tmp/curl-cookies.txt',
40
41
  '--retry 3',
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: 2.5.0
4
+ version: 2.6.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: 2018-11-20 00:00:00.000000000 Z
11
+ date: 2019-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: claide
@@ -87,6 +87,7 @@ executables:
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
+ - ".circleci/config.yml"
90
91
  - ".gitattributes"
91
92
  - ".gitignore"
92
93
  - ".rubocop.yml"
@@ -97,7 +98,6 @@ files:
97
98
  - Rakefile
98
99
  - bin/xcversion
99
100
  - "bin/\U0001F389"
100
- - circle.yml
101
101
  - lib/xcode/install.rb
102
102
  - lib/xcode/install/cleanup.rb
103
103
  - lib/xcode/install/cli.rb
@@ -159,8 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
159
  - !ruby/object:Gem::Version
160
160
  version: '0'
161
161
  requirements: []
162
- rubyforge_project:
163
- rubygems_version: 2.6.8
162
+ rubygems_version: 3.0.1
164
163
  signing_key:
165
164
  specification_version: 4
166
165
  summary: Xcode installation manager.
data/circle.yml DELETED
@@ -1,7 +0,0 @@
1
- machine:
2
- xcode:
3
- version: 9.0
4
- test:
5
- override:
6
- - bundle exec rake spec
7
- - bundle exec rake rubocop