fastlane 1.66.0 → 1.67.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.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +37 -38
  3. data/lib/assets/AppfileTemplate +1 -1
  4. data/lib/assets/DefaultFastfileTemplate +2 -2
  5. data/lib/assets/FastfileTemplateAndroid +2 -2
  6. data/lib/assets/custom_action_template.rb +1 -1
  7. data/lib/fastlane/actions/actions_helper.rb +2 -2
  8. data/lib/fastlane/actions/appetize.rb +15 -16
  9. data/lib/fastlane/actions/appium.rb +1 -1
  10. data/lib/fastlane/actions/appledoc.rb +3 -3
  11. data/lib/fastlane/actions/artifactory.rb +7 -7
  12. data/lib/fastlane/actions/backup_file.rb +1 -1
  13. data/lib/fastlane/actions/backup_xcarchive.rb +1 -1
  14. data/lib/fastlane/actions/bundle_install.rb +2 -2
  15. data/lib/fastlane/actions/cert.rb +1 -1
  16. data/lib/fastlane/actions/changelog_from_git_commits.rb +2 -2
  17. data/lib/fastlane/actions/chatwork.rb +2 -2
  18. data/lib/fastlane/actions/clean_build_artifacts.rb +3 -2
  19. data/lib/fastlane/actions/clean_cocoapods_cache.rb +1 -1
  20. data/lib/fastlane/actions/clear_derived_data.rb +2 -2
  21. data/lib/fastlane/actions/clipboard.rb +1 -1
  22. data/lib/fastlane/actions/commit_version_bump.rb +3 -3
  23. data/lib/fastlane/actions/copy_artifacts.rb +2 -2
  24. data/lib/fastlane/actions/crashlytics.rb +6 -6
  25. data/lib/fastlane/actions/create_pull_request.rb +3 -3
  26. data/lib/fastlane/actions/deploygate.rb +6 -6
  27. data/lib/fastlane/actions/dotgpg_environment.rb +1 -1
  28. data/lib/fastlane/actions/download.rb +1 -1
  29. data/lib/fastlane/actions/download_dsyms.rb +117 -0
  30. data/lib/fastlane/actions/ensure_git_branch.rb +1 -1
  31. data/lib/fastlane/actions/ensure_git_status_clean.rb +1 -1
  32. data/lib/fastlane/actions/ensure_no_debug_code.rb +26 -12
  33. data/lib/fastlane/actions/ensure_xcode_version.rb +3 -3
  34. data/lib/fastlane/actions/erb.rb +1 -1
  35. data/lib/fastlane/actions/fastlane_version.rb +1 -1
  36. data/lib/fastlane/actions/frameit.rb +1 -1
  37. data/lib/fastlane/actions/gcovr.rb +2 -2
  38. data/lib/fastlane/actions/get_build_number.rb +1 -1
  39. data/lib/fastlane/actions/get_github_release.rb +6 -6
  40. data/lib/fastlane/actions/get_info_plist_value.rb +2 -2
  41. data/lib/fastlane/actions/get_ipa_info_plist_value.rb +2 -2
  42. data/lib/fastlane/actions/get_version_number.rb +1 -1
  43. data/lib/fastlane/actions/git_add.rb +1 -1
  44. data/lib/fastlane/actions/git_commit.rb +1 -1
  45. data/lib/fastlane/actions/gradle.rb +2 -2
  46. data/lib/fastlane/actions/gym.rb +1 -1
  47. data/lib/fastlane/actions/hg_add_tag.rb +1 -1
  48. data/lib/fastlane/actions/hg_commit_version_bump.rb +3 -3
  49. data/lib/fastlane/actions/hg_ensure_clean_status.rb +1 -1
  50. data/lib/fastlane/actions/hg_push.rb +1 -1
  51. data/lib/fastlane/actions/hipchat.rb +4 -6
  52. data/lib/fastlane/actions/hockey.rb +4 -4
  53. data/lib/fastlane/actions/ifttt.rb +74 -0
  54. data/lib/fastlane/actions/increment_build_number.rb +1 -1
  55. data/lib/fastlane/actions/increment_version_number.rb +3 -3
  56. data/lib/fastlane/actions/install_on_device.rb +1 -1
  57. data/lib/fastlane/actions/install_xcode_plugin.rb +2 -2
  58. data/lib/fastlane/actions/installr.rb +2 -2
  59. data/lib/fastlane/actions/ipa.rb +8 -8
  60. data/lib/fastlane/actions/latest_testflight_build_number.rb +3 -3
  61. data/lib/fastlane/actions/lcov.rb +1 -1
  62. data/lib/fastlane/actions/mailgun.rb +1 -1
  63. data/lib/fastlane/actions/match.rb +2 -2
  64. data/lib/fastlane/actions/notify.rb +1 -1
  65. data/lib/fastlane/actions/oclint.rb +2 -2
  66. data/lib/fastlane/actions/onesignal.rb +3 -3
  67. data/lib/fastlane/actions/opt_out_usage.rb +1 -1
  68. data/lib/fastlane/actions/pilot.rb +1 -1
  69. data/lib/fastlane/actions/pod_push.rb +2 -2
  70. data/lib/fastlane/actions/produce.rb +1 -1
  71. data/lib/fastlane/actions/prompt.rb +3 -3
  72. data/lib/fastlane/actions/push_git_tags.rb +1 -1
  73. data/lib/fastlane/actions/push_to_git_remote.rb +1 -1
  74. data/lib/fastlane/actions/read_podspec.rb +1 -1
  75. data/lib/fastlane/actions/recreate_schemes.rb +1 -1
  76. data/lib/fastlane/actions/register_devices.rb +2 -2
  77. data/lib/fastlane/actions/reset_git_repo.rb +3 -3
  78. data/lib/fastlane/actions/resign.rb +7 -2
  79. data/lib/fastlane/actions/restore_file.rb +1 -1
  80. data/lib/fastlane/actions/rocket.rb +64 -0
  81. data/lib/fastlane/actions/s3.rb +33 -101
  82. data/lib/fastlane/actions/scan.rb +1 -1
  83. data/lib/fastlane/actions/scp.rb +2 -2
  84. data/lib/fastlane/actions/set_changelog.rb +12 -12
  85. data/lib/fastlane/actions/set_github_release.rb +14 -14
  86. data/lib/fastlane/actions/set_info_plist_value.rb +2 -2
  87. data/lib/fastlane/actions/sigh.rb +1 -1
  88. data/lib/fastlane/actions/slack.rb +2 -2
  89. data/lib/fastlane/actions/ssh.rb +4 -4
  90. data/lib/fastlane/actions/supply.rb +1 -1
  91. data/lib/fastlane/actions/team_id.rb +1 -1
  92. data/lib/fastlane/actions/team_name.rb +1 -1
  93. data/lib/fastlane/actions/testfairy.rb +4 -4
  94. data/lib/fastlane/actions/testmunk.rb +3 -3
  95. data/lib/fastlane/actions/tryouts.rb +3 -3
  96. data/lib/fastlane/actions/twitter.rb +1 -1
  97. data/lib/fastlane/actions/typetalk.rb +1 -1
  98. data/lib/fastlane/actions/update_app_group_identifiers.rb +4 -4
  99. data/lib/fastlane/actions/update_app_identifier.rb +4 -4
  100. data/lib/fastlane/actions/update_fastlane.rb +22 -13
  101. data/lib/fastlane/actions/update_info_plist.rb +4 -4
  102. data/lib/fastlane/actions/update_project_code_signing.rb +5 -5
  103. data/lib/fastlane/actions/update_project_provisioning.rb +10 -10
  104. data/lib/fastlane/actions/update_project_team.rb +2 -2
  105. data/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +104 -0
  106. data/lib/fastlane/actions/upload_symbols_to_sentry.rb +119 -0
  107. data/lib/fastlane/actions/verify_pod_keys.rb +2 -2
  108. data/lib/fastlane/actions/verify_xcode.rb +10 -10
  109. data/lib/fastlane/actions/xcode_install.rb +2 -2
  110. data/lib/fastlane/actions/xcode_select.rb +1 -1
  111. data/lib/fastlane/actions/xcode_server_get_assets.rb +8 -8
  112. data/lib/fastlane/actions/xcodebuild.rb +7 -7
  113. data/lib/fastlane/actions/xcov.rb +6 -0
  114. data/lib/fastlane/actions/xctool.rb +2 -2
  115. data/lib/fastlane/command_line_handler.rb +1 -1
  116. data/lib/fastlane/configuration_helper.rb +2 -2
  117. data/lib/fastlane/core_ext/bundler_monkey_patch.rb +14 -0
  118. data/lib/fastlane/core_ext/string.rb +4 -4
  119. data/lib/fastlane/documentation/actions_list.rb +2 -2
  120. data/lib/fastlane/documentation/docs_generator.rb +3 -3
  121. data/lib/fastlane/fast_file.rb +6 -6
  122. data/lib/fastlane/helper/crashlytics_helper.rb +1 -1
  123. data/lib/fastlane/helper/git_helper.rb +2 -2
  124. data/lib/fastlane/one_off.rb +1 -1
  125. data/lib/fastlane/runner.rb +1 -1
  126. data/lib/fastlane/setup/setup.rb +7 -7
  127. data/lib/fastlane/setup/setup_android.rb +13 -13
  128. data/lib/fastlane/setup/setup_ios.rb +24 -27
  129. data/lib/fastlane/version.rb +1 -1
  130. metadata +66 -32
