fastlane 2.178.0 → 2.179.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +93 -80
  4. data/cert/lib/cert/options.rb +1 -0
  5. data/cert/lib/cert/runner.rb +4 -0
  6. data/deliver/lib/deliver/download_screenshots.rb +1 -2
  7. data/deliver/lib/deliver/options.rb +1 -0
  8. data/deliver/lib/deliver/runner.rb +4 -0
  9. data/deliver/lib/deliver/setup.rb +0 -1
  10. data/deliver/lib/deliver/upload_metadata.rb +2 -1
  11. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +5 -0
  12. data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +2 -2
  13. data/fastlane/lib/fastlane/actions/build_app.rb +4 -0
  14. data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +4 -0
  15. data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +2 -1
  16. data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +4 -0
  17. data/fastlane/lib/fastlane/actions/get_version_number.rb +17 -10
  18. data/fastlane/lib/fastlane/actions/git_branch.rb +4 -10
  19. data/fastlane/lib/fastlane/actions/git_tag_exists.rb +4 -0
  20. data/fastlane/lib/fastlane/actions/install_provisioning_profile.rb +4 -0
  21. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +1 -0
  22. data/fastlane/lib/fastlane/actions/match_nuke.rb +59 -0
  23. data/fastlane/lib/fastlane/actions/spaceship_logs.rb +1 -1
  24. data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +1 -2
  25. data/fastlane/lib/fastlane/helper/git_helper.rb +11 -7
  26. data/fastlane/lib/fastlane/plugins/plugin_fetcher.rb +1 -2
  27. data/fastlane/lib/fastlane/plugins/plugin_info_collector.rb +1 -2
  28. data/fastlane/lib/fastlane/plugins/plugin_manager.rb +1 -2
  29. data/fastlane/lib/fastlane/swift_fastlane_function.rb +4 -0
  30. data/fastlane/lib/fastlane/version.rb +1 -1
  31. data/fastlane/swift/Deliverfile.swift +1 -1
  32. data/fastlane/swift/DeliverfileProtocol.swift +3 -3
  33. data/fastlane/swift/Fastlane.swift +441 -294
  34. data/fastlane/swift/Gymfile.swift +1 -1
  35. data/fastlane/swift/GymfileProtocol.swift +1 -1
  36. data/fastlane/swift/Matchfile.swift +1 -1
  37. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  38. data/fastlane/swift/Precheckfile.swift +1 -1
  39. data/fastlane/swift/PrecheckfileProtocol.swift +3 -3
  40. data/fastlane/swift/Scanfile.swift +1 -1
  41. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  42. data/fastlane/swift/Screengrabfile.swift +1 -1
  43. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  44. data/fastlane/swift/Snapshotfile.swift +1 -1
  45. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  46. data/fastlane/swift/formatting/Brewfile.lock.json +11 -11
  47. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +5 -3
  48. data/fastlane_core/lib/fastlane_core/helper.rb +24 -1
  49. data/gym/lib/gym/generators/package_command_generator.rb +4 -0
  50. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +13 -8
  51. data/gym/lib/gym/runner.rb +11 -4
  52. data/match/lib/match/change_password.rb +3 -3
  53. data/match/lib/match/encryption/interface.rb +1 -1
  54. data/match/lib/match/encryption/openssl.rb +2 -2
  55. data/match/lib/match/module.rb +1 -0
  56. data/pilot/lib/pilot/manager.rb +4 -0
  57. data/pilot/lib/pilot/options.rb +1 -0
  58. data/precheck/lib/precheck/options.rb +1 -0
  59. data/precheck/lib/precheck/runner.rb +4 -0
  60. data/screengrab/lib/screengrab/android_environment.rb +6 -4
  61. data/screengrab/lib/screengrab/runner.rb +1 -1
  62. data/sigh/lib/sigh/options.rb +1 -0
  63. data/sigh/lib/sigh/runner.rb +4 -0
  64. metadata +19 -16
@@ -1,16 +1,10 @@
1
1
  module Fastlane
2
2
  module Actions
3
- module SharedValues
4
- GIT_BRANCH_ENV_VARS = %w(GIT_BRANCH BRANCH_NAME TRAVIS_BRANCH BITRISE_GIT_BRANCH CI_BUILD_REF_NAME CI_COMMIT_REF_NAME WERCKER_GIT_BRANCH BUILDKITE_BRANCH APPCENTER_BRANCH CIRCLE_BRANCH).reject do |branch|
5
- # Removing because tests break on CircleCI
6
- Helper.test? && branch == "CIRCLE_BRANCH"
7
- end.freeze
8
- end
9
-
10
3
  class GitBranchAction < Action
11
4
  def self.run(params)
12
- env_name = SharedValues::GIT_BRANCH_ENV_VARS.find { |env_var| FastlaneCore::Env.truthy?(env_var) }
13
- ENV.fetch(env_name.to_s) { `git symbolic-ref HEAD --short 2>/dev/null`.strip }
5
+ branch = Actions.git_branch
6
+ return "" if branch == "HEAD" # Backwards compatibility with the original (and documented) implementation
7
+ branch
14
8
  end
15
9
 
16
10
  #####################################################
@@ -22,7 +16,7 @@ module Fastlane
22
16
  end
23
17
 
24
18
  def self.details
25
- "If no branch could be found, this action will return an empty string"
19
+ "If no branch could be found, this action will return an empty string. This is a wrapper for the internal action Actions.git_branch"
26
20
  end
27
21
 
28
22
  def self.available_options
@@ -45,6 +45,10 @@ module Fastlane
45
45
  "Boolean value whether the tag exists or not"
46
46
  end
47
47
 
48
+ def self.return_type
49
+ :bool
50
+ end
51
+
48
52
  def self.output
49
53
  [
50
54
  ]
@@ -48,6 +48,10 @@ module Fastlane
48
48
  "The absolute path to the installed provisioning profile"
49
49
  end
50
50
 
51
+ def self.return_type
52
+ :string
53
+ end
54
+
51
55
  def self.example_code
52
56
  [
53
57
  'install_provisioning_profile(path: "profiles/profile.mobileprovision")'
@@ -70,6 +70,7 @@ module Fastlane
70
70
  short_option: "-u",
71
71
  env_name: "ITUNESCONNECT_USER",
72
72
  description: "Your Apple ID Username",
73
+ optional: true,
73
74
  default_value: user,
74
75
  default_value_dynamic: true),
75
76
  FastlaneCore::ConfigItem.new(key: :version,
@@ -0,0 +1,59 @@
1
+ module Fastlane
2
+ module Actions
3
+ class MatchNukeAction < Action
4
+ def self.run(params)
5
+ require 'match'
6
+
7
+ params.load_configuration_file("Matchfile")
8
+ params[:api_key] ||= Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY]
9
+
10
+ cert_type = Match.cert_type_sym(params[:type])
11
+ UI.important("Going to revoke your '#{cert_type}' certificate type and provisioning profiles")
12
+
13
+ Match::Nuke.new.run(params, type: cert_type)
14
+ end
15
+
16
+ #####################################################
17
+ # @!group Documentation
18
+ #####################################################
19
+
20
+ def self.description
21
+ "Easily nuke your certificate and provisioning profiles (via _match_)"
22
+ end
23
+
24
+ def self.details
25
+ [
26
+ "Use the match_nuke action to revoke your certificates and provisioning profiles.",
27
+ "Don't worry, apps that are already available in the App Store / TestFlight will still work.",
28
+ "Builds distributed via Ad Hoc or Enterprise will be disabled after nuking your account, so you'll have to re-upload a new build.",
29
+ "After clearing your account you'll start from a clean state, and you can run match to generate your certificates and profiles again.",
30
+ "More information: https://docs.fastlane.tools/actions/match/"
31
+ ].join("\n")
32
+ end
33
+
34
+ def self.available_options
35
+ require 'match'
36
+ Match::Options.available_options
37
+ end
38
+
39
+ def self.is_supported?(platform)
40
+ [:ios, :mac].include?(platform)
41
+ end
42
+
43
+ def self.example_code
44
+ [
45
+ 'match_nuke(type: "development")', # See all other options https://github.com/fastlane/fastlane/blob/master/match/lib/match/module.rb#L23
46
+ 'match_nuke(type: "development", api_key: app_store_connect_api_key)'
47
+ ]
48
+ end
49
+
50
+ def self.authors
51
+ ["crazymanish"]
52
+ end
53
+
54
+ def self.category
55
+ :code_signing
56
+ end
57
+ end
58
+ end
59
+ end
@@ -124,7 +124,7 @@ module Fastlane
124
124
  end
125
125
 
126
126
  def self.return_type
127
- :array
127
+ :array_of_strings
128
128
  end
129
129
 
130
130
  def self.author
@@ -21,9 +21,8 @@ module Fastlane
21
21
  # download certificate
