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
@@ -3,7 +3,7 @@ module Fastlane
3
3
  class NotifyAction < Action
4
4
  def self.run(params)
5
5
  require 'terminal-notifier'
6
- Helper.log.warn "It's recommended to use the new 'notification' method instead of 'notify'".yellow
6
+ UI.important("It's recommended to use the new 'notification' method instead of 'notify'")
7
7
 
8
8
  text = params.join(' ')
9
9
  TerminalNotifier.notify(text, title: 'fastlane')
@@ -16,7 +16,7 @@ module Fastlane
16
16
  raise "Could not find json compilation database at path '#{compile_commands}'".red unless File.exist?(compile_commands)
17
17
 
18
18
  if params[:select_reqex]
19
- Helper.log.warn "'select_reqex' paramter is deprecated. Please use 'select_regex' instead.".yellow
19
+ UI.important("'select_reqex' paramter is deprecated. Please use 'select_regex' instead.")
20
20
  select_regex = params[:select_reqex]
21
21
  end
22
22
 
@@ -46,7 +46,7 @@ module Fastlane
46
46
  oclint_args << "-list-enabled-rules" if params[:list_enabled_rules]
47
47
 
48
48
  if params[:rc]
49
- Helper.log.warn "It's recommended to use 'thresholds' instead of deprecated 'rc' parameter".yellow
49
+ UI.important("It's recommended to use 'thresholds' instead of deprecated 'rc' parameter")
50
50
  oclint_args << "-rc=#{params[:rc]}" if params[:rc] # Deprecated
51
51
  end
52
52
 
@@ -11,7 +11,7 @@ module Fastlane
11
11
  require 'uri'
12
12
  require 'base64'
13
13
 
14
- Helper.log.info "Parameter App name: #{params[:app_name]}"
14
+ UI.message("Parameter App name: #{params[:app_name]}")
15
15
  auth_token = params[:auth_token]
16
16
  app_name = params[:app_name]
17
17
  apns_p12_password = params[:apns_p12_password]
@@ -70,7 +70,7 @@ module Fastlane
70
70
  description: "OneSignal Authorization Key",
71
71
  verify_block: proc do |value|
72
72
  unless value.to_s.length > 0
73
- Helper.log.fatal "Please add 'ENV[\"ONE_SIGNAL_AUTH_KEY\"] = \"your token\"' to your Fastfile's `before_all` section.".red
73
+ UI.error("Please add 'ENV[\"ONE_SIGNAL_AUTH_KEY\"] = \"your token\"' to your Fastfile's `before_all` section.")
74
74
  raise 'No ONE_SIGNAL_AUTH_KEY given.'.red
75
75
  end
76
76
  end),
@@ -80,7 +80,7 @@ module Fastlane
80
80
  description: "OneSignal App Name",
81
81
  verify_block: proc do |value|
82
82
  unless value.to_s.length > 0
83
- Helper.log.fatal "Please add 'ENV[\"ONE_SIGNAL_APP_NAME\"] = \"Your app name\"' to your Fastfile's `before_all` section.".red
83
+ UI.error("Please add 'ENV[\"ONE_SIGNAL_APP_NAME\"] = \"Your app name\"' to your Fastfile's `before_all` section.")
84
84
  raise 'No ONE_SIGNAL_APP_NAME given.'.red
85
85
  end
86
86
  end),
@@ -3,7 +3,7 @@ module Fastlane
3
3
  class OptOutUsageAction < Action
4
4
  def self.run(params)
5
5
  ENV['FASTLANE_OPT_OUT_USAGE'] = "YES"
6
- Helper.log.info "Disabled upload of used actions"
6
+ UI.message("Disabled upload of used actions")
7
7
  end
8
8
 
9
9
  def self.description
@@ -31,7 +31,7 @@ module Fastlane
31
31
 
32
32
  def self.details
33
33
  [
34
- "More details can be found on https://github.com/fastlane/pilot",
34
+ "More details can be found on https://github.com/fastlane/fastlane/tree/master/pilot",
35
35
  "This integration will only do the TestFlight upload"
36
36
  ].join("\n")
37
37
  end
@@ -22,8 +22,8 @@ module Fastlane
22
22
  command << " --allow-warnings"
23
23
  end
24
24
 
25
- result = Actions.sh("#{command}")
26
- Helper.log.info "Successfully pushed Podspec ⬆️ ".green
25
+ result = Actions.sh(command.to_s)
26
+ UI.success("Successfully pushed Podspec ⬆️ ")
27
27
  return result
