123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- require 'xcjobs'
- xcode_version = `xcodebuild -version`.split("\n").first.scan(/\d+/).join('.')
- if xcode_version == '8.0'
- def destinations(platform: 'iphonesimulator')
- if platform == 'iphonesimulator'
- [ 'name=iPhone 5,OS=10.0',
- 'name=iPhone 5s,OS=10.0',
- 'name=iPhone 6,OS=10.0',
- 'name=iPhone 6s Plus,OS=10.0',
- 'name=iPhone SE,OS=10.0',
- 'name=iPad Air 2,OS=10.0',
- 'name=iPad Pro (9.7 inch),OS=10.0',
- 'name=iPad Pro (12.9 inch),OS=10.0'
- ]
- elsif platform == 'watchsimulator'
- [ 'name=Apple Watch - 38mm,OS=3.0',
- 'name=Apple Watch - 42mm,OS=3.0'
- ]
- elsif platform == 'appletvsimulator'
- [ 'name=Apple TV 1080p,OS=10.0'
- ]
- else
- []
- end
- end
- else
- def destinations(platform: 'iphonesimulator')
- if platform == 'iphonesimulator'
- [ 'name=iPad 2,OS=8.1',
- 'name=iPad Air,OS=8.1',
- 'name=iPhone 4s,OS=8.1',
- 'name=iPhone 5,OS=8.1',
- 'name=iPhone 5s,OS=8.1',
- 'name=iPhone 6,OS=8.1',
- 'name=iPhone 6 Plus,OS=8.1',
- 'name=iPhone 6,OS=9.0',
- 'name=iPhone 6 Plus,OS=9.0',
- 'name=iPhone 6,OS=9.1',
- 'name=iPhone 6 Plus,OS=9.1'
- ]
- elsif platform == 'watchsimulator'
- [ 'name=Apple Watch - 38mm,OS=2.0',
- 'name=Apple Watch - 42mm,OS=2.0'
- ]
- elsif platform == 'appletvsimulator'
- [ 'name=Apple TV 1080p,OS=9.0'
- ]
- else
- []
- end
- end
- end
- def supportedPlatforms
- ['macosx', 'iphoneos', 'iphonesimulator', 'watchos', 'watchsimulator', 'appletvos', 'appletvsimulator']
- end
- def configurations
- ['Debug', 'Release']
- end
- desc "build for all platforms"
- task :build do |t|
- supportedPlatforms
- .product(configurations)
- .map { |platform, configuration| Rake::Task["build:#{platform}:#{configuration.downcase}"] }
- .map(&:invoke)
- end
- namespace :build do
- supportedPlatforms.product(configurations).each do |platform, configuration|
- XCJobs::Build.new("#{platform}:#{configuration.downcase}") do |t|
- t.project = 'KeychainAccess'
- t.scheme = 'KeychainAccess'
- t.sdk = platform
- if xcode_version == '8.0'
- if platform == 'iphonesimulator'
- t.add_destination('name=iPhone 6,OS=10.0')
- elsif platform == 'watchsimulator'
- t.add_destination('name=Apple Watch - 42mm,OS=3.0')
- elsif platform == 'appletvsimulator'
- t.add_destination('name=Apple TV 1080p,OS=10.0')
- end
- else
- if platform == 'iphonesimulator'
- t.add_destination('name=iPhone 6,OS=9.1')
- elsif platform == 'watchsimulator'
- t.add_destination('name=Apple Watch - 42mm,OS=2.0')
- elsif platform == 'appletvsimulator'
- t.add_destination('name=Apple TV 1080p,OS=9.0')
- end
- end
- t.configuration = configuration
- t.build_dir = 'build'
- t.formatter = 'xcpretty -c'
- if ENV['CI']
- t.add_build_setting('CODE_SIGN_IDENTITY', '')
- t.add_build_setting('CODE_SIGNING_REQUIRED', 'NO')
- end
- end
- end
-
- task :carthage do
- sh %[echo 'github \"kishikawakatsumi/KeychainAccess\" \"#{branch_name}\"' > Cartfile]
- sh %[carthage update --no-use-binaries]
- end
-
- def branch_name
- if ENV['CI']
- pull_req = %[https://api.github.com/repos/#{ENV['TRAVIS_REPO_SLUG']}/pulls/#{ENV['TRAVIS_PULL_REQUEST']}]
- auth_token = 'kishikawakatsumi:209558699492df7782fbe62dda1891d6a6ba010f'
- (ENV['TRAVIS_PULL_REQUEST'] == 'false' ? ENV['TRAVIS_BRANCH'] : `curl -u #{auth_token} -s #{pull_req} | jq -r .head.ref`).strip
- else
- %x[git rev-parse --abbrev-ref HEAD]
- end
- end
- end
- namespace :test do
- supportedPlatforms
- .select { |platform| platform == 'macosx' || platform.end_with?('simulator') }.map do |platform|
- task platform do |t|
- configurations
- .map { |configuration| Rake::Task["test:#{platform}:#{configuration.downcase}"] }
- .map(&:invoke)
- end
- end
- end
-
- namespace :test do
- supportedPlatforms.product(configurations).each do |platform, configuration|
- XCJobs::Test.new("#{platform}:#{configuration.downcase}") do |t|
- t.project = 'KeychainAccess'
- t.scheme = 'KeychainAccess'
- t.sdk = platform
- destinations(platform: platform).each do |destination|
- t.add_destination(destination)
- end
- t.configuration = configuration
- t.coverage = true
- t.build_dir = 'build'
- t.formatter = 'xcpretty -c'
- end
- end
- end
- XCJobs::Coverage::Coveralls.new()
|