@@ -10,7 +10,7 @@ module Fastlane
10
10
  # Check if parameters are set
11
11
  if params[:app_identifier] or params[:display_name] or params[:block]
12
12
  if (params[:app_identifier] or params[:display_name]) and params[:block]
13
- Helper.log.warn("block parameter can not be specified with app_identifier or display_name")
13
+ UI.important("block parameter can not be specified with app_identifier or display_name")
14
14
  return false
15
15
  end
16
16
 
@@ -31,10 +31,10 @@ module Fastlane
31
31
  plist_string = Plist::Emit.dump(plist)
32
32
  File.write(info_plist_path, plist_string)
33
33
 
34
- Helper.log.info "Updated #{params[:plist_path]} 💾.".green
34
+ UI.success("Updated #{params[:plist_path]} 💾.")
35
35
  plist_string
36
36
  else
37
- Helper.log.warn("You haven't specified any parameters to update your plist.")
37
+ UI.important("You haven't specified any parameters to update your plist.")
38
38
  false
39
39
  end
40
40
  end
@@ -66,7 +66,7 @@ module Fastlane
66
66
  env_name: "FL_UPDATE_PLIST_PATH",
67
67
  description: "Path to info plist",
68
68
  verify_block: proc do |value|
69
- raise "Invalid plist file".red unless value[-6..-1].downcase == ".plist"
69
+ raise "Invalid plist file".red unless value[-6..-1].casecmp(".plist").zero?
70
70
  end),