28
28
  end
29
29
 
@@ -33,7 +33,7 @@ module Fastlane
33
33
  def details
34
34
  [
35
35
  'For more information about produce, visit its GitHub page:',
36
- 'https://github.com/fastlane/produce'
36
+ 'https://github.com/fastlane/fastlane/tree/master/produce'
37
37
  ].join(' ')
38
38
  end
39
39
 
@@ -3,21 +3,21 @@ module Fastlane
3
3
  class PromptAction < Action
4
4
  def self.run(params)
5
5
  params[:text] += " (y/n)" if params[:boolean]
6
- Helper.log.info params[:text]
6
+ UI.message(params[:text])
7
7
 
8
8
  return params[:ci_input] if Helper.is_ci?
9
9
 
10
10
  if params[:multi_line_end_keyword]
11
11
  # Multi line
12
12
  end_tag = params[:multi_line_end_keyword]
13
- Helper.log.info "Submit inputs using \"#{params[:multi_line_end_keyword]}\"".yellow
13
+ UI.important("Submit inputs using \"#{params[:multi_line_end_keyword]}\"")
14
14
  user_input = STDIN.gets(end_tag).chomp.gsub(end_tag, "").strip
15
15
  else
16
16
  # Standard one line input
17
17
  user_input = STDIN.gets.chomp.strip while (user_input || "").length == 0
18
18
  end
19
19
 
20
- user_input = (user_input.downcase == 'y') if params[:boolean]
20
+ user_input = user_input.casecmp('y').zero? if params[:boolean]
21
21
  return user_input
22
22
  end
23
23
 
@@ -9,7 +9,7 @@ module Fastlane
9
9
  ]
10
10
 
11
11
  result = Actions.sh(command.join(' '))
12
- Helper.log.info 'Tags pushed to remote'.green
12
+ UI.success('Tags pushed to remote')
13
13
  result
14
14
  end
15
15
 
@@ -26,7 +26,7 @@ module Fastlane
26
26
  return command.join(' ') if Helper.is_test?
27
27
 
28
28
  Actions.sh(command.join(' '))
29
- Helper.log.info 'Successfully pushed to remote.'
29
+ UI.message('Successfully pushed to remote.')
30
30
  end
31
31
 
32
32
  def self.description
@@ -13,7 +13,7 @@ module Fastlane
13
13
  require 'cocoapods-core'
14
14
  spec = Pod::Spec.from_file(path).to_hash
15
15
 
16
- Helper.log.info "Reading podspec from file #{path}".green
16
+ UI.success("Reading podspec from file #{path}")
17
17
 
18
18
  Actions.lane_context[SharedValues::READ_PODSPEC_JSON] = spec
19
19
  return spec
@@ -4,7 +4,7 @@ module Fastlane
4
4
  def self.run(params)
5
5
  require 'xcodeproj'
6
6
 
7
- Helper.log.info "Recreate schemes for project: #{params[:project]}"
7
+ UI.message("Recreate schemes for project: #{params[:project]}")
8
8
 
9
9
  project = Xcodeproj::Project.open(params[:project])
10
10
  project.recreate_user_schemes
@@ -31,7 +31,7 @@ module Fastlane
31
31
  devices_file = CSV.read(File.expand_path(File.join(devices_file)), col_sep: "\t")
32
32
  raise 'Please provide a file according to the Apple Sample UDID file (https://devimages.apple.com.edgekey.net/downloads/devices/Multiple-Upload-Samples.zip)'.red unless devices_file.first == ['Device ID', 'Device Name']
33
33
 
34
- Helper.log.info "Fetching list of currently registered devices..."
34
+ UI.message("Fetching list of currently registered devices...")
35
35
  existing_devices = Spaceship::Device.all
36
36
 
37
37
  device_objs = devices_file.drop(1).map do |device|
@@ -46,7 +46,7 @@ module Fastlane
46
46
  raise 'You must pass either a valid `devices` or `devices_file`. Please check the readme.'.red
47
47
  end
48
48
 
49
- Helper.log.info "Successfully registered new devices.".green
49
+ UI.success("Successfully registered new devices.")
50
50
  return device_objs
51
51
  end
52
52
 
@@ -27,13 +27,13 @@ module Fastlane
27
27
 
28
28
  Actions.sh(clean_command) unless params[:skip_clean]
29
29
 
30
- Helper.log.info 'Git repo was reset and cleaned back to a pristine state.'.green
30
+ UI.success('Git repo was reset and cleaned back to a pristine state.')
31
31
  else