22
22
  unless File.exist?(params[:certificate])
23
23
  UI.message("Downloading root certificate from (#{ROOT_CERTIFICATE_URL}) to path '#{params[:certificate]}'")
24
- require 'open-uri'
25
24
  File.open(params[:certificate], "w:ASCII-8BIT") do |file|
26
- file.write(open(ROOT_CERTIFICATE_URL, "rb").read)
25
+ file.write(FastlaneCore::Helper.open_uri(ROOT_CERTIFICATE_URL, "rb").read)
27
26
  end
28
27
  end
29
28
 
@@ -2,6 +2,13 @@ module Fastlane
2
2
  module Actions
3
3
  GIT_MERGE_COMMIT_FILTERING_OPTIONS = [:include_merges, :exclude_merges, :only_include_merges].freeze
4
4
 
5
+ module SharedValues
6
+ GIT_BRANCH_ENV_VARS = %w(GIT_BRANCH BRANCH_NAME TRAVIS_BRANCH BITRISE_GIT_BRANCH CI_BUILD_REF_NAME CI_COMMIT_REF_NAME WERCKER_GIT_BRANCH BUILDKITE_BRANCH APPCENTER_BRANCH CIRCLE_BRANCH).reject do |branch|
7
+ # Removing because tests break on CircleCI
8
+ Helper.test? && branch == "CIRCLE_BRANCH"
9
+ end.freeze
10
+ end
11
+
5
12
  def self.git_log_between(pretty_format, from, to, merge_commit_filtering, date_format = nil, ancestry_path)
6
13
  command = %w(git log)
7
14
  command << "--pretty=#{pretty_format}"
@@ -112,14 +119,11 @@ module Fastlane
112
119
  return nil
113
120
  end
114
121
 
115
- # Returns the current git branch - can be replaced using the environment variable `GIT_BRANCH`
122
+ # Returns the current git branch, or "HEAD" if it's not checked out to any branch
123
+ # Can be replaced using the environment variable `GIT_BRANCH`
116
124
  def self.git_branch
117
- return ENV['GIT_BRANCH'] if ENV['GIT_BRANCH'].to_s.length > 0 # set by Jenkins
118
- s = Actions.sh("git rev-parse --abbrev-ref HEAD", log: false).chomp
119
- return s.to_s.strip if s.to_s.length > 0
120
- nil
121
- rescue
122
- nil
125
+ env_name = SharedValues::GIT_BRANCH_ENV_VARS.find { |env_var| FastlaneCore::Env.truthy?(env_var) }
126
+ ENV.fetch(env_name.to_s) { Actions.sh("git rev-parse --abbrev-ref HEAD", log: false).chomp }
123
127
  end
124
128
 
125
129
  private_class_method
@@ -7,14 +7,13 @@ module Fastlane
7
7
  # Returns an array of FastlanePlugin objects
8
8
  def self.fetch_gems(search_query: nil)
9
9
  require 'json'
10
- require 'open-uri'
11
10
 
12
11
  page = 1
13
12
  plugins = []
14
13
  loop do
15
14
  url = "https://rubygems.org/api/v1/search.json?query=#{PluginManager.plugin_prefix}&page=#{page}"
16
15
  FastlaneCore::UI.verbose("RubyGems API Request: #{url}")
17
- results = JSON.parse(open(url).read)
16
+ results = JSON.parse(FastlaneCore::Helper.open_uri(url).read)
18
17
  break if results.count == 0
19
18
 
20
19
  plugins += results.collect do |current|
@@ -65,10 +65,9 @@ module Fastlane
65
65
 
66
66
  # Checks if the gem name is still free on RubyGems
67
67
  def gem_name_taken?(name)
68
- require 'open-uri'
69
68
  require 'json'
70
69
  url = "https://rubygems.org/api/v1/gems/#{name}.json"
71
- response = JSON.parse(open(url).read)
70
+ response = JSON.parse(FastlaneCore::Helper.open_uri(url).read)
72
71
  return !!response['version']
73
72
  rescue
74
73
  false
@@ -155,11 +155,10 @@ module Fastlane
155
155
  #####################################################
156
156
 
157
157
  def self.fetch_gem_info_from_rubygems(gem_name)
158
- require 'open-uri'
159
158
  require 'json'
160
159
  url = "https://rubygems.org/api/v1/gems/#{gem_name}.json"
161
160
  begin
162
- JSON.parse(URI.open(url).read)
161
+ JSON.parse(FastlaneCore::Helper.open_uri(url).read)
163
162
  rescue
164
163
  nil
165
164
  end
@@ -116,6 +116,7 @@ module Fastlane
116
116
  end
117
117
 
118
118
  def get_type(param: nil, default_value: nil, optional: nil, param_type_override: nil, is_string: true)
119
+ require 'bigdecimal'
119
120
  unless param_type_override.nil?
120
121
  type = determine_type_from_override(type_override: param_type_override)
121
122
  end
@@ -168,6 +169,9 @@ module Fastlane
168
169
  default_value = "[:]"
169
170
  elsif type != "Bool" && type != "[String]" && type != "Int" && type != "@escaping ((String) -> Void)" && type != "Float" && type != "Double"
170
171
  default_value = "\"#{default_value}\""
172
+ elsif type == "Float" || type == "Double"
173
+ require 'bigdecimal'
174
+ default_value = BigDecimal(default_value).to_s
171
175
  end
172
176
  end
173
177
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.178.0'.freeze
2
+ VERSION = '2.179.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  MINIMUM_XCODE_RELEASE = "7.0".freeze
5
5
  RUBOCOP_REQUIREMENT = '0.49.1'.freeze
