Rakefile 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. require 'xcjobs'
  2. def destinations
  3. [ 'name=iPad 2,OS=8.1',
  4. 'name=iPad Air,OS=8.1',
  5. 'name=iPhone 4s,OS=8.1',
  6. 'name=iPhone 5,OS=8.1',
  7. 'name=iPhone 5s,OS=8.1',
  8. 'name=iPhone 6,OS=8.1',
  9. 'name=iPhone 6 Plus,OS=8.1',
  10. 'name=iPhone 6,OS=9.0',
  11. 'name=iPhone 6 Plus,OS=9.0',
  12. 'name=iPhone 6,OS=9.1',
  13. 'name=iPhone 6 Plus,OS=9.1'
  14. ]
  15. end
  16. def supportedPlatforms(test: false)
  17. if test
  18. ['macosx', 'iphoneos', 'iphonesimulator', 'appletvos', 'appletvsimulator']
  19. else
  20. ['macosx', 'iphoneos', 'iphonesimulator', 'watchos', 'watchsimulator', 'appletvos', 'appletvsimulator']
  21. end
  22. end
  23. def configurations
  24. ['Debug', 'Release']
  25. end
  26. desc "build for all platforms"
  27. task :build do |t|
  28. supportedPlatforms
  29. .product(configurations)
  30. .map { |platform, configuration| Rake::Task["build:#{platform}:#{configuration.downcase}"] }
  31. .map(&:invoke)
  32. end
  33. namespace :build do
  34. supportedPlatforms.product(configurations).each do |platform, configuration|
  35. XCJobs::Build.new("#{platform}:#{configuration.downcase}") do |t|
  36. t.project = 'KeychainAccess'
  37. t.scheme = 'KeychainAccess'
  38. t.sdk = platform
  39. t.configuration = configuration
  40. t.build_dir = 'build'
  41. t.formatter = 'xcpretty -c'
  42. if ENV['CI']
  43. t.add_build_setting('CODE_SIGN_IDENTITY', '')
  44. t.add_build_setting('CODE_SIGNING_REQUIRED', 'NO')
  45. end
  46. end
  47. end
  48. end
  49. namespace :test do
  50. supportedPlatforms
  51. .select { |platform| platform == 'macosx' || platform.end_with?('simulator') }.map do |platform|
  52. task platform do |t|
  53. configurations
  54. .map { |configuration| Rake::Task["test:#{platform}:#{configuration.downcase}"] }
  55. .map(&:invoke)
  56. end
  57. end
  58. end
  59. namespace :test do
  60. supportedPlatforms.product(configurations).each do |platform, configuration|
  61. XCJobs::Test.new("#{platform}:#{configuration.downcase}") do |t|
  62. t.project = 'KeychainAccess'
  63. t.scheme = 'KeychainAccess'
  64. t.sdk = platform
  65. t.configuration = configuration
  66. t.coverage = true
  67. if platform == 'iphonesimulator'
  68. destinations.each do |destination|
  69. t.add_destination(destination)
  70. end
  71. end
  72. t.build_dir = 'build'
  73. t.formatter = 'xcpretty -c'
  74. end
  75. end
  76. task :carthage do
  77. sh 'echo "github \"kishikawakatsumi/KeychainAccess\" \"${sha:-master}"\" > Cartfile'
  78. sh 'carthage update --no-use-binaries'
  79. end
  80. end
  81. XCJobs::Coverage::Coveralls.new()