32
32
  paths.each do |path|
33
- Helper.log.warn("Couldn't find file at path '#{path}'") unless File.exist?(path)
33
+ UI.important("Couldn't find file at path '#{path}'") unless File.exist?(path)
34
34
  Actions.sh("git checkout -- '#{path}'")
35
35
  end
36
- Helper.log.info "Git cleaned up #{paths.count} files.".green
36
+ UI.success("Git cleaned up #{paths.count} files.")
37
37
  end
38
38
  else
39
39
  raise 'This is a destructive and potentially dangerous action. To protect from data loss, please add the `ensure_git_status_clean` action to the beginning of your lane, or if you\'re absolutely sure of what you\'re doing then call this action with the :force option.'.red
@@ -6,8 +6,8 @@ module Fastlane
6
6
  require 'sigh'
7
7
 
8
8
  # try to resign the ipa
9
- if Sigh::Resign.resign(params[:ipa], params[:signing_identity], params[:provisioning_profile], params[:entitlements], params[:version])
10
- Helper.log.info 'Successfully re-signed .ipa 🔏.'.green
9
+ if Sigh::Resign.resign(params[:ipa], params[:signing_identity], params[:provisioning_profile], params[:entitlements], params[:version], params[:display_name])
10
+ UI.success('Successfully re-signed .ipa 🔏.')
11
11
  else
12
12
  raise 'Failed to re-sign .ipa'.red
13
13
  end
@@ -67,6 +67,11 @@ module Fastlane
67
67
  env_name: "FL_RESIGN_VERSION",
68
68
  description: "Version number to force resigned ipa to use",
69
69
  is_string: true,
70
+ optional: true),
71
+ FastlaneCore::ConfigItem.new(key: :display_name,
72
+ env_name: "FL_DISPLAY_NAME",
73
+ description: "Display name to force resigned ipa to use",
74
+ is_string: true,
70
75
  optional: true)
71
76
  ]
72
77
  end
@@ -7,7 +7,7 @@ module Fastlane
7
7
  raise "Could not find file '#{backup_path}'" unless File.exist? backup_path
8
8
  FileUtils.cp(backup_path, path, {preserve: true})
9
9
  FileUtils.rm(backup_path)
10
- Helper.log.info "Successfully restored backup 📤"
10
+ UI.message("Successfully restored backup 📤")
11
11
  end
12
12
 
13
13
  def self.description
@@ -0,0 +1,64 @@
1
+ module Fastlane
2
+ module Actions
3
+ class RocketAction < Action
4
+ def self.run(params)
5
+ puts "
6
+ ____
7
+ / \\
8
+ | |
9
+ | |
10
+ | |
11
+ \\____/
12
+ | |
13
+ | |
14
+ | |
15
+ |____|
16
+ {| |}
17
+ | |
18
+ | |
19
+ | F |
20
+ | A |
21
+ | S |
22
+ | T |
23
+ | L |
24
+ | A |
25
+ /| N |\\
26
+ || E ||
27
+ || ||
28
+ \\|____|/
29
+ /_\\/_\\
30
+ ######
31
+ ########
32
+ ######
33
+ ####
34
+ ####
35
+ ##
36
+ ##
37
+ ##
38
+ ##
39
+ "
40
+ end
41
+
42
+ #####################################################
43
+ # @!group Documentation
44
+ #####################################################
45
+
46
+ def self.description
47
+ "Outputs ascii-art for a rocket 🚀"
48
+ end
49
+
50
+ def self.available_options
51
+ [
52
+ ]
53
+ end
54
+
55
+ def self.authors
56
+ ["JaviSoto", "radex"]
57
+ end
58
+
59
+ def self.is_supported?(platform)
60
+ true
61
+ end
62
+ end
63
+ end
64
+ end
@@ -26,7 +26,6 @@ module Fastlane
26
26
 
27
27
  class S3Action < Action
28
28
  def self.run(config)
29
- require 'shenzhen'
30
29
  # Calling fetch on config so that default values will be used
31
30
  params = {}
32
31
  params[:ipa] = config[:ipa]
@@ -45,9 +44,6 @@ module Fastlane
45
44
  params[:version_template_path] = config[:version_template_path]
46
45
  params[:version_file_name] = config[:version_file_name]
47
46
 
48
- # Maps nice developer build parameters to Shenzhen args
49
- build_args = params_to_build_args(params)
50
-
51
47
  # Pulling parameters for other uses
52
48
  s3_region = params[:region]