@@ -17,4 +17,4 @@ public class Deliverfile: DeliverfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.178.0
20
+ // Generated with fastlane 2.179.0
@@ -9,7 +9,7 @@ public protocol DeliverfileProtocol: class {
9
9
  var apiKey: [String: Any]? { get }
10
10
 
11
11
  /// Your Apple ID Username
12
- var username: String { get }
12
+ var username: String? { get }
13
13
 
14
14
  /// The bundle identifier of your app
15
15
  var appIdentifier: String? { get }
@@ -192,7 +192,7 @@ public protocol DeliverfileProtocol: class {
192
192
  public extension DeliverfileProtocol {
193
193
  var apiKeyPath: String? { return nil }
194
194
  var apiKey: [String: Any]? { return nil }
195
- var username: String { return "" }
195
+ var username: String? { return nil }
196
196
  var appIdentifier: String? { return nil }
197
197
  var appVersion: String? { return nil }
198
198
  var ipa: String? { return nil }
@@ -256,4 +256,4 @@ public extension DeliverfileProtocol {
256
256
 
257
257
  // Please don't remove the lines below
258
258
  // They are used to detect outdated files
259
- // FastlaneRunnerAPIVersion [0.9.61]
259
+ // FastlaneRunnerAPIVersion [0.9.62]
@@ -119,7 +119,7 @@ public func appStoreBuildNumber(apiKeyPath: String? = nil,
119
119
  apiKey: [String: Any]? = nil,
120
120
  initialBuildNumber: Any,
121
121
  appIdentifier: String,
122
- username: String,
122
+ username: String? = nil,
123
123
  teamId: Any? = nil,
124
124
  live: Bool = true,
125
125
  version: String? = nil,
@@ -552,7 +552,7 @@ public func appledoc(input: Any,
552
552
  */
553
553
  public func appstore(apiKeyPath: String? = nil,
554
554
  apiKey: [String: Any]? = nil,
555
- username: String,
555
+ username: String? = nil,
556
556
  appIdentifier: String? = nil,
557
557
  appVersion: String? = nil,
558
558
  ipa: String? = nil,
@@ -1006,53 +1006,53 @@ public func buildAndroidApp(task: String? = nil,
1006
1006
 
1007
1007
  More information: https://fastlane.tools/gym
1008
1008
  */
1009
- public func buildApp(workspace: String? = nil,
1010
- project: String? = nil,
1011
- scheme: String? = nil,
1012
- clean: Bool = false,
1013
- outputDirectory: String = ".",
1014
- outputName: String? = nil,
1015
- configuration: String? = nil,
1016
- silent: Bool = false,
1017
- codesigningIdentity: String? = nil,
1018
- skipPackageIpa: Bool = false,
1019
- skipPackagePkg: Bool = false,
1020
- includeSymbols: Bool? = nil,
1021
- includeBitcode: Bool? = nil,
1022
- exportMethod: String? = nil,
1023
- exportOptions: [String: Any]? = nil,
1024
- exportXcargs: String? = nil,
1025
- skipBuildArchive: Bool? = nil,
1026
- skipArchive: Bool? = nil,
1027
- skipCodesigning: Bool? = nil,
1028
- catalystPlatform: String? = nil,
1029
- installerCertName: String? = nil,
1030
- buildPath: String? = nil,
1031
- archivePath: String? = nil,
1032
- derivedDataPath: String? = nil,
1033
- resultBundle: Bool = false,
1034
- resultBundlePath: String? = nil,
1035
- buildlogPath: String = "~/Library/Logs/gym",
1036
- sdk: String? = nil,
1037
- toolchain: String? = nil,
1038
- destination: String? = nil,
1039
- exportTeamId: String? = nil,
1040
- xcargs: String? = nil,
1041
- xcconfig: String? = nil,
1042
- suppressXcodeOutput: Bool? = nil,
1043
- disableXcpretty: Bool? = nil,
1044
- xcprettyTestFormat: Bool? = nil,
1045
- xcprettyFormatter: String? = nil,
1046
- xcprettyReportJunit: String? = nil,
1047
- xcprettyReportHtml: String? = nil,
1048
- xcprettyReportJson: String? = nil,
1049
- analyzeBuildTime: Bool? = nil,
1050
- xcprettyUtf: Bool? = nil,
1051
- skipProfileDetection: Bool = false,
1052
- clonedSourcePackagesPath: String? = nil,
1053
- skipPackageDependenciesResolution: Bool = false,
1054
- disablePackageAutomaticUpdates: Bool = false,
1055
- useSystemScm: Bool = false)
1009
+ @discardableResult public func buildApp(workspace: String? = nil,
1010
+ project: String? = nil,
1011
+ scheme: String? = nil,
1012
+ clean: Bool = false,
1013
+ outputDirectory: String = ".",
1014
+ outputName: String? = nil,
1015
+ configuration: String? = nil,
1016
+ silent: Bool = false,
1017
+ codesigningIdentity: String? = nil,
1018
+ skipPackageIpa: Bool = false,
1019
+ skipPackagePkg: Bool = false,
1020
+ includeSymbols: Bool? = nil,
1021
+ includeBitcode: Bool? = nil,
1022
+ exportMethod: String? = nil,
1023
+ exportOptions: [String: Any]? = nil,
1024
+ exportXcargs: String? = nil,
1025
+ skipBuildArchive: Bool? = nil,
1026
+ skipArchive: Bool? = nil,
1027
+ skipCodesigning: Bool? = nil,
1028
+ catalystPlatform: String? = nil,
1029
+ installerCertName: String? = nil,
1030
+ buildPath: String? = nil,
1031
+ archivePath: String? = nil,
1032
+ derivedDataPath: String? = nil,
1033
+ resultBundle: Bool = false,
1034
+ resultBundlePath: String? = nil,
1035
+ buildlogPath: String = "~/Library/Logs/gym",
1036
+ sdk: String? = nil,
1037
+ toolchain: String? = nil,
1038
+ destination: String? = nil,
1039
+ exportTeamId: String? = nil,
1040
+ xcargs: String? = nil,
1041
+ xcconfig: String? = nil,
1042
+ suppressXcodeOutput: Bool? = nil,
1043
+ disableXcpretty: Bool? = nil,
1044
+ xcprettyTestFormat: Bool? = nil,
1045
+ xcprettyFormatter: String? = nil,
1046
+ xcprettyReportJunit: String? = nil,
1047
+ xcprettyReportHtml: String? = nil,
1048
+ xcprettyReportJson: String? = nil,
1049
+ analyzeBuildTime: Bool? = nil,
1050
+ xcprettyUtf: Bool? = nil,
1051
+ skipProfileDetection: Bool = false,
1052
+ clonedSourcePackagesPath: String? = nil,
1053
+ skipPackageDependenciesResolution: Bool = false,
1054
+ disablePackageAutomaticUpdates: Bool = false,
1055
+ useSystemScm: Bool = false) -> String
1056
1056
  {
1057
1057
  let command = RubyCommand(commandID: "", methodName: "build_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1058
1058
  RubyCommand.Argument(name: "project", value: project),
@@ -1101,7 +1101,7 @@ public func buildApp(workspace: String? = nil,
1101
1101
  RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
1102
1102
  RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
1103
1103
  RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
1104
- _ = runner.executeCommand(command)
1104
+ return runner.executeCommand(command)
1105
1105
  }
1106
1106
 
1107
1107
  /**
@@ -1157,50 +1157,50 @@ public func buildApp(workspace: String? = nil,
1157
1157
 
1158
1158
  More information: https://fastlane.tools/gym
1159
1159
  */
1160
- public func buildIosApp(workspace: String? = nil,
1161
- project: String? = nil,
1162
- scheme: String? = nil,
1163
- clean: Bool = false,
1164
- outputDirectory: String = ".",
1165
- outputName: String? = nil,
1166
- configuration: String? = nil,
1167
- silent: Bool = false,
1168
- codesigningIdentity: String? = nil,
1169
- skipPackageIpa: Bool = false,
1170
- includeSymbols: Bool? = nil,
1171
- includeBitcode: Bool? = nil,
1172
- exportMethod: String? = nil,
1173
- exportOptions: [String: Any]? = nil,
1174
- exportXcargs: String? = nil,
1175
- skipBuildArchive: Bool? = nil,
1176
- skipArchive: Bool? = nil,
1177
- skipCodesigning: Bool? = nil,
1178
- buildPath: String? = nil,
1179
- archivePath: String? = nil,
1180
- derivedDataPath: String? = nil,
1181
- resultBundle: Bool = false,
1182
- resultBundlePath: String? = nil,
1183
- buildlogPath: String = "~/Library/Logs/gym",
1184
- sdk: String? = nil,
1185
- toolchain: String? = nil,
1186
- destination: String? = nil,
1187
- exportTeamId: String? = nil,
1188
- xcargs: String? = nil,
1189
- xcconfig: String? = nil,
1190
- suppressXcodeOutput: Bool? = nil,
1191
- disableXcpretty: Bool? = nil,
1192
- xcprettyTestFormat: Bool? = nil,
1193
- xcprettyFormatter: String? = nil,
1194
- xcprettyReportJunit: String? = nil,
1195
- xcprettyReportHtml: String? = nil,
1196
- xcprettyReportJson: String? = nil,
1197
- analyzeBuildTime: Bool? = nil,
1198
- xcprettyUtf: Bool? = nil,
1199
- skipProfileDetection: Bool = false,
1200
- clonedSourcePackagesPath: String? = nil,
1201
- skipPackageDependenciesResolution: Bool = false,
1202
- disablePackageAutomaticUpdates: Bool = false,
1203
- useSystemScm: Bool = false)
1160
+ @discardableResult public func buildIosApp(workspace: String? = nil,
1161
+ project: String? = nil,
1162
+ scheme: String? = nil,
1163
+ clean: Bool = false,
1164
+ outputDirectory: String = ".",
1165
+ outputName: String? = nil,
1166
+ configuration: String? = nil,
1167
+ silent: Bool = false,
1168
+ codesigningIdentity: String? = nil,
1169
+ skipPackageIpa: Bool = false,
1170
+ includeSymbols: Bool? = nil,
1171
+ includeBitcode: Bool? = nil,
1172
+ exportMethod: String? = nil,
1173
+ exportOptions: [String: Any]? = nil,
1174
+ exportXcargs: String? = nil,
1175
+ skipBuildArchive: Bool? = nil,
1176
+ skipArchive: Bool? = nil,
1177
+ skipCodesigning: Bool? = nil,
1178
+ buildPath: String? = nil,
1179
+ archivePath: String? = nil,
1180
+ derivedDataPath: String? = nil,
1181
+ resultBundle: Bool = false,
1182
+ resultBundlePath: String? = nil,
1183
+ buildlogPath: String = "~/Library/Logs/gym",
1184
+ sdk: String? = nil,
1185
+ toolchain: String? = nil,
1186
+ destination: String? = nil,
1187
+ exportTeamId: String? = nil,
1188
+ xcargs: String? = nil,
1189
+ xcconfig: String? = nil,
1190
+ suppressXcodeOutput: Bool? = nil,
1191
+ disableXcpretty: Bool? = nil,
1192
+ xcprettyTestFormat: Bool? = nil,
1193
+ xcprettyFormatter: String? = nil,
1194
+ xcprettyReportJunit: String? = nil,
1195
+ xcprettyReportHtml: String? = nil,
1196
+ xcprettyReportJson: String? = nil,
1197
+ analyzeBuildTime: Bool? = nil,
1198
+ xcprettyUtf: Bool? = nil,
1199
+ skipProfileDetection: Bool = false,
1200
+ clonedSourcePackagesPath: String? = nil,
1201
+ skipPackageDependenciesResolution: Bool = false,
1202
+ disablePackageAutomaticUpdates: Bool = false,
1203
+ useSystemScm: Bool = false) -> String
1204
1204
  {
1205
1205
  let command = RubyCommand(commandID: "", methodName: "build_ios_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1206
1206
  RubyCommand.Argument(name: "project", value: project),
@@ -1246,7 +1246,7 @@ public func buildIosApp(workspace: String? = nil,
1246
1246
  RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
1247
1247
  RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
1248
1248
  RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
1249
- _ = runner.executeCommand(command)
1249
+ return runner.executeCommand(command)
1250
1250
  }
1251
1251
 
1252
1252
  /**
@@ -1303,51 +1303,51 @@ public func buildIosApp(workspace: String? = nil,
1303
1303
 
1304
1304
  More information: https://fastlane.tools/gym
1305
1305
  */
1306
- public func buildMacApp(workspace: String? = nil,
1307
- project: String? = nil,
1308
- scheme: String? = nil,
1309
- clean: Bool = false,
1310
- outputDirectory: String = ".",
1311
- outputName: String? = nil,
1312
- configuration: String? = nil,
1313
- silent: Bool = false,
1314
- codesigningIdentity: String? = nil,
1315
- skipPackagePkg: Bool = false,
1316
- includeSymbols: Bool? = nil,
1317
- includeBitcode: Bool? = nil,
1318
- exportMethod: String? = nil,
1319
- exportOptions: [String: Any]? = nil,
1320
- exportXcargs: String? = nil,
1321
- skipBuildArchive: Bool? = nil,
1322
- skipArchive: Bool? = nil,
1323
- skipCodesigning: Bool? = nil,
1324
- installerCertName: String? = nil,
1325
- buildPath: String? = nil,
1326
- archivePath: String? = nil,
1327
- derivedDataPath: String? = nil,
1328
- resultBundle: Bool = false,
1329
- resultBundlePath: String? = nil,
1330
- buildlogPath: String = "~/Library/Logs/gym",
1331
- sdk: String? = nil,
1332
- toolchain: String? = nil,
1333
- destination: String? = nil,
1334
- exportTeamId: String? = nil,
1335
- xcargs: String? = nil,
1336
- xcconfig: String? = nil,
1337
- suppressXcodeOutput: Bool? = nil,
1338
- disableXcpretty: Bool? = nil,
1339
- xcprettyTestFormat: Bool? = nil,
1340
- xcprettyFormatter: String? = nil,
1341
- xcprettyReportJunit: String? = nil,
1342
- xcprettyReportHtml: String? = nil,
1343
- xcprettyReportJson: String? = nil,
1344
- analyzeBuildTime: Bool? = nil,
1345
- xcprettyUtf: Bool? = nil,
1346
- skipProfileDetection: Bool = false,
1347
- clonedSourcePackagesPath: String? = nil,
1348
- skipPackageDependenciesResolution: Bool = false,
1349
- disablePackageAutomaticUpdates: Bool = false,
1350
- useSystemScm: Bool = false)
1306
+ @discardableResult public func buildMacApp(workspace: String? = nil,
1307
+ project: String? = nil,
1308
+ scheme: String? = nil,
1309
+ clean: Bool = false,
1310
+ outputDirectory: String = ".",
1311
+ outputName: String? = nil,
1312
+ configuration: String? = nil,
1313
+ silent: Bool = false,
1314
+ codesigningIdentity: String? = nil,
1315
+ skipPackagePkg: Bool = false,
1316
+ includeSymbols: Bool? = nil,
1317
+ includeBitcode: Bool? = nil,
1318
+ exportMethod: String? = nil,
1319
+ exportOptions: [String: Any]? = nil,
1320
+ exportXcargs: String? = nil,
1321
+ skipBuildArchive: Bool? = nil,
1322
+ skipArchive: Bool? = nil,
1323
+ skipCodesigning: Bool? = nil,
1324
+ installerCertName: String? = nil,
1325
+ buildPath: String? = nil,
1326
+ archivePath: String? = nil,
1327
+ derivedDataPath: String? = nil,
1328
+ resultBundle: Bool = false,
1329
+ resultBundlePath: String? = nil,
1330
+ buildlogPath: String = "~/Library/Logs/gym",
1331
+ sdk: String? = nil,
1332
+ toolchain: String? = nil,
1333
+ destination: String? = nil,
1334
+ exportTeamId: String? = nil,
1335
+ xcargs: String? = nil,
1336
+ xcconfig: String? = nil,
1337
+ suppressXcodeOutput: Bool? = nil,
1338
+ disableXcpretty: Bool? = nil,
1339
+ xcprettyTestFormat: Bool? = nil,
1340
+ xcprettyFormatter: String? = nil,
1341
+ xcprettyReportJunit: String? = nil,
1342
+ xcprettyReportHtml: String? = nil,
1343
+ xcprettyReportJson: String? = nil,
1344
+ analyzeBuildTime: Bool? = nil,
1345
+ xcprettyUtf: Bool? = nil,
1346
+ skipProfileDetection: Bool = false,
1347
+ clonedSourcePackagesPath: String? = nil,
1348
+ skipPackageDependenciesResolution: Bool = false,
1349
+ disablePackageAutomaticUpdates: Bool = false,
1350
+ useSystemScm: Bool = false) -> String
1351
1351
  {
1352
1352
  let command = RubyCommand(commandID: "", methodName: "build_mac_app", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
1353
1353
  RubyCommand.Argument(name: "project", value: project),
@@ -1394,7 +1394,7 @@ public func buildMacApp(workspace: String? = nil,
1394
1394
  RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
1395
1395
  RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
1396
1396
  RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
1397
- _ = runner.executeCommand(command)
1397
+ return runner.executeCommand(command)
1398
1398
  }
1399
1399
 
1400
1400
  /**
@@ -1942,7 +1942,7 @@ public func cert(development: Bool = false,
1942
1942
  generateAppleCerts: Bool = true,
1943
1943
  apiKeyPath: String? = nil,
1944
1944
  apiKey: [String: Any]? = nil,
1945
- username: String,
1945
+ username: String? = nil,
1946
1946
  teamId: String? = nil,
1947
1947
  teamName: String? = nil,
1948
1948
  filename: String? = nil,
@@ -2068,26 +2068,26 @@ public func chatwork(apiToken: String,
2068
2068
 
2069
2069
  More information: https://fastlane.tools/precheck
2070
2070
  */
2071
- public func checkAppStoreMetadata(apiKeyPath: String? = nil,
2072
- apiKey: [String: Any]? = nil,
2073
- appIdentifier: String,
2074
- username: String,
2075
- teamId: String? = nil,
2076
- teamName: String? = nil,
2077
- platform: String = "ios",
2078
- defaultRuleLevel: Any = "error",
2079
- includeInAppPurchases: Bool = true,
2080
- useLive: Bool = false,
2081
- negativeAppleSentiment: Any? = nil,
2082
- placeholderText: Any? = nil,
2083
- otherPlatforms: Any? = nil,
2084
- futureFunctionality: Any? = nil,
2085
- testWords: Any? = nil,
2086
- curseWords: Any? = nil,
2087
- freeStuffInIap: Any? = nil,
2088
- customText: Any? = nil,
2089
- copyrightDate: Any? = nil,
2090
- unreachableUrls: Any? = nil)
2071
+ @discardableResult public func checkAppStoreMetadata(apiKeyPath: String? = nil,
2072
+ apiKey: [String: Any]? = nil,
2073
+ appIdentifier: String,
2074
+ username: String? = nil,
2075
+ teamId: String? = nil,
2076
+ teamName: String? = nil,
2077
+ platform: String = "ios",
2078
+ defaultRuleLevel: Any = "error",
2079
+ includeInAppPurchases: Bool = true,
2080
+ useLive: Bool = false,
2081
+ negativeAppleSentiment: Any? = nil,
2082
+ placeholderText: Any? = nil,
2083
+ otherPlatforms: Any? = nil,
2084
+ futureFunctionality: Any? = nil,
2085
+ testWords: Any? = nil,
2086
+ curseWords: Any? = nil,
2087
+ freeStuffInIap: Any? = nil,
2088
+ customText: Any? = nil,
2089
+ copyrightDate: Any? = nil,
2090
+ unreachableUrls: Any? = nil) -> Bool
2091
2091
  {
2092
2092
  let command = RubyCommand(commandID: "", methodName: "check_app_store_metadata", className: nil, args: [RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
2093
2093
  RubyCommand.Argument(name: "api_key", value: apiKey),
@@ -2109,7 +2109,7 @@ public func checkAppStoreMetadata(apiKeyPath: String? = nil,
2109
2109
  RubyCommand.Argument(name: "custom_text", value: customText),
2110
2110
  RubyCommand.Argument(name: "copyright_date", value: copyrightDate),
2111
2111
  RubyCommand.Argument(name: "unreachable_urls", value: unreachableUrls)])
2112
- _ = runner.executeCommand(command)
2112
+ return parseBool(fromString: runner.executeCommand(command))
2113
2113
  }
2114
2114
 
2115
2115
  /**
@@ -2780,7 +2780,7 @@ public func deleteKeychain(name: String? = nil,
2780
2780
  */
2781
2781
  public func deliver(apiKeyPath: Any? = deliverfile.apiKeyPath,
2782
2782
  apiKey: [String: Any]? = deliverfile.apiKey,
2783
- username: Any = deliverfile.username,
2783
+ username: Any? = deliverfile.username,
2784
2784
  appIdentifier: Any? = deliverfile.appIdentifier,
2785
2785
  appVersion: Any? = deliverfile.appVersion,
2786
2786
  ipa: Any? = deliverfile.ipa,
@@ -3504,7 +3504,7 @@ public func getCertificates(development: Bool = false,
3504
3504
  generateAppleCerts: Bool = true,
3505
3505
  apiKeyPath: String? = nil,
3506
3506
  apiKey: [String: Any]? = nil,
3507
- username: String,
3507
+ username: String? = nil,
3508
3508
  teamId: String? = nil,
3509
3509
  teamName: String? = nil,
3510
3510
  filename: String? = nil,
@@ -3689,29 +3689,29 @@ public func getManagedPlayStorePublishingRights(jsonKey: String? = nil,
3689
3689
 
3690
3690
  **Note**: It is recommended to use [match](https://docs.fastlane.tools/actions/match/) according to the [codesigning.guide](https://codesigning.guide) for generating and maintaining your provisioning profiles. Use _sigh_ directly only if you want full control over what's going on and know more about codesigning.
3691
3691
  */
3692
- public func getProvisioningProfile(adhoc: Bool = false,
3693
- developerId: Bool = false,
3694
- development: Bool = false,
3695
- skipInstall: Bool = false,
3696
- force: Bool = false,
3697
- appIdentifier: String,
3698
- apiKeyPath: String? = nil,
3699
- apiKey: [String: Any]? = nil,
3700
- username: String,
3701
- teamId: String? = nil,
3702
- teamName: String? = nil,
3703
- provisioningName: String? = nil,
3704
- ignoreProfilesWithDifferentName: Bool = false,
3705
- outputPath: String = ".",
3706
- certId: String? = nil,
3707
- certOwnerName: String? = nil,
3708
- filename: String? = nil,
3709
- skipFetchProfiles: Bool = false,
3710
- skipCertificateVerification: Bool = false,
3711
- platform: Any = "ios",
3712
- readonly: Bool = false,
3713
- templateName: String? = nil,
3714
- failOnNameTaken: Bool = false)
3692
+ @discardableResult public func getProvisioningProfile(adhoc: Bool = false,
3693
+ developerId: Bool = false,
3694
+ development: Bool = false,
3695
+ skipInstall: Bool = false,
3696
+ force: Bool = false,
3697
+ appIdentifier: String,
3698
+ apiKeyPath: String? = nil,
3699
+ apiKey: [String: Any]? = nil,
3700
+ username: String? = nil,
3701
+ teamId: String? = nil,
3702
+ teamName: String? = nil,
3703
+ provisioningName: String? = nil,
3704
+ ignoreProfilesWithDifferentName: Bool = false,
3705
+ outputPath: String = ".",
3706
+ certId: String? = nil,
3707
+ certOwnerName: String? = nil,
3708
+ filename: String? = nil,
3709
+ skipFetchProfiles: Bool = false,
3710
+ skipCertificateVerification: Bool = false,
3711
+ platform: Any = "ios",
3712
+ readonly: Bool = false,
3713
+ templateName: String? = nil,
3714
+ failOnNameTaken: Bool = false) -> String
3715
3715
  {
3716
3716
  let command = RubyCommand(commandID: "", methodName: "get_provisioning_profile", className: nil, args: [RubyCommand.Argument(name: "adhoc", value: adhoc),
3717
3717
  RubyCommand.Argument(name: "developer_id", value: developerId),
@@ -3736,7 +3736,7 @@ public func getProvisioningProfile(adhoc: Bool = false,
3736
3736
  RubyCommand.Argument(name: "readonly", value: readonly),
3737
3737
  RubyCommand.Argument(name: "template_name", value: templateName),
3738
3738
  RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken)])
3739
- _ = runner.executeCommand(command)
3739
+ return runner.executeCommand(command)
3740
3740
  }
3741
3741
 
3742
3742
  /**
@@ -3806,7 +3806,7 @@ public func getPushCertificate(development: Bool = false,
3806
3806
  Get the version number of your project
3807
3807
 
3808
3808
  - parameters:
3809
- - xcodeproj: Path to the main Xcode project to read version number from, optional. By default will use the first Xcode project found within the project root directory
3809
+ - xcodeproj: Path to the Xcode project to read version number from, or its containing directory, optional. If ommitted, or if a directory is passed instead, it will use the first Xcode project found within the given directory, or the project root directory if none is passed
3810
3810
  - target: Target name, optional. Will be needed if you have more than one non-test target to avoid being prompted to select one
3811
3811
  - configuration: Configuration name, optional. Will be needed if you have altered the configurations from the default or your version number depends on the configuration selected
3812
3812
 
@@ -3843,7 +3843,7 @@ public func gitAdd(path: Any? = nil,
3843
3843
  /**
3844
3844
  Returns the name of the current git branch, possibly as managed by CI ENV vars
3845
3845
 
3846
- If no branch could be found, this action will return an empty string
3846
+ If no branch could be found, this action will return an empty string. This is a wrapper for the internal action Actions.git_branch
3847
3847
  */
3848
3848
  @discardableResult public func gitBranch() -> String {
3849
3849
  let command = RubyCommand(commandID: "", methodName: "git_branch", className: nil, args: [])
@@ -3911,14 +3911,14 @@ public func gitSubmoduleUpdate(recursive: Bool = false,
3911
3911
 
3912
3912
  - returns: Boolean value whether the tag exists or not
3913
3913
  */
3914
- public func gitTagExists(tag: String,
3915
- remote: Bool = false,
3916
- remoteName: String = "origin")
3914
+ @discardableResult public func gitTagExists(tag: String,
3915
+ remote: Bool = false,
3916
+ remoteName: String = "origin") -> Bool
3917
3917
  {
3918
3918
  let command = RubyCommand(commandID: "", methodName: "git_tag_exists", className: nil, args: [RubyCommand.Argument(name: "tag", value: tag),
3919
3919
  RubyCommand.Argument(name: "remote", value: remote),
3920
3920
  RubyCommand.Argument(name: "remote_name", value: remoteName)])
3921
- _ = runner.executeCommand(command)
3921
+ return parseBool(fromString: runner.executeCommand(command))
3922
3922
  }
3923
3923
 
3924
3924
  /**
@@ -4148,53 +4148,53 @@ public func gradle(task: String? = nil,
4148
4148
 
4149
4149
  More information: https://fastlane.tools/gym
4150
4150
  */
4151
- public func gym(workspace: Any? = gymfile.workspace,
4152
- project: Any? = gymfile.project,
4153
- scheme: Any? = gymfile.scheme,
4154
- clean: Bool = gymfile.clean,
4155
- outputDirectory: Any = gymfile.outputDirectory,
4156
- outputName: Any? = gymfile.outputName,
4157
- configuration: Any? = gymfile.configuration,
4158
- silent: Bool = gymfile.silent,
4159
- codesigningIdentity: Any? = gymfile.codesigningIdentity,
4160
- skipPackageIpa: Bool = gymfile.skipPackageIpa,
4161
- skipPackagePkg: Bool = gymfile.skipPackagePkg,
4162
- includeSymbols: Bool? = gymfile.includeSymbols,
4163
- includeBitcode: Bool? = gymfile.includeBitcode,
4164
- exportMethod: Any? = gymfile.exportMethod,
4165
- exportOptions: [String: Any]? = gymfile.exportOptions,
4166
- exportXcargs: Any? = gymfile.exportXcargs,
4167
- skipBuildArchive: Bool? = gymfile.skipBuildArchive,
4168
- skipArchive: Bool? = gymfile.skipArchive,
4169
- skipCodesigning: Bool? = gymfile.skipCodesigning,
4170
- catalystPlatform: Any? = gymfile.catalystPlatform,
4171
- installerCertName: Any? = gymfile.installerCertName,
4172
- buildPath: Any? = gymfile.buildPath,
4173
- archivePath: Any? = gymfile.archivePath,
4174
- derivedDataPath: Any? = gymfile.derivedDataPath,
4175
- resultBundle: Bool = gymfile.resultBundle,
4176
- resultBundlePath: Any? = gymfile.resultBundlePath,
4177
- buildlogPath: Any = gymfile.buildlogPath,
4178
- sdk: Any? = gymfile.sdk,
4179
- toolchain: Any? = gymfile.toolchain,
4180
- destination: Any? = gymfile.destination,
4181
- exportTeamId: Any? = gymfile.exportTeamId,
4182
- xcargs: Any? = gymfile.xcargs,
4183
- xcconfig: Any? = gymfile.xcconfig,
4184
- suppressXcodeOutput: Bool? = gymfile.suppressXcodeOutput,
4185
- disableXcpretty: Bool? = gymfile.disableXcpretty,
4186
- xcprettyTestFormat: Bool? = gymfile.xcprettyTestFormat,
4187
- xcprettyFormatter: Any? = gymfile.xcprettyFormatter,
4188
- xcprettyReportJunit: Any? = gymfile.xcprettyReportJunit,
4189
- xcprettyReportHtml: Any? = gymfile.xcprettyReportHtml,
4190
- xcprettyReportJson: Any? = gymfile.xcprettyReportJson,
4191
- analyzeBuildTime: Bool? = gymfile.analyzeBuildTime,
4192
- xcprettyUtf: Bool? = gymfile.xcprettyUtf,
4193
- skipProfileDetection: Bool = gymfile.skipProfileDetection,
4194
- clonedSourcePackagesPath: Any? = gymfile.clonedSourcePackagesPath,
4195
- skipPackageDependenciesResolution: Bool = gymfile.skipPackageDependenciesResolution,
4196
- disablePackageAutomaticUpdates: Bool = gymfile.disablePackageAutomaticUpdates,
4197
- useSystemScm: Bool = gymfile.useSystemScm)
4151
+ @discardableResult public func gym(workspace: Any? = gymfile.workspace,
4152
+ project: Any? = gymfile.project,
4153
+ scheme: Any? = gymfile.scheme,
4154
+ clean: Bool = gymfile.clean,
4155
+ outputDirectory: Any = gymfile.outputDirectory,
4156
+ outputName: Any? = gymfile.outputName,
4157
+ configuration: Any? = gymfile.configuration,
4158
+ silent: Bool = gymfile.silent,
4159
+ codesigningIdentity: Any? = gymfile.codesigningIdentity,
4160
+ skipPackageIpa: Bool = gymfile.skipPackageIpa,
4161
+ skipPackagePkg: Bool = gymfile.skipPackagePkg,
4162
+ includeSymbols: Bool? = gymfile.includeSymbols,
4163
+ includeBitcode: Bool? = gymfile.includeBitcode,
4164
+ exportMethod: Any? = gymfile.exportMethod,
4165
+ exportOptions: [String: Any]? = gymfile.exportOptions,
4166
+ exportXcargs: Any? = gymfile.exportXcargs,
4167
+ skipBuildArchive: Bool? = gymfile.skipBuildArchive,
4168
+ skipArchive: Bool? = gymfile.skipArchive,
4169
+ skipCodesigning: Bool? = gymfile.skipCodesigning,
4170
+ catalystPlatform: Any? = gymfile.catalystPlatform,
4171
+ installerCertName: Any? = gymfile.installerCertName,
4172
+ buildPath: Any? = gymfile.buildPath,
4173
+ archivePath: Any? = gymfile.archivePath,
4174
+ derivedDataPath: Any? = gymfile.derivedDataPath,
4175
+ resultBundle: Bool = gymfile.resultBundle,
4176
+ resultBundlePath: Any? = gymfile.resultBundlePath,
4177
+ buildlogPath: Any = gymfile.buildlogPath,
4178
+ sdk: Any? = gymfile.sdk,
4179
+ toolchain: Any? = gymfile.toolchain,
4180
+ destination: Any? = gymfile.destination,
4181
+ exportTeamId: Any? = gymfile.exportTeamId,
4182
+ xcargs: Any? = gymfile.xcargs,
4183
+ xcconfig: Any? = gymfile.xcconfig,
4184
+ suppressXcodeOutput: Bool? = gymfile.suppressXcodeOutput,
4185
+ disableXcpretty: Bool? = gymfile.disableXcpretty,
4186
+ xcprettyTestFormat: Bool? = gymfile.xcprettyTestFormat,
4187
+ xcprettyFormatter: Any? = gymfile.xcprettyFormatter,
4188
+ xcprettyReportJunit: Any? = gymfile.xcprettyReportJunit,
4189
+ xcprettyReportHtml: Any? = gymfile.xcprettyReportHtml,
4190
+ xcprettyReportJson: Any? = gymfile.xcprettyReportJson,
4191
+ analyzeBuildTime: Bool? = gymfile.analyzeBuildTime,
4192
+ xcprettyUtf: Bool? = gymfile.xcprettyUtf,
4193
+ skipProfileDetection: Bool = gymfile.skipProfileDetection,
4194
+ clonedSourcePackagesPath: Any? = gymfile.clonedSourcePackagesPath,
4195
+ skipPackageDependenciesResolution: Bool = gymfile.skipPackageDependenciesResolution,
4196
+ disablePackageAutomaticUpdates: Bool = gymfile.disablePackageAutomaticUpdates,
4197
+ useSystemScm: Bool = gymfile.useSystemScm) -> String
4198
4198
  {
4199
4199
  let command = RubyCommand(commandID: "", methodName: "gym", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
4200
4200
  RubyCommand.Argument(name: "project", value: project),
@@ -4243,7 +4243,7 @@ public func gym(workspace: Any? = gymfile.workspace,
4243
4243
  RubyCommand.Argument(name: "skip_package_dependencies_resolution", value: skipPackageDependenciesResolution),
4244
4244
  RubyCommand.Argument(name: "disable_package_automatic_updates", value: disablePackageAutomaticUpdates),
4245
4245
  RubyCommand.Argument(name: "use_system_scm", value: useSystemScm)])
4246
- _ = runner.executeCommand(command)
4246
+ return runner.executeCommand(command)
4247
4247
  }
4248
4248
 
4249
4249
  /**
@@ -4587,9 +4587,9 @@ public func installOnDevice(extra: String? = nil,
4587
4587
 
4588
4588
  Install provisioning profile from path for current user
4589
4589
  */
4590
- public func installProvisioningProfile(path: String) {
4590
+ @discardableResult public func installProvisioningProfile(path: String) -> String {
4591
4591
  let command = RubyCommand(commandID: "", methodName: "install_provisioning_profile", className: nil, args: [RubyCommand.Argument(name: "path", value: path)])
4592
- _ = runner.executeCommand(command)
4592
+ return runner.executeCommand(command)
4593
4593
  }
4594
4594
 
4595
4595
  /**
@@ -4789,7 +4789,7 @@ public func jira(url: String,
4789
4789
  apiKey: [String: Any]? = nil,
4790
4790
  live: Bool = false,
4791
4791
  appIdentifier: String,
4792
- username: String,
4792
+ username: String? = nil,
4793
4793
  version: String? = nil,
4794
4794
  platform: String = "ios",
4795
4795
  initialBuildNumber: Int = 1,
@@ -5047,6 +5047,153 @@ public func match(type: Any = matchfile.type,
5047
5047
  _ = runner.executeCommand(command)
5048
5048
  }
5049
5049
 
5050
+ /**
5051
+ Easily nuke your certificate and provisioning profiles (via _match_)
5052
+
5053
+ - parameters:
5054
+ - type: Define the profile type, can be appstore, adhoc, development, enterprise, developer_id, mac_installer_distribution
5055
+ - additionalCertTypes: Create additional cert types needed for macOS installers (valid values: mac_installer_distribution, developer_id_installer)
5056
+ - readonly: Only fetch existing certificates and profiles, don't generate new ones
5057
+ - generateAppleCerts: Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)
5058
+ - skipProvisioningProfiles: Skip syncing provisioning profiles
5059
+ - appIdentifier: The bundle identifier(s) of your app (comma-separated string or array of strings)
5060
+ - apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
5061
+ - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)
5062
+ - username: Your Apple ID Username
5063
+ - teamId: The ID of your Developer Portal team if you're in multiple teams
5064
+ - teamName: The name of your Developer Portal team if you're in multiple teams
5065
+ - storageMode: Define where you want to store your certificates
5066
+ - gitUrl: URL to the git repo containing all the certificates
5067
+ - gitBranch: Specific git branch to use
5068
+ - gitFullName: git user full name to commit
5069
+ - gitUserEmail: git user email to commit
5070
+ - shallowClone: Make a shallow clone of the repository (truncate the history to 1 revision)
5071
+ - cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
5072
+ - gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
5073
+ - gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure DevOps repository), usually a string in Base64
5074
+ - gitPrivateKey: Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof
5075
+ - googleCloudBucketName: Name of the Google Cloud Storage bucket to use
5076
+ - googleCloudKeysFile: Path to the gc_keys.json file
5077
+ - googleCloudProjectId: ID of the Google Cloud project to use for authentication
5078
+ - s3Region: Name of the S3 region
5079
+ - s3AccessKey: S3 access key
5080
+ - s3SecretAccessKey: S3 secret access key
5081
+ - s3Bucket: Name of the S3 bucket
5082
+ - s3ObjectPrefix: Prefix to be used on all objects uploaded to S3
5083
+ - keychainName: Keychain the items should be imported to
5084
+ - keychainPassword: This might be required the first time you access certificates on a new mac. For the login/default keychain this is your macOS account password
5085
+ - force: Renew the provisioning profiles every time you run match
5086
+ - forceForNewDevices: Renew the provisioning profiles if the device count on the developer portal has changed. Ignored for profile type 'appstore'
5087
+ - skipConfirmation: Disables confirmation prompts during nuke, answering them with yes
5088
+ - skipDocs: Skip generation of a README.md for the created git repository
5089
+ - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
5090
+ - deriveCatalystAppIdentifier: Enable this if you have the Mac Catalyst capability enabled and your project was created with Xcode 11.3 or earlier. Prepends 'maccatalyst.' to the app identifier for the provisioning profile mapping
5091
+ - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
5092
+ - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
5093
+ - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
5094
+ - skipCertificateMatching: Set to true if there is no access to Apple developer portal but there are certificates, keys and profiles provided. Only works with match import action
5095
+ - outputPath: Path in which to export certificates, key and profile
5096
+ - skipSetPartitionList: Skips setting the partition list (which can sometimes take a long time). Setting the partition list is usually needed to prevent Xcode from prompting to allow a cert to be used for signing
5097
+ - verbose: Print out extra information and all commands
5098
+
5099
+ Use the match_nuke action to revoke your certificates and provisioning profiles.
5100
+ Don't worry, apps that are already available in the App Store / TestFlight will still work.
5101
+ Builds distributed via Ad Hoc or Enterprise will be disabled after nuking your account, so you'll have to re-upload a new build.
5102
+ After clearing your account you'll start from a clean state, and you can run match to generate your certificates and profiles again.
5103
+ More information: https://docs.fastlane.tools/actions/match/
5104
+ */
5105
+ public func matchNuke(type: String = "development",
5106
+ additionalCertTypes: [String]? = nil,
5107
+ readonly: Bool = false,
5108
+ generateAppleCerts: Bool = true,
5109
+ skipProvisioningProfiles: Bool = false,
5110
+ appIdentifier: [String],
5111
+ apiKeyPath: String? = nil,
5112
+ apiKey: [String: Any]? = nil,
5113
+ username: String? = nil,
5114
+ teamId: String? = nil,
5115
+ teamName: String? = nil,
5116
+ storageMode: String = "git",
5117
+ gitUrl: String,
5118
+ gitBranch: String = "master",
5119
+ gitFullName: String? = nil,
5120
+ gitUserEmail: String? = nil,
5121
+ shallowClone: Bool = false,
5122
+ cloneBranchDirectly: Bool = false,
5123
+ gitBasicAuthorization: String? = nil,
5124
+ gitBearerAuthorization: String? = nil,
5125
+ gitPrivateKey: String? = nil,
5126
+ googleCloudBucketName: String? = nil,
5127
+ googleCloudKeysFile: String? = nil,
5128
+ googleCloudProjectId: String? = nil,
5129
+ s3Region: String? = nil,
5130
+ s3AccessKey: String? = nil,
5131
+ s3SecretAccessKey: String? = nil,
5132
+ s3Bucket: String? = nil,
5133
+ s3ObjectPrefix: String? = nil,
5134
+ keychainName: String = "login.keychain",
5135
+ keychainPassword: String? = nil,
5136
+ force: Bool = false,
5137
+ forceForNewDevices: Bool = false,
5138
+ skipConfirmation: Bool = false,
5139
+ skipDocs: Bool = false,
5140
+ platform: String = "ios",
5141
+ deriveCatalystAppIdentifier: Bool = false,
5142
+ templateName: String? = nil,
5143
+ profileName: String? = nil,
5144
+ failOnNameTaken: Bool = false,
5145
+ skipCertificateMatching: Bool = false,
5146
+ outputPath: String? = nil,
5147
+ skipSetPartitionList: Bool = false,
5148
+ verbose: Bool = false)
5149
+ {
5150
+ let command = RubyCommand(commandID: "", methodName: "match_nuke", className: nil, args: [RubyCommand.Argument(name: "type", value: type),
5151
+ RubyCommand.Argument(name: "additional_cert_types", value: additionalCertTypes),
5152
+ RubyCommand.Argument(name: "readonly", value: readonly),
5153
+ RubyCommand.Argument(name: "generate_apple_certs", value: generateAppleCerts),
5154
+ RubyCommand.Argument(name: "skip_provisioning_profiles", value: skipProvisioningProfiles),
5155
+ RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
5156
+ RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
5157
+ RubyCommand.Argument(name: "api_key", value: apiKey),
5158
+ RubyCommand.Argument(name: "username", value: username),
5159
+ RubyCommand.Argument(name: "team_id", value: teamId),
5160
+ RubyCommand.Argument(name: "team_name", value: teamName),
5161
+ RubyCommand.Argument(name: "storage_mode", value: storageMode),
5162
+ RubyCommand.Argument(name: "git_url", value: gitUrl),
5163
+ RubyCommand.Argument(name: "git_branch", value: gitBranch),
5164
+ RubyCommand.Argument(name: "git_full_name", value: gitFullName),
5165
+ RubyCommand.Argument(name: "git_user_email", value: gitUserEmail),
5166
+ RubyCommand.Argument(name: "shallow_clone", value: shallowClone),
5167
+ RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
5168
+ RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
5169
+ RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
5170
+ RubyCommand.Argument(name: "git_private_key", value: gitPrivateKey),
5171
+ RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
5172
+ RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
5173
+ RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
5174
+ RubyCommand.Argument(name: "s3_region", value: s3Region),
5175
+ RubyCommand.Argument(name: "s3_access_key", value: s3AccessKey),
5176
+ RubyCommand.Argument(name: "s3_secret_access_key", value: s3SecretAccessKey),
5177
+ RubyCommand.Argument(name: "s3_bucket", value: s3Bucket),
5178
+ RubyCommand.Argument(name: "s3_object_prefix", value: s3ObjectPrefix),
5179
+ RubyCommand.Argument(name: "keychain_name", value: keychainName),
5180
+ RubyCommand.Argument(name: "keychain_password", value: keychainPassword),
5181
+ RubyCommand.Argument(name: "force", value: force),
5182
+ RubyCommand.Argument(name: "force_for_new_devices", value: forceForNewDevices),
5183
+ RubyCommand.Argument(name: "skip_confirmation", value: skipConfirmation),
5184
+ RubyCommand.Argument(name: "skip_docs", value: skipDocs),
5185
+ RubyCommand.Argument(name: "platform", value: platform),
5186
+ RubyCommand.Argument(name: "derive_catalyst_app_identifier", value: deriveCatalystAppIdentifier),
5187
+ RubyCommand.Argument(name: "template_name", value: templateName),
5188
+ RubyCommand.Argument(name: "profile_name", value: profileName),
5189
+ RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken),
5190
+ RubyCommand.Argument(name: "skip_certificate_matching", value: skipCertificateMatching),
5191
+ RubyCommand.Argument(name: "output_path", value: outputPath),
5192
+ RubyCommand.Argument(name: "skip_set_partition_list", value: skipSetPartitionList),
5193
+ RubyCommand.Argument(name: "verbose", value: verbose)])
5194
+ _ = runner.executeCommand(command)
5195
+ }
5196
+
5050
5197
  /**
5051
5198
  Verifies the minimum fastlane version required
5052
5199
 
@@ -5469,7 +5616,7 @@ public func pem(development: Bool = false,
5469
5616
  */
5470
5617
  public func pilot(apiKeyPath: String? = nil,
5471
5618
  apiKey: [String: Any]? = nil,
5472
- username: String,
5619
+ username: String? = nil,
5473
5620
  appIdentifier: String? = nil,
5474
5621
  appPlatform: String = "ios",
5475
5622
  appleId: String? = nil,
@@ -5734,17 +5881,17 @@ public func podioItem(clientId: String,
5734
5881
 
5735
5882
  More information: https://fastlane.tools/precheck
5736
5883
  */
5737
- public func precheck(apiKeyPath: Any? = precheckfile.apiKeyPath,
5738
- apiKey: [String: Any]? = precheckfile.apiKey,
5739
- appIdentifier: Any = precheckfile.appIdentifier,
5740
- username: Any = precheckfile.username,
5741
- teamId: Any? = precheckfile.teamId,
5742
- teamName: Any? = precheckfile.teamName,
5743
- platform: Any = precheckfile.platform,
5744
- defaultRuleLevel: Any = precheckfile.defaultRuleLevel,
5745
- includeInAppPurchases: Bool = precheckfile.includeInAppPurchases,
5746
- useLive: Bool = precheckfile.useLive,
5747
- freeStuffInIap: Any? = precheckfile.freeStuffInIap)
5884
+ @discardableResult public func precheck(apiKeyPath: Any? = precheckfile.apiKeyPath,
5885
+ apiKey: [String: Any]? = precheckfile.apiKey,
5886
+ appIdentifier: Any = precheckfile.appIdentifier,
5887
+ username: Any? = precheckfile.username,
5888
+ teamId: Any? = precheckfile.teamId,
5889
+ teamName: Any? = precheckfile.teamName,
5890
+ platform: Any = precheckfile.platform,
5891
+ defaultRuleLevel: Any = precheckfile.defaultRuleLevel,
5892
+ includeInAppPurchases: Bool = precheckfile.includeInAppPurchases,
5893
+ useLive: Bool = precheckfile.useLive,
5894
+ freeStuffInIap: Any? = precheckfile.freeStuffInIap) -> Bool
5748
5895
  {
5749
5896
  let command = RubyCommand(commandID: "", methodName: "precheck", className: nil, args: [RubyCommand.Argument(name: "api_key_path", value: apiKeyPath),
5750
5897
  RubyCommand.Argument(name: "api_key", value: apiKey),
@@ -5757,7 +5904,7 @@ public func precheck(apiKeyPath: Any? = precheckfile.apiKeyPath,
5757
5904
  RubyCommand.Argument(name: "include_in_app_purchases", value: includeInAppPurchases),
5758
5905
  RubyCommand.Argument(name: "use_live", value: useLive),
5759
5906
  RubyCommand.Argument(name: "free_stuff_in_iap", value: freeStuffInIap)])
5760
- _ = runner.executeCommand(command)
5907
+ return parseBool(fromString: runner.executeCommand(command))
5761
5908
  }
5762
5909
 
5763
5910
  /**
@@ -7127,29 +7274,29 @@ public func setupTravis(force: Bool = false) {
7127
7274
 
7128
7275
  **Note**: It is recommended to use [match](https://docs.fastlane.tools/actions/match/) according to the [codesigning.guide](https://codesigning.guide) for generating and maintaining your provisioning profiles. Use _sigh_ directly only if you want full control over what's going on and know more about codesigning.
7129
7276
  */
7130
- public func sigh(adhoc: Bool = false,
7131
- developerId: Bool = false,
7132
- development: Bool = false,
7133
- skipInstall: Bool = false,
7134
- force: Bool = false,
7135
- appIdentifier: String,
7136
- apiKeyPath: String? = nil,
7137
- apiKey: [String: Any]? = nil,
7138
- username: String,
7139
- teamId: String? = nil,
7140
- teamName: String? = nil,
7141
- provisioningName: String? = nil,
7142
- ignoreProfilesWithDifferentName: Bool = false,
7143
- outputPath: String = ".",
7144
- certId: String? = nil,
7145
- certOwnerName: String? = nil,
7146
- filename: String? = nil,
7147
- skipFetchProfiles: Bool = false,
7148
- skipCertificateVerification: Bool = false,
7149
- platform: Any = "ios",
7150
- readonly: Bool = false,
7151
- templateName: String? = nil,
7152
- failOnNameTaken: Bool = false)
7277
+ @discardableResult public func sigh(adhoc: Bool = false,
7278
+ developerId: Bool = false,
7279
+ development: Bool = false,
7280
+ skipInstall: Bool = false,
7281
+ force: Bool = false,
7282
+ appIdentifier: String,
7283
+ apiKeyPath: String? = nil,
7284
+ apiKey: [String: Any]? = nil,
7285
+ username: String? = nil,
7286
+ teamId: String? = nil,
7287
+ teamName: String? = nil,
7288
+ provisioningName: String? = nil,
7289
+ ignoreProfilesWithDifferentName: Bool = false,
7290
+ outputPath: String = ".",
7291
+ certId: String? = nil,
7292
+ certOwnerName: String? = nil,
7293
+ filename: String? = nil,
7294
+ skipFetchProfiles: Bool = false,
7295
+ skipCertificateVerification: Bool = false,
7296
+ platform: Any = "ios",
7297
+ readonly: Bool = false,
7298
+ templateName: String? = nil,
7299
+ failOnNameTaken: Bool = false) -> String
7153
7300
  {
7154
7301
  let command = RubyCommand(commandID: "", methodName: "sigh", className: nil, args: [RubyCommand.Argument(name: "adhoc", value: adhoc),
7155
7302
  RubyCommand.Argument(name: "developer_id", value: developerId),
@@ -7174,7 +7321,7 @@ public func sigh(adhoc: Bool = false,
7174
7321
  RubyCommand.Argument(name: "readonly", value: readonly),
7175
7322
  RubyCommand.Argument(name: "template_name", value: templateName),
7176
7323
  RubyCommand.Argument(name: "fail_on_name_taken", value: failOnNameTaken)])
7177
- _ = runner.executeCommand(command)
7324
+ return runner.executeCommand(command)
7178
7325
  }
7179
7326
 
7180
7327
  /**
@@ -7605,18 +7752,18 @@ public func sonar(projectConfigurationPath: String? = nil,
7605
7752
 
7606
7753
  - returns: The array of Spaceship logs
7607
7754
  */
7608
- public func spaceshipLogs(latest: Bool = true,
7609
- printContents: Bool = false,
7610
- printPaths: Bool = false,
7611
- copyToPath: String? = nil,
7612
- copyToClipboard: Bool = false)
7755
+ @discardableResult public func spaceshipLogs(latest: Bool = true,
7756
+ printContents: Bool = false,
7757
+ printPaths: Bool = false,
7758
+ copyToPath: String? = nil,
7759
+ copyToClipboard: Bool = false) -> [String]
7613
7760
  {
7614
7761
  let command = RubyCommand(commandID: "", methodName: "spaceship_logs", className: nil, args: [RubyCommand.Argument(name: "latest", value: latest),
7615
7762
  RubyCommand.Argument(name: "print_contents", value: printContents),
7616
7763
  RubyCommand.Argument(name: "print_paths", value: printPaths),
7617
7764
  RubyCommand.Argument(name: "copy_to_path", value: copyToPath),
7618
7765
  RubyCommand.Argument(name: "copy_to_clipboard", value: copyToClipboard)])
7619
- _ = runner.executeCommand(command)
7766
+ return parseArray(fromString: runner.executeCommand(command))
7620
7767
  }
7621
7768
 
7622
7769
  /**
@@ -8158,7 +8305,7 @@ public func testfairy(apiKey: String,
8158
8305
  */
8159
8306
  public func testflight(apiKeyPath: String? = nil,
8160
8307
  apiKey: [String: Any]? = nil,
8161
- username: String,
8308
+ username: String? = nil,
8162
8309
  appIdentifier: String? = nil,
8163
8310
  appPlatform: String = "ios",
8164
8311
  appleId: String? = nil,
@@ -8820,7 +8967,7 @@ public func uploadSymbolsToSentry(apiHost: String = "https://app.getsentry.com/a
8820
8967
  */
8821
8968
  public func uploadToAppStore(apiKeyPath: String? = nil,
8822
8969
  apiKey: [String: Any]? = nil,
8823
- username: String,
8970
+ username: String? = nil,
8824
8971
  appIdentifier: String? = nil,
8825
8972
  appVersion: String? = nil,
8826
8973
  ipa: String? = nil,
@@ -9151,7 +9298,7 @@ public func uploadToPlayStoreInternalAppSharing(packageName: String,
9151
9298
  */
9152
9299
  public func uploadToTestflight(apiKeyPath: String? = nil,
9153
9300
  apiKey: [String: Any]? = nil,
9154
- username: String,
9301
+ username: String? = nil,
9155
9302
  appIdentifier: String? = nil,
9156
9303
  appPlatform: String = "ios",
9157
9304
  appleId: String? = nil,
@@ -9512,7 +9659,7 @@ public func xcov(workspace: String? = nil,
9512
9659
  htmlReport: Bool = true,
9513
9660
  markdownReport: Bool = false,
9514
9661
  jsonReport: Bool = false,
9515
- minimumCoveragePercentage: Float = 0,
9662
+ minimumCoveragePercentage: Float = 0.0,
9516
9663
  slackUrl: String? = nil,
9517
9664
  slackChannel: String? = nil,
9518
9665
  skipSlack: Bool = false,
@@ -9674,4 +9821,4 @@ public let snapshotfile = Snapshotfile()
9674
9821
 
9675
9822
  // Please don't remove the lines below
9676
9823
  // They are used to detect outdated files
9677
- // FastlaneRunnerAPIVersion [0.9.114]
9824
+ // FastlaneRunnerAPIVersion [0.9.115]