71
71
  FastlaneCore::ConfigItem.new(key: :app_identifier,
72
72
  env_name: 'FL_UPDATE_PLIST_APP_IDENTIFIER',
@@ -5,20 +5,20 @@ module Fastlane
5
5
 
6
6
  class UpdateProjectCodeSigningAction < Action
7
7
  def self.run(params)
8
- Helper.log.info "You shouldn't use update_project_code_signing"
9
- Helper.log.info "Have you considered using the recommended way to do code sining?"
10
- Helper.log.info "https://github.com/fastlane/fastlane/blob/master/docs/CodeSigning.md"
8
+ UI.message("You shouldn't use update_project_code_signing")
9
+ UI.message("Have you considered using the recommended way to do code sining?")
10
+ UI.message("https://github.com/fastlane/fastlane/blob/master/docs/CodeSigning.md")
11
11
 
12
12
  path = params[:path]
13
13
  path = File.join(path, "project.pbxproj")
14
14
  raise "Could not find path to project config '#{path}'. Pass the path to your project (not workspace)!".red unless File.exist?(path)
15
15
 
16
- Helper.log.info("Updating provisioning profile UDID (#{params[:udid]}) for the given project '#{path}'")
16
+ UI.message("Updating provisioning profile UDID (#{params[:udid]}) for the given project '#{path}'")
17
17
 
18
18
  p = File.read(path)
19
19
  File.write(path, p.gsub(/PROVISIONING_PROFILE = ".*";/, "PROVISIONING_PROFILE = \"#{params[:udid]}\";"))
20
20
 
21
- Helper.log.info("Successfully updated project settings to use UDID '#{params[:udid]}'".green)
21
+ UI.success("Successfully updated project settings to use UDID '#{params[:udid]}'")
22
22
  end
23
23
 
24
24
  def self.description
@@ -7,8 +7,8 @@ module Fastlane
7
7
  class UpdateProjectProvisioningAction < Action
8
8
  ROOT_CERTIFICATE_URL = "http://www.apple.com/appleca/AppleIncRootCertificate.cer"
9
9
  def self.run(params)
10
- Helper.log.info "You’re updating provisioning profiles directly in your project, but have you considered easier ways to do code signing?"
11
- Helper.log.info "https://github.com/fastlane/fastlane/blob/master/docs/CodeSigning.md"
10
+ UI.message("You’re updating provisioning profiles directly in your project, but have you considered easier ways to do code signing?")
11
+ UI.message("https://github.com/fastlane/fastlane/blob/master/docs/CodeSigning.md")
12
12
 
13
13
  # assign folder from parameter or search for xcodeproj file
14
14
  folder = params[:xcodeproj] || Dir["*.xcodeproj"].first
@@ -19,7 +19,7 @@ module Fastlane
19
19
 
20
20
  # download certificate
21
21
  unless File.exist?(params[:certificate])
22
- Helper.log.info("Downloading root certificate from (#{ROOT_CERTIFICATE_URL}) to path '#{params[:certificate]}'")
22
+ UI.message("Downloading root certificate from (#{ROOT_CERTIFICATE_URL}) to path '#{params[:certificate]}'")
23
23
  require 'open-uri'
24
24
  File.open(params[:certificate], "w") do |file|
25
25
  file.write(open(ROOT_CERTIFICATE_URL, "rb").read)
@@ -27,7 +27,7 @@ module Fastlane
27
27
  end
28
28
 
29
29
  # parsing mobileprovision file
30
- Helper.log.info("Parsing mobile provisioning profile from '#{params[:profile]}'")
30
+ UI.message("Parsing mobile provisioning profile from '#{params[:profile]}'")
31
31
  profile = File.read(params[:profile])
32
32
  p7 = OpenSSL::PKCS7.new(profile)
33
33
  store = OpenSSL::X509::Store.new
@@ -41,24 +41,24 @@ module Fastlane
41
41
  configuration = params[:build_configuration]
42
42
 
43
43
  # manipulate project file
44
- Helper.log.info("Going to update project '#{folder}' with UUID".green)
44
+ UI.success("Going to update project '#{folder}' with UUID")
45
45
  require 'xcodeproj'
46
46
 
47
47
  project = Xcodeproj::Project.open(folder)
48
48
  project.targets.each do |target|
49
49
  if !target_filter || target.product_name.match(target_filter) || (target.respond_to?(:product_type) && target.product_type.match(target_filter))
50
- Helper.log.info "Updating target #{target.product_name}...".green
50
+ UI.success("Updating target #{target.product_name}...")
51
51
  else
52
- Helper.log.info "Skipping target #{target.product_name} as it doesn't match the filter '#{target_filter}'".yellow
52
+ UI.important("Skipping target #{target.product_name} as it doesn't match the filter '#{target_filter}'")
53
53
  next
54
54
  end
55
55
 
56
56
  target.build_configuration_list.build_configurations.each do |build_configuration|
57
57
  config_name = build_configuration.name
58
58
  if !configuration || config_name.match(configuration)
59
- Helper.log.info "Updating configuration #{config_name}...".green
59
+ UI.success("Updating configuration #{config_name}...")
60
60
  else
61
- Helper.log.info "Skipping configuration #{config_name} as it doesn't match the filter '#{configuration}'".yellow
61
+ UI.important("Skipping configuration #{config_name} as it doesn't match the filter '#{configuration}'")
62
62
  next
63
63
  end
64
64
 
@@ -69,7 +69,7 @@ module Fastlane
69
69
  project.save
70
70
 
71
71
  # complete
72
- Helper.log.info("Successfully updated project settings in'#{params[:xcodeproj]}'".green)
72
+ UI.success("Successfully updated project settings in'#{params[:xcodeproj]}'")
73
73
  end
74
74
 
75
75
  def self.description
@@ -9,12 +9,12 @@ module Fastlane
9
9
  path = File.join(path, "project.pbxproj")
10
10
  raise "Could not find path to project config '#{path}'. Pass the path to your project (not workspace)!".red unless File.exist?(path)
11
11
 
12
- Helper.log.info("Updating development team (#{params[:teamid]}) for the given project '#{path}'")
12
+ UI.message("Updating development team (#{params[:teamid]}) for the given project '#{path}'")
13
13
 
14
14
  p = File.read(path)
15
15
  File.write(path, p.gsub(/DevelopmentTeam = .*;/, "DevelopmentTeam = #{params[:teamid]};"))
16
16
 
17
- Helper.log.info("Successfully updated project settings to use Developer Team ID '#{params[:teamid]}'".green)
17
+ UI.success("Successfully updated project settings to use Developer Team ID '#{params[:teamid]}'")
18
18
  end
19
19
 
20
20
  def self.description
@@ -0,0 +1,104 @@
1
+ module Fastlane
2
+ module Actions
3
+ class UploadSymbolsToCrashlyticsAction < Action
4
+ def self.run(params)
5
+ params[:binary_path] ||= (Dir["/Applications/Fabric.app/**/upload-symbols"] + Dir["./Pods/**/upload-symbols"]).last
6
+ UI.user_error!("Please provide a path to the binary using binary_path:") unless params[:binary_path]
7
+
8
+ unless params[:api_token].to_s.length > 0
9
+ Dir["./**/Info.plist"].each do |current|
10
+ result = Actions::GetInfoPlistValueAction.run(path: current, key: "Fabric")
11
+ next unless result
12
+ params[:api_token] ||= result["APIKey"]
13
+ end
14
+ end
15
+ UI.user_error!("Please provide an api_token using api_token:") unless params[:api_token]
16
+
17
+ dsym_paths = []
18
+ dsym_paths << params[:dsym_path]
19
+ dsym_paths += Actions.lane_context[SharedValues::DSYM_PATHS] if Actions.lane_context[SharedValues::DSYM_PATHS]
20
+
21
+ UI.error("Couldn't find any dSYMs, please pass them using the dsym_path option") if dsym_paths.count == 0
22
+
23
+ dsym_paths.each do |current_path|
24
+ command = []
25
+ command << File.expand_path(params[:binary_path])
26
+ command << "-a #{params[:api_token]}"
27
+ command << "-p #{params[:platform]}"
28
+ command << File.expand_path(current_path)
29
+ Actions.sh(command.join(" "))
30
+ end
31
+
32
+ UI.success("Successfully uploaded dSYM files to Crashlytics 💯")
33
+ end
34
+
35
+ #####################################################
36
+ # @!group Documentation
37
+ #####################################################
38
+
39
+ def self.description
40
+ "Upload dSYM symbolication files to Crashlytics"
41
+ end
42
+
43
+ def self.details
44
+ [
45
+ "This action allows you to upload symbolication files to Crashlytics.",
46
+ "It's extra useful if you use it to download the latest dSYM files from Apple when you",
47
+ "use Bitcode"
48
+ ].join(" ")
49
+ end
50
+
51
+ def self.available_options
52
+ [
53
+ FastlaneCore::ConfigItem.new(key: :dsym_path,
54
+ env_name: "FL_UPLOAD_SYMBOLS_TO_CRASHLYTICS_DSYM_PATH",
55
+ description: "Path to the DSYM file or zip to upload",
56
+ default_value: ENV[SharedValues::DSYM_OUTPUT_PATH.to_s] || (Dir["./**/*.dSYM"] + Dir["./**/*.dSYM.zip"]).first,
57
+ optional: true,
58
+ verify_block: proc do |value|
59
+ UI.user_error!("Couldn't find file at path '#{File.expand_path(value)}'") unless File.exist?(value)
60
+ UI.user_error!("Symbolication file needs to be dSYM or zip") unless value.end_with?("dSYM.zip", ".dSYM")
61
+ end),
62
+ FastlaneCore::ConfigItem.new(key: :api_token,
63
+ env_name: "CRASHLYTICS_API_TOKEN",
64
+ optional: true,
65
+ description: "Crashlytics Beta API Token",
66
+ verify_block: proc do |value|
67
+ UI.user_error!("No API token for Crashlytics given, pass using `api_token: 'token'`") if value.to_s.length == 0
68
+ end),
69
+ FastlaneCore::ConfigItem.new(key: :binary_path,
70
+ env_name: "FL_UPLOAD_SYMBOLS_TO_CRASHLYTICS_BINARY_PATH",
71
+ description: "The path to the upload-symbols file",
72
+ optional: true,
73
+ verify_block: proc do |value|
74
+ UI.user_error!("Couldn't find file at path '#{value}'") unless File.exist?(value)
75
+ end),
76
+ FastlaneCore::ConfigItem.new(key: :platform,
77
+ env_name: "FL_UPLOAD_SYMBOLS_TO_CRASHLYTICS_PLATFORM",
78
+ description: "The platform of the app (ios, tvos, mac)",
79
+ default_value: "ios",
80
+ verify_block: proc do |value|
81
+ available = ['ios', 'tvos', 'mac']
82
+ UI.user_error!("Invalid platform '#{value}', must be #{available.join(', ')}") unless available.include?(value)
83
+ end)
84
+ ]
85
+ end
86
+
87
+ def self.output
88
+ nil
89
+ end
90
+
91
+ def self.return_value
92
+ nil
93
+ end
94
+
95
+ def self.authors
96
+ ["KrauseFx"]
97
+ end
98
+
99
+ def self.is_supported?(platform)
100
+ platform == :ios
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,119 @@
1
+ module Fastlane
2
+ module Actions
3
+ class UploadSymbolsToSentryAction < Action
4
+ def self.run(params)
5
+ require 'rest-client'
6
+
7
+ # Params - API
8
+ host = params[:api_host]
9
+ api_key = params[:api_key]
10
+ org = params[:org_slug]
11
+ project = params[:project_slug]
12
+
13
+ # Params - dSYM
14
+ dsym_path = params[:dsym_path]
15
+ dsym_paths = params[:dsym_paths] || []
16
+
17
+ # Url to post dSYMs to
18
+ url = "#{host}/projects/#{org}/#{project}/files/dsyms/"
19
+ resource = RestClient::Resource.new( url, api_key, '' )
20
+
21
+ UI.message "Will upload dSYM(s) to #{url}"
22
+
23
+ # Upload dsym(s)
24
+ dsym_paths += [dsym_path]
25
+ uploaded_paths = dsym_paths.compact.map do |dsym|
26
+ upload_dsym(resource, dsym)
27
+ end
28
+
29
+ # Return uplaoded dSYM paths
30
+ uploaded_paths
31
+ end
32
+
33
+ def self.upload_dsym(resource, dsym)
34
+ UI.message "Uploading... #{dsym}"
35
+ resource.post(file: File.new(dsym, 'rb')) unless Helper.test?
36
+ UI.success 'dSYM successfully uploaded to Sentry!'
37
+
38
+ dsym
39
+ rescue
40
+ UI.user_error! 'Error while trying to upload dSYM to Sentry'
41
+ end
42
+
43
+ #####################################################
44
+ # @!group Documentation
45
+ #####################################################
46
+
47
+ def self.description
48
+ "Upload dSYM symbolication files to Sentry"
49
+ end
50
+
51
+ def self.details
52
+ [
53
+ "This action allows you to upload symbolication files to Sentry.",
54
+ "It's extra useful if you use it to download the latest dSYM files from Apple when you",
55
+ "use Bitcode"
56
+ ].join(" ")
57
+ end
58
+
59
+ def self.available_options
60
+ [
61
+ FastlaneCore::ConfigItem.new(key: :api_host,
62
+ env_name: "SENTRY_HOST",
63
+ description: "API host url for Sentry",
64
+ is_string: true,
65
+ default_value: "https://app.getsentry.com/api/0",
66
+ optional: true
67
+ ),
68
+ FastlaneCore::ConfigItem.new(key: :api_key,
69
+ env_name: "SENTRY_API_KEY",
70
+ description: "API Key for Sentry",
71
+ verify_block: proc do |value|
72
+ raise "No API token for SentryAction given, pass using `api_key: 'key'`".red unless value and !value.empty?
73
+ end),
74
+ FastlaneCore::ConfigItem.new(key: :org_slug,
75
+ env_name: "SENTRY_ORG_SLUG",
76
+ description: "Organization slug for Sentry project",
77
+ verify_block: proc do |value|
78
+ raise "No organization slug for SentryAction given, pass using `org_slug: 'org'`".red unless value and !value.empty?
79
+ end),
80
+ FastlaneCore::ConfigItem.new(key: :project_slug,
81
+ env_name: "SENTRY_PROJECT_SLUG",
82
+ description: "Prgoject slug for Sentry",
83
+ verify_block: proc do |value|
84
+ raise "No project slug for SentryAction given, pass using `project_slug: 'project'`".red unless value and !value.empty?
85
+ end),
86
+ FastlaneCore::ConfigItem.new(key: :dsym_path,
87
+ env_name: "SENTRY_DSYM_PATH",
88
+ description: "Path to your symbols file. For iOS and Mac provide path to app.dSYM.zip",
89
+ default_value: Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH],
90
+ optional: true,
91
+ verify_block: proc do |value|
92
+ # validation is done in the action
93
+ end),
94
+ FastlaneCore::ConfigItem.new(key: :dsym_paths,
95
+ env_name: "SENTRY_DSYM_PATHS",
96
+ description: "Path to an array of your symbols file. For iOS and Mac provide path to app.dSYM.zip",
97
+ default_value: Actions.lane_context[SharedValues::DSYM_PATHS],
98
+ is_string: false,
99
+ optional: true,
100
+ verify_block: proc do |value|
101
+ # validation is done in the action
102
+ end)
103
+ ]
104
+ end
105
+
106
+ def self.return_value
107
+ "The uploaded dSYM path(s)"
108
+ end
109
+
110
+ def self.authors
111
+ ["joshdholtz"]
112
+ end
113
+
114
+ def self.is_supported?(platform)
115
+ platform == :ios
116
+ end
117
+ end
118
+ end
119
+ end
@@ -2,13 +2,13 @@ module Fastlane
2
2
  module Actions