53
49
  s3_subdomain = params[:region] ? "s3-#{params[:region]}" : "s3"
@@ -69,21 +65,16 @@ module Fastlane
69
65
  version_template_path = params[:version_template_path]
70
66
  version_file_name = params[:version_file_name]
71
67
 
72
- if Helper.is_test?
73
- return build_args
74
- end
68
+ s3_client = self.s3_client(s3_access_key, s3_secret_access_key, s3_region)
69
+ bucket = s3_client.buckets[s3_bucket]
75
70
 
76
- # Joins args into space delimited string
77
- build_args = build_args.join(' ')
71
+ url_part = self.expand_path_with_substitutions_from_ipa_plist(ipa_file, s3_path)
78
72
 
79
- command = "krausefx-ipa distribute:s3 #{build_args}"
80
- Helper.log.debug command
81
- Actions.sh command
73
+ ipa_file_basename = File.basename(ipa_file)
74
+ ipa_file_name = "#{url_part}#{ipa_file_basename}"
75
+ ipa_file_data = File.open(ipa_file, 'rb')
82
76
 
83
- # Gets URL for IPA file
84
- url_part = expand_path_with_substitutions_from_ipa_plist( ipa_file, s3_path )
85
- ipa_file_name = File.basename(ipa_file)
86
- ipa_url = "https://#{s3_subdomain}.amazonaws.com/#{s3_bucket}/#{url_part}#{ipa_file_name}"
77
+ ipa_url = self.upload_file(bucket, ipa_file_name, ipa_file_data)
87
78
 
88
79
  # Setting action and environment variables
89
80
  Actions.lane_context[SharedValues::S3_IPA_OUTPUT_PATH] = ipa_url
@@ -94,14 +85,11 @@ module Fastlane
94
85
  dsym_file_name = "#{url_part}#{dsym_file_basename}"
95
86
  dsym_file_data = File.open(dsym_file, 'rb')
96
87
 
97
- upload_dsym(
98
- s3_access_key,
99
- s3_secret_access_key,
100
- s3_bucket,
101
- s3_region,
102
- dsym_file_name,
103
- dsym_file_data
104
- )
88
+ dsym_url = self.upload_file(bucket, dsym_file_name, dsym_file_data)
89
+
90
+ # Setting action and environment variables
91
+ Actions.lane_context[SharedValues::S3_DSYM_OUTPUT_PATH] = dsym_url
92
+ ENV[SharedValues::S3_DSYM_OUTPUT_PATH.to_s] = dsym_url
105
93
 
106
94
  end
107
95
 
@@ -187,82 +175,26 @@ module Fastlane
187
175
  #
188
176
  #####################################
189
177
 
190
- upload_plist_and_html_to_s3(
191
- s3_access_key,
192
- s3_secret_access_key,
193
- s3_bucket,
194
- s3_region,
195
- plist_file_name,
196
- plist_render,
197
- html_file_name,
198
- html_render,
199
- version_file_name,
200
- version_render
201
- )
202
-
203
- return true
204
- end
205
-
206
- def self.params_to_build_args(params)
207
- # Remove nil value params unless :clean or :archive
208
- params = params.delete_if { |k, v| (k != :clean && k != :archive ) && v.nil? }
209
-
210
- # Maps nice developer param names to Shenzhen's `ipa build` arguments
211
- params.collect do |k, v|
212
- v ||= ''
213
- if S3_ARGS_MAP[k]
214
- value = (v.to_s.length > 0 ? "\"#{v}\"" : "")
215
- "#{S3_ARGS_MAP[k]} #{value}".strip
216
- end
217
- end.compact
218
- end
219
-
220
- def self.upload_plist_and_html_to_s3(s3_access_key, s3_secret_access_key, s3_bucket, s3_region, plist_file_name, plist_render, html_file_name, html_render, version_file_name, version_render)
221
- Actions.verify_gem!('aws-sdk')
222
- require 'aws-sdk'
223
- if s3_region
224
- s3_client = AWS::S3.new(
225
- access_key_id: s3_access_key,
226
- secret_access_key: s3_secret_access_key,
227
- region: s3_region
228
- )
229
- else
230
- s3_client = AWS::S3.new(
231
- access_key_id: s3_access_key,
232
- secret_access_key: s3_secret_access_key
233
- )
234
- end
235
-
236
- bucket = s3_client.buckets[s3_bucket]
237
-
238
- plist_obj = bucket.objects.create(plist_file_name, plist_render.to_s, acl: :public_read)
239
- html_obj = bucket.objects.create(html_file_name, html_render.to_s, acl: :public_read)
240
- version_obj = bucket.objects.create(version_file_name, version_render.to_s, acl: :public_read)
241
-
242
- # When you enable versioning on a S3 bucket,
243
- # writing to an object will create an object version
244
- # instead of replacing the existing object.
245
- # http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/ObjectVersion.html
246
- if plist_obj.kind_of? AWS::S3::ObjectVersion
247
- plist_obj = plist_obj.object
248
- html_obj = html_obj.object
249
- version_obj = version_obj.object
250
- end
178
+ plist_url = self.upload_file(bucket, plist_file_name, plist_render)
179
+ html_url = self.upload_file(bucket, html_file_name, html_render)
180
+ version_url = self.upload_file(bucket, version_file_name, version_render)
251
181
 
252
182
  # Setting action and environment variables
253
- Actions.lane_context[SharedValues::S3_PLIST_OUTPUT_PATH] = plist_obj.public_url.to_s
254
- ENV[SharedValues::S3_PLIST_OUTPUT_PATH.to_s] = plist_obj.public_url.to_s
183
+ Actions.lane_context[SharedValues::S3_PLIST_OUTPUT_PATH] = plist_url
184
+ ENV[SharedValues::S3_PLIST_OUTPUT_PATH.to_s] = plist_url
185
+
186
+ Actions.lane_context[SharedValues::S3_HTML_OUTPUT_PATH] = html_url
187
+ ENV[SharedValues::S3_HTML_OUTPUT_PATH.to_s] = html_url
255
188
 
256
- Actions.lane_context[SharedValues::S3_HTML_OUTPUT_PATH] = html_obj.public_url.to_s
257
- ENV[SharedValues::S3_HTML_OUTPUT_PATH.to_s] = html_obj.public_url.to_s
189
+ Actions.lane_context[SharedValues::S3_VERSION_OUTPUT_PATH] = version_url
190
+ ENV[SharedValues::S3_VERSION_OUTPUT_PATH.to_s] = version_url
258
191
 
259
- Actions.lane_context[SharedValues::S3_VERSION_OUTPUT_PATH] = version_obj.public_url.to_s
260
- ENV[SharedValues::S3_VERSION_OUTPUT_PATH.to_s] = version_obj.public_url.to_s
192
+ UI.success("Successfully uploaded ipa file to '#{Actions.lane_context[SharedValues::S3_IPA_OUTPUT_PATH]}'")
261
193
 
262
- Helper.log.info "Successfully uploaded ipa file to '#{Actions.lane_context[SharedValues::S3_IPA_OUTPUT_PATH]}'".green
194
+ return true
263
195
  end
264
196
 
265
- def self.upload_dsym(s3_access_key, s3_secret_access_key, s3_bucket, s3_region, dsym_file_name, dsym_file_data)
197
+ def self.s3_client(s3_access_key, s3_secret_access_key, s3_region)
266
198
  Actions.verify_gem!('aws-sdk')
267
199
  require 'aws-sdk'
268
200
  if s3_region
@@ -277,22 +209,22 @@ module Fastlane
277
209
  secret_access_key: s3_secret_access_key
278
210
  )
279
211
  end
212
+ s3_client
213
+ end
280
214
 
281
- bucket = s3_client.buckets[s3_bucket]
282
-
283
- dsym_obj = bucket.objects.create(dsym_file_name, dsym_file_data, acl: :public_read)
215
+ def self.upload_file(bucket, file_name, file_data)
216
+ obj = bucket.objects.create(file_name, file_data, acl: :public_read)
284
217
 
285
218
  # When you enable versioning on a S3 bucket,
286
219
  # writing to an object will create an object version
287
220
  # instead of replacing the existing object.
288
221
  # http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/ObjectVersion.html
289
- if dsym_obj.kind_of? AWS::S3::ObjectVersion
290
- dsym_obj = dsym_obj.object
222
+ if obj.kind_of? AWS::S3::ObjectVersion
223
+ obj = obj.object
291
224
  end
292
225
 
293
- # Setting action and environment variables
294
- Actions.lane_context[SharedValues::S3_DSYM_OUTPUT_PATH] = dsym_obj.public_url.to_s
295
- ENV[SharedValues::S3_DSYM_OUTPUT_PATH.to_s] = dsym_obj.public_url.to_s
226
+ # Return public url
227
+ obj.public_url.to_s
296
228
  end
297
229
 
298
230
  #