3
3
  class VerifyPodKeysAction < Action
4
4
  def self.run(params)
5
- Helper.log.info "Validating CocoaPods Keys"
5
+ UI.message("Validating CocoaPods Keys")
6
6
 
7
7
  options = plugin_options
8
8
  target = options["target"] || ""
9
9
 
10
10
  options["keys"].each do |key|
11
- Helper.log.info " - #{key}"
11
+ UI.message(" - #{key}")
12
12
  validate(key, target)
13
13
  end
14
14
  end
@@ -5,11 +5,11 @@ module Fastlane
5
5
 
6
6
  class VerifyXcodeAction < Action
7
7
  def self.run(params)
8
- Helper.log.info "Verifying your Xcode installation at path '#{params[:xcode_path]}'...".green
8
+ UI.success("Verifying your Xcode installation at path '#{params[:xcode_path]}'...")
9
9
 
10
10
  # Check 1/2
11
11
 
12
- Helper.log.info "Verifying Xcode was signed by Apple Inc.".green
12
+ UI.success("Verifying Xcode was signed by Apple Inc.")
13
13
  command = "codesign --display --verbose=4 '#{params[:xcode_path]}'"
14
14
 
15
15
  must_includes = [
@@ -22,12 +22,12 @@ module Fastlane
22
22
 
23
23
  verify(command: command, must_includes: must_includes, params: params)
24
24
 
25
- Helper.log.info "Successfully verified the code signature".green
25
+ UI.success("Successfully verified the code signature")
26
26
 
27
27
  # Check 2/2
28
28
  # More information https://developer.apple.com/news/?id=09222015a
29
- Helper.log.info "Verifying Xcode using GateKeeper..."
30
- Helper.log.info "This will take up to a few minutes, now is a great time to go for a coffee ☕...".green
29
+ UI.message("Verifying Xcode using GateKeeper...")
30
+ UI.success("This will take up to a few minutes, now is a great time to go for a coffee ☕...")
31
31
 
32
32
  command = "/usr/sbin/spctl --assess --verbose '#{params[:xcode_path]}'"
33
33
  must_includes = ['accepted']
@@ -35,7 +35,7 @@ module Fastlane
35
35
  output = verify(command: command, must_includes: must_includes, params: params)
36
36
 
37
37
  if output.include?("source=Mac App Store") or output.include?("source=Apple") or output.include?("source=Apple System")
38
- Helper.log.info "Successfully verified Xcode installation at path '#{params[:xcode_path]}' 🎧".green
38
+ UI.success("Successfully verified Xcode installation at path '#{params[:xcode_path]}' 🎧")
39
39
  else
40
40
  show_and_raise_error("Invalid Download Source of Xcode: #{output}", params[:xcode_path])
41
41
  end
@@ -60,10 +60,10 @@ module Fastlane
60
60
  end
61
61
 
62
62
  def self.show_and_raise_error(error, xcode_path)
63
- Helper.log.fatal "Attention: Your Xcode Installation might be hacked.".red
64
- Helper.log.fatal "This might be a false alarm, if so, please submit an issue on GitHub".red
65
- Helper.log.fatal "The following information couldn't be found:".red
66
- Helper.log.fatal error.yellow
63
+ UI.error("Attention: Your Xcode Installation might be hacked.")
64
+ UI.error("This might be a false alarm, if so, please submit an issue on GitHub")
65
+ UI.error("The following information couldn't be found:")
66
+ UI.error(error)
67
67
  raise "The Xcode installation at path '#{xcode_path}' might be compromised."
68
68
  end
69
69
 
@@ -14,14 +14,14 @@ module Fastlane
14
14
  installer = XcodeInstall::Installer.new
15
15
 
16
16
  if installer.installed?(params[:version])
17
- Helper.log.info "Xcode #{params[:version]} is already installed ✨".green
17
+ UI.success("Xcode #{params[:version]} is already installed ✨")
18
18
  else
19
19
  installer.install_version(params[:version], true, true, true, true)
20
20
  end
21
21
 
22
22
  xcode = installer.installed_versions.find { |x| x.version == params[:version] }
23
23
  raise "Could not find Xcode with version '#{params[:version]}'" unless xcode
24
- Helper.log.info "Using Xcode #{params[:version]} on path '#{xcode.path}'"
24
+ UI.message("Using Xcode #{params[:version]} on path '#{xcode.path}'")
25
25
  xcode.approve_license
26
26
 
27
27
  ENV["DEVELOPER_DIR"] = File.join(xcode.path, "/Contents/Developer")