fastlane 0.11.0 → 0.12.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 (49) hide show
  1. checksums.yaml +4 -4
  2. data/lib/assets/FastfileTemplate +3 -0
  3. data/lib/fastlane.rb +1 -0
  4. data/lib/fastlane/action.rb +5 -0
  5. data/lib/fastlane/action_collector.rb +3 -1
  6. data/lib/fastlane/actions/actions_helper.rb +5 -0
  7. data/lib/fastlane/actions/add_git_tag.rb +21 -15
  8. data/lib/fastlane/actions/cert.rb +2 -2
  9. data/lib/fastlane/actions/clean_build_artifacts.rb +1 -1
  10. data/lib/fastlane/actions/commit_version_bump.rb +15 -8
  11. data/lib/fastlane/actions/crashlytics.rb +51 -66
  12. data/lib/fastlane/actions/deliver.rb +32 -15
  13. data/lib/fastlane/actions/deploygate.rb +29 -22
  14. data/lib/fastlane/actions/ensure_git_status_clean.rb +1 -1
  15. data/lib/fastlane/actions/frameit.rb +2 -2
  16. data/lib/fastlane/actions/gcovr.rb +2 -2
  17. data/lib/fastlane/actions/hipchat.rb +36 -23
  18. data/lib/fastlane/actions/hockey.rb +37 -23
  19. data/lib/fastlane/actions/increment_build_number.rb +14 -19
  20. data/lib/fastlane/actions/increment_version_number.rb +42 -44
  21. data/lib/fastlane/actions/install_carthage.rb +1 -1
  22. data/lib/fastlane/actions/install_cocapods.rb +1 -1
  23. data/lib/fastlane/actions/ipa.rb +69 -47
  24. data/lib/fastlane/actions/notify.rb +1 -1
  25. data/lib/fastlane/actions/pem.rb +1 -1
  26. data/lib/fastlane/actions/produce.rb +3 -4
  27. data/lib/fastlane/actions/push_to_git_remote.rb +24 -14
  28. data/lib/fastlane/actions/register_devices.rb +23 -11
  29. data/lib/fastlane/actions/reset_git_repo.rb +13 -5
  30. data/lib/fastlane/actions/resign.rb +19 -16
  31. data/lib/fastlane/actions/s3.rb +56 -37
  32. data/lib/fastlane/actions/sigh.rb +1 -1
  33. data/lib/fastlane/actions/slack.rb +31 -13
  34. data/lib/fastlane/actions/snapshot.rb +13 -6
  35. data/lib/fastlane/actions/team_id.rb +1 -1
  36. data/lib/fastlane/actions/team_name.rb +1 -1
  37. data/lib/fastlane/actions/testmunk.rb +28 -14
  38. data/lib/fastlane/actions/typetalk.rb +1 -1
  39. data/lib/fastlane/actions/update_fastlane.rb +115 -0
  40. data/lib/fastlane/actions/update_project_code_signing.rb +22 -7
  41. data/lib/fastlane/actions/xcode_select.rb +1 -1
  42. data/lib/fastlane/actions/xcodebuild.rb +56 -12
  43. data/lib/fastlane/actions_list.rb +2 -2
  44. data/lib/fastlane/configuration_helper.rb +28 -0
  45. data/lib/fastlane/fast_file.rb +17 -0
  46. data/lib/fastlane/fastlane_folder.rb +3 -3
  47. data/lib/fastlane/setup.rb +11 -5
  48. data/lib/fastlane/version.rb +1 -1
  49. metadata +7 -5
@@ -6,7 +6,7 @@ module Fastlane
6
6
 
7
7
  # Raises an exception and stop the lane execution if the repo is not in a clean state
8
8
  class EnsureGitStatusCleanAction < Action
9
- def self.run(_params)
9
+ def self.run(params)
10
10
  repo_clean = `git status --porcelain`.empty?
11
11
 
12
12
  if repo_clean
@@ -7,9 +7,9 @@ module Fastlane
7
7
  require 'frameit'
8
8
 
9
9
  begin
10
- FastlaneCore::UpdateChecker.start_looking_for_update('frameit')
10
+ FastlaneCore::UpdateChecker.start_looking_for_update('frameit') unless Helper.is_test?
11
11
  color = Frameit::Editor::Color::BLACK
12
- color = Frameit::Editor::Color::SILVER if [:silver, :white].include?(params.first)
12
+ color = Frameit::Editor::Color::SILVER if [:silver, :white].include?(params)
13
13
 
14
14
  screenshots_folder = Actions.lane_context[SharedValues::SNAPSHOT_SCREENSHOTS_PATH]
15
15
  screenshots_folder ||= FastlaneFolder.path
@@ -60,8 +60,8 @@ module Fastlane
60
60
  gcovr_args = nil
61
61
 
62
62
  # Allows for a whole variety of configurations
63
- if params.first.is_a? Hash
64
- params_hash = params.first
63
+ if params.is_a? Hash
64
+ params_hash = params
65
65
 
66
66
  # Check if an output path was given
67
67
  if params_hash.has_key? :output
@@ -4,26 +4,12 @@ module Fastlane
4
4
  end
5
5
 
6
6
  class HipchatAction < Action
7
- def self.run(params)
8
- options = { message: '',
9
- success: true,
10
- channel: nil
11
- }.merge(params.first || {})
12
-
7
+ def self.run(options)
13
8
  require 'net/http'
14
9
  require 'uri'
15
10
 
16
- api_token = ENV['HIPCHAT_API_TOKEN']
17
- api_version = ENV['HIPCHAT_API_VERSION']
18
-
19
- unless api_token
20
- Helper.log.fatal "Please add 'ENV[\"HIPCHAT_API_TOKEN\"] = \"your token\"' to your Fastfile's `before_all` section.".red
21
- raise 'No HIPCHAT_API_TOKEN given.'.red
22
- end
23
- if api_version.nil? || ![1, 2].include?(api_version[0].to_i)
24
- Helper.log.fatal "Please add 'ENV[\"HIPCHAT_API_VERSION\"] = \"1 or 2\"' to your Fastfile's `before_all` section.".red
25
- raise 'No HIPCHAT_API_VERSION given.'.red
26
- end
11
+ api_token = options[:api_token]
12
+ api_version = options[:version]
27
13
 
28
14
  channel = options[:channel]
29
15
  color = (options[:success] ? 'green' : 'red')
@@ -94,12 +80,39 @@ module Fastlane
94
80
 
95
81
  def self.available_options
96
82
  [
97
- ['', 'Hipchat API Token', 'HIPCHAT_API_TOKEN'],
98
- ['', 'Version of the Hipchat API. Must be 1 or 2', 'HIPCHAT_API_VERSION'],
99
- ['message', 'The message to post on HipChat'],
100
- ['channel', 'The room or @username'],
101
- ['success', 'Is this a success message?'],
102
- ]
83
+ FastlaneCore::ConfigItem.new(key: :message,
84
+ env_name: "FL_HIPCHAT_MESSAGE",
85
+ description: "The message to post on HipChat",
86
+ default_value: ''),
87
+ FastlaneCore::ConfigItem.new(key: :channel,
88
+ env_name: "FL_HIPCHAT_CHANNEL",
89
+ description: "The room or @username",
90
+ optional: true),
91
+ FastlaneCore::ConfigItem.new(key: :api_token,
92
+ env_name: "HIPCHAT_API_TOKEN",
93
+ description: "Hipchat API Token",
94
+ verify_block: Proc.new do |value|
95
+ unless value.to_s.length > 0
96
+ Helper.log.fatal "Please add 'ENV[\"HIPCHAT_API_TOKEN\"] = \"your token\"' to your Fastfile's `before_all` section.".red
97
+ raise 'No HIPCHAT_API_TOKEN given.'.red
98
+ end
99
+ end),
100
+ FastlaneCore::ConfigItem.new(key: :success,
101
+ env_name: "FL_HIPCHAT_SUCCESS",
102
+ description: "Was this build successful? (true/false)",
103
+ optional: true,
104
+ default_value: true,
105
+ is_string: false),
106
+ FastlaneCore::ConfigItem.new(key: :version,
107
+ env_name: "HIPCHAT_API_VERSION",
108
+ description: "Version of the Hipchat API. Must be 1 or 2",
109
+ verify_block: Proc.new do |value|
110
+ if api_version.nil? || ![1, 2].include?(api_version[0].to_i)
111
+ Helper.log.fatal "Please add 'ENV[\"HIPCHAT_API_VERSION\"] = \"1 or 2\"' to your Fastfile's `before_all` section.".red
112
+ raise 'No HIPCHAT_API_VERSION given.'.red
113
+ end
114
+ end)
115
+ ]
103
116
  end
104
117
 
105
118
  def self.author
@@ -10,37 +10,25 @@ module Fastlane
10
10
  end
11
11
 
12
12
  class HockeyAction < Action
13
- def self.run(params)
13
+ def self.run(options)
14
14
  # Available options: http://support.hockeyapp.net/kb/api/api-versions#upload-version
15
- options = {
16
- notes: 'No changelog given',
17
- status: 2,
18
- notify: 1
19
- }.merge(params.first)
20
-
21
- options[:ipa] ||= Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
22
- options[:dsym] ||= Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH]
23
15
 
24
16
  require 'shenzhen'
25
17
  require 'shenzhen/plugins/hockeyapp'
26
18
 
27
- raise "No API Token for Hockey given, pass using `api_token: 'token'`. Open https://rink.hockeyapp.net/manage/auth_tokens to get one".red unless options[:api_token].to_s.length > 0
28
- raise "No IPA file given or found, pass using `ipa: 'path.ipa'`".red unless options[:ipa]
29
- raise "IPA file on path '#{File.expand_path(options[:ipa])}' not found".red unless File.exist?(options[:ipa])
30
-
31
19
  if options[:dsym]
32
- options[:dsym_filename] = options[:dsym]
20
+ dsym_filename = options[:dsym]
33
21
  else
34
22
  dsym_path = options[:ipa].gsub('ipa', 'app.dSYM.zip')
35
23
  if File.exist?(dsym_path)
36
- options[:dsym_filename] = dsym_path
24
+ dsym_filename = dsym_path
37
25
  else
38
26
  Helper.log.info "Symbols not found on path #{File.expand_path(dsym_path)}. Crashes won't be symbolicated properly".yellow
39
27
  end
40
28
  end
41
29
 
42
- raise "Symbols on path '#{File.expand_path(options[:dsym_filename])}' not found".red if (options[:dsym_filename] &&
43
- !File.exist?(options[:dsym_filename]))
30
+ raise "Symbols on path '#{File.expand_path(dsym_filename)}' not found".red if (dsym_filename &&
31
+ !File.exist?(dsym_filename))
44
32
 
45
33
  Helper.log.info 'Starting with ipa upload to HockeyApp... this could take some time.'.green
46
34
 
@@ -70,12 +58,38 @@ module Fastlane
70
58
 
71
59
  def self.available_options
72
60
  [
73
- ['api_token', 'API Token for Hockey Access'],
74
- ['ipa', 'Path to the ipa file. Optional if you use the `ipa` or `xcodebuild` action'],
75
- ['notes', 'The changelog for this build'],
76
- ['dsym', 'Path to the dsym file. Optional if you use the `ipa` or `xcodebuild` action'],
77
- ['status', 'Download status: 1 = No user can download; 2 = Available for download'],
78
- ['notify', 'Notify testers? 1 for yes'],
61
+ FastlaneCore::ConfigItem.new(key: :api_token,
62
+ env_name: "FL_HOCKEY_API_TOKEN",
63
+ description: "API Token for Hockey Access",
64
+ verify_block: Proc.new do |value|
65
+ raise "No API token for Hockey given, pass using `api_token: 'token'`".red unless (value and not value.empty?)
66
+ end),
67
+ FastlaneCore::ConfigItem.new(key: :ipa,
68
+ env_name: "FL_HOCKEY_IPA",
69
+ description: "Path to your IPA file. Optional if you use the `ipa` or `xcodebuild` action",
70
+ default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH],
71
+ verify_block: Proc.new do |value|
72
+ raise "No IPA file given or found, pass using `ipa: 'path/app.ipa'`".red unless File.exists?(value)
73
+ end),
74
+ FastlaneCore::ConfigItem.new(key: :dsym,
75
+ env_name: "FL_HOCKEY_DSYM",
76
+ description: "Path to your DSYM file",
77
+ optional: true,
78
+ verify_block: Proc.new do |value|
79
+ # validation is done in the action
80
+ end),
81
+ FastlaneCore::ConfigItem.new(key: :notes,
82
+ env_name: "FL_HOCKEY_NOTES",
83
+ description: "Beta Notes",
84
+ default_value: "No changelog given"),
85
+ FastlaneCore::ConfigItem.new(key: :notify,
86
+ env_name: "FL_HOCKEY_NOTIFY",
87
+ description: "Notify testers? 1 for yes",
88
+ default_value: 1),
89
+ FastlaneCore::ConfigItem.new(key: :status,
90
+ env_name: "FL_HOCKEY_STATUS",
91
+ description: "Download status: 1 = No user can download; 2 = Available for download",
92
+ default_value: "2")
79
93
  ]
80
94
  end
81
95
 
@@ -17,22 +17,7 @@ module Fastlane
17
17
  # Attention: This is NOT the version number - but the build number
18
18
 
19
19
  begin
20
- first_param = (params.first rescue nil)
21
-
22
- case first_param
23
- when NilClass
24
- custom_number = nil
25
- folder = '.'
26
- when Fixnum
27
- custom_number = first_param
28
- folder = '.'
29
- when String
30
- custom_number = first_param
31
- folder = '.'
32
- when Hash
33
- custom_number = first_param[:build_number]
34
- folder = first_param[:xcodeproj] ? File.join('.', first_param[:xcodeproj], '..') : '.'
35
- end
20
+ folder = params[:xcodeproj] ? File.join('.', params[:xcodeproj], '..') : '.'
36
21
 
37
22
  command_prefix = [
38
23
  'cd',
@@ -43,7 +28,7 @@ module Fastlane
43
28
  command = [
44
29
  command_prefix,
45
30
  'agvtool',
46
- custom_number ? "new-version -all #{custom_number}" : 'next-version -all'
31
+ params[:build_number] ? "new-version -all #{params[:build_number]}" : 'next-version -all'
47
32
  ].join(' ')
48
33
 
49
34
  if Helper.test?
@@ -69,8 +54,18 @@ module Fastlane
69
54
 
70
55
  def self.available_options
71
56
  [
72
- ['build_number', 'specify specific build number (optional, omitting it increments by one)'],
73
- ['xcodeproj', 'optional, you must specify the path to your main Xcode project if it is not in the project root directory']
57
+ FastlaneCore::ConfigItem.new(key: :build_number,
58
+ env_name: "FL_BUILD_NUMBER_BUILD_NUMBER",
59
+ description: "Change to a specific version",
60
+ optional: true,
61
+ is_string: false),
62
+ FastlaneCore::ConfigItem.new(key: :xcodeproj,
63
+ env_name: "FL_BUILD_NUMBER_PROJECT",
64
+ description: "optional, you must specify the path to your main Xcode project if it is not in the project root directory",
65
+ verify_block: Proc.new do |value|
66
+ raise "Please pass the path to the project, not the workspace".red if value.include?"workspace"
67
+ raise "Could not find Xcode project".red if (not File.exists?(value) and not Helper.is_test?)
68
+ end)
74
69
  ]
75
70
  end
76
71
 
@@ -16,34 +16,8 @@ module Fastlane
16
16
  # https://developer.apple.com/library/ios/qa/qa1827/_index.html
17
17
 
18
18
  begin
19
- first_param = (params.first rescue nil)
20
19
  folder = '.' #Current folder is the default folder
21
20
 
22
- case first_param
23
- when NilClass
24
- release_task = 'patch' #Patch is the default action
25
- when String
26
- release_task = first_param
27
- when Hash
28
- release_task = first_param[:release_task] ? first_param[:release_task] : "patch"
29
- folder = first_param[:xcodeproj] ? File.join('.', first_param[:xcodeproj], '..') : '.'
30
- end
31
-
32
- # Verify integrity
33
- case release_task
34
- when /\d.\d.\d/
35
- specific_version_number = release_task
36
- release_task = 'specific_version'
37
- when "patch"
38
- release_task = 'patch'
39
- when "minor"
40
- release_task = 'minor'
41
- when "major"
42
- release_task = "major"
43
- else
44
- raise 'Invalid parameter #{release_task}'
45
- end
46
-
47
21
  command_prefix = [
48
22
  'cd',
49
23
  File.expand_path(folder).shellescape,
@@ -55,7 +29,7 @@ module Fastlane
55
29
  else
56
30
  current_version = `#{command_prefix} agvtool what-marketing-version -terse1`.split("\n").last
57
31
  raise 'Your current version (#{current_version}) does not respect the format A.B.C' unless current_version.match(/\d.\d.\d/)
58
- #Check if CFBundleShortVersionString is the same for each occurrence
32
+ # Check if CFBundleShortVersionString is the same for each occurrence
59
33
  allBundles = `#{command_prefix} agvtool what-marketing-version -terse`.split("\n")
60
34
  allBundles.each do |bundle|
61
35
  raise 'Ensure all you CFBundleShortVersionString are equals in your project ' unless bundle.end_with? "=#{current_version}"
@@ -63,21 +37,26 @@ module Fastlane
63
37
  version_array = current_version.split(".").map(&:to_i)
64
38
  end
65
39
 
66
- case release_task
67
- when "patch"
68
- version_array[2] = version_array[2]+1
69
- next_version_number = version_array.join(".")
70
- when "minor"
71
- version_array[1] = version_array[1]+1
72
- version_array[2] = version_array[2]=0
73
- next_version_number = version_array.join(".")
74
- when "major"
75
- version_array[0] = version_array[0]+1
76
- version_array[1] = version_array[1]=0
77
- version_array[1] = version_array[2]=0
78
- next_version_number = version_array.join(".")
79
- when "specific_version"
80
- next_version_number = specific_version_number
40
+ if params[:version_number]
41
+ # Specific version
42
+ next_version_number = params[:version_number]
43
+ else
44
+ case params[:bump_type]
45
+ when "patch"
46
+ version_array[2] = version_array[2] + 1
47
+ next_version_number = version_array.join(".")
48
+ when "minor"
49
+ version_array[1] = version_array[1] + 1
50
+ version_array[2] = version_array[2] = 0
51
+ next_version_number = version_array.join(".")
52
+ when "major"
53
+ version_array[0] = version_array[0] + 1
54
+ version_array[1] = version_array[1] = 0
55
+ version_array[1] = version_array[2] = 0
56
+ next_version_number = version_array.join(".")
57
+ when "specific_version"
58
+ next_version_number = specific_version_number
59
+ end
81
60
  end
82
61
 
83
62
  command = [
@@ -112,8 +91,27 @@ module Fastlane
112
91
 
113
92
  def self.available_options
114
93
  [
115
- ['build_number', 'specify specific build number (optional, omitting it increments by one)'],
116
- ['xcodeproj', 'optional, you must specify the path to your main Xcode project if it is not in the project root directory']
94
+ FastlaneCore::ConfigItem.new(key: :bump_type,
95
+ env_name: "FL_VERSION_NUMBER_BUMP_TYPE",
96
+ description: "The type of this version bump. Available: patch, minor, major",
97
+ default_value: "patch",
98
+ verify_block: Proc.new do |value|
99
+ raise "Available values are 'patch', 'minor' and 'major'" unless ['patch', 'minor', 'major'].include?value
100
+ end),
101
+ FastlaneCore::ConfigItem.new(key: :version_number,
102
+ env_name: "FL_VERSION_NUMBER_VERSION_NUMBER",
103
+ description: "Change to a specific version. This will replace the bump type value",
104
+ optional: true,
105
+ verify_block: Proc.new do |value|
106
+ raise "Invalid version '#{value}' given. Must be x.y.z".red unless value.split(".").count == 3
107
+ end),
108
+ FastlaneCore::ConfigItem.new(key: :xcodeproj,
109
+ env_name: "FL_VERSION_NUMBER_PROJECT",
110
+ description: "optional, you must specify the path to your main Xcode project if it is not in the project root directory",
111
+ verify_block: Proc.new do |value|
112
+ raise "Please pass the path to the project, not the workspace".red if value.include?"workspace"
113
+ raise "Could not find Xcode project".red unless File.exists?(value)
114
+ end)
117
115
  ]
118
116
  end
119
117
 
@@ -1,7 +1,7 @@
1
1
  module Fastlane
2
2
  module Actions
3
3
  class CarthageAction < Action
4
- def self.run(_params)
4
+ def self.run(params)
5
5
  Actions.sh('carthage bootstrap')
6
6
  end
7
7
 
@@ -1,7 +1,7 @@
1
1
  module Fastlane
2
2
  module Actions
3
3
  class CocoapodsAction < Action
4
- def self.run(_params)
4
+ def self.run(params)
5
5
  Actions.sh('pod install')
6
6
  end
7
7
 
@@ -5,20 +5,6 @@ module Fastlane
5
5
  DSYM_OUTPUT_PATH = :DSYM_OUTPUT_PATH
6
6
  end
7
7
 
8
- # -w, --workspace WORKSPACE Workspace (.xcworkspace) file to use to build app (automatically detected in current directory)
9
- # -p, --project PROJECT Project (.xcodeproj) file to use to build app (automatically detected in current directory, overridden by --workspace option, if passed)
10
- # -c, --configuration CONFIGURATION Configuration used to build
11
- # -s, --scheme SCHEME Scheme used to build app
12
- # --xcconfig XCCONFIG use an extra XCCONFIG file to build the app
13
- # --xcargs XCARGS pass additional arguments to xcodebuild when building the app. Be sure to quote multiple args.
14
- # --[no-]clean Clean project before building
15
- # --[no-]archive Archive project after building
16
- # -d, --destination DESTINATION Destination. Defaults to current directory
17
- # -m, --embed PROVISION Sign .ipa file with .mobileprovision
18
- # -i, --identity IDENTITY Identity to be used along with --embed
19
- # --sdk SDK use SDK as the name or path of the base SDK when building the project
20
- # --ipa IPA specify the name of the .ipa file to generate (including file extension)
21
-
22
8
  ARGS_MAP = {
23
9
  workspace: '-w',
24
10
  project: '-p',
@@ -31,6 +17,7 @@ module Fastlane
31
17
  identity: '-i',
32
18
  sdk: '--sdk',
33
19
  ipa: '--ipa',
20
+ xcconfig: '--xcconfig',
34
21
  xcargs: '--xcargs',
35
22
  }
36
23
 
@@ -48,24 +35,15 @@ module Fastlane
48
35
  # The output directory of the IPA and dSYM
49
36
  absolute_dest_directory = nil
50
37
 
51
- params[0] ||= {} # default to hash to fill in default values
52
-
53
- # Allows for a whole variety of configurations
54
- if params.first.is_a? Hash
55
-
56
- # Used to get the final path of the IPA and dSYM
57
- if dest = params.first[:destination]
58
- absolute_dest_directory = Dir.glob(dest).map(&File.method(:realpath)).first
59
- end
60
-
61
- # Maps nice developer build parameters to Shenzhen args
62
- build_args = params_to_build_args(params.first)
63
-
64
- else
65
- build_args = params
38
+ # Used to get the final path of the IPA and dSYM
39
+ if dest = params[:destination]
40
+ absolute_dest_directory = Dir.glob(dest).map(&File.method(:realpath)).first
66
41
  end
67
42
 
68
- unless (params.first[:scheme] rescue nil)
43
+ # Maps nice developer build parameters to Shenzhen args
44
+ build_args = params_to_build_args(params)
45
+
46
+ unless (params[:scheme] rescue nil)
69
47
  Helper.log.warn "You haven't specified a scheme. This might cause problems. If you can't see any outupt, please pass a `scheme`"
70
48
  end
71
49
 
@@ -96,10 +74,10 @@ module Fastlane
96
74
  ENV[SharedValues::DSYM_OUTPUT_PATH.to_s] = absolute_dsym_path
97
75
  end
98
76
 
99
- def self.params_to_build_args(params)
100
- # Remove nil value params unless :clean or :archive
101
- params = params.delete_if { |k, v| (k != :clean && k != :archive) && v.nil? }
77
+ def self.params_to_build_args(config)
78
+ params = config.values
102
79
 
80
+ params = params.delete_if { |k, v| v.nil? }
103
81
  params = fill_in_default_values(params)
104
82
 
105
83
  # Maps nice developer param names to Shenzhen's `ipa build` arguments
@@ -108,6 +86,8 @@ module Fastlane
108
86
  if args = ARGS_MAP[k]
109
87
  if k == :clean
110
88
  v == true ? '--clean' : '--no-clean'
89
+ elsif k == :archive
90
+ v == true ? '--archive' : nil
111
91
  else
112
92
  value = (v.to_s.length > 0 ? "\"#{v}\"" : '')
113
93
  "#{ARGS_MAP[k]} #{value}".strip
@@ -143,20 +123,62 @@ module Fastlane
143
123
  end
144
124
 
145
125
  def self.available_options
146
- # [
147
- # ['workspace', 'Workspace (.xcworkspace) file to use to build app (automatically detected in current directory)'],
148
- # ['project', 'Project (.xcodeproj) file to use to build app (automatically detected in current directory'],
149
- # ['configuration', 'Configuration used to build'],
150
- # ['scheme', 'Scheme used to build app'],
151
- # ['clean', 'use an extra XCCONFIG file to build the app'],
152
- # ['archive', 'pass additional arguments to xcodebuild when building the app. Be sure to quote multiple args.'],
153
- # ['destination', 'Clean project before building'],
154
- # ['embed', 'Archive project after building'],
155
- # ['identity', 'Destination. Defaults to current directory'],
156
- # ['sdk', 'Sign .ipa file with .mobileprovision'],
157
- # ['ipa', 'Identity to be used along with --embed'],
158
- # ['xcargs', 'specify the name of the .ipa file to generate (including file extension)']
159
- # ]
126
+ [
127
+ FastlaneCore::ConfigItem.new(key: :workspace,
128
+ env_name: "IPA_WORKSPACE",
129
+ description: "WORKSPACE Workspace (.xcworkspace) file to use to build app (automatically detected in current directory)",
130
+ optional: true),
131
+ FastlaneCore::ConfigItem.new(key: :project,
132
+ env_name: "IPA_PROJECT",
133
+ description: "Project (.xcodeproj) file to use to build app (automatically detected in current directory, overridden by --workspace option, if passed)",
134
+ optional: true),
135
+ FastlaneCore::ConfigItem.new(key: :configuration,
136
+ env_name: "IPA_CONFIGURATION",
137
+ description: "Configuration used to build",
138
+ optional: true),
139
+ FastlaneCore::ConfigItem.new(key: :scheme,
140
+ env_name: "IPA_SCHEME",
141
+ description: "Scheme used to build app",
142
+ optional: true),
143
+ FastlaneCore::ConfigItem.new(key: :clean,
144
+ env_name: "IPA_CLEAN",
145
+ description: "Clean project before building",
146
+ optional: true,
147
+ is_string: false),
148
+ FastlaneCore::ConfigItem.new(key: :archive,
149
+ env_name: "IPA_ARCHIVE",
150
+ description: "Archive project after building",
151
+ optional: true,
152
+ is_string: false),
153
+ FastlaneCore::ConfigItem.new(key: :destination,
154
+ env_name: "IPA_DESTINATION",
155
+ description: "Build destination. Defaults to current directory",
156
+ optional: true),
157
+ FastlaneCore::ConfigItem.new(key: :embed,
158
+ env_name: "IPA_EMBED",
159
+ description: "Sign .ipa file with .mobileprovision",
160
+ optional: true),
161
+ FastlaneCore::ConfigItem.new(key: :identity,
162
+ env_name: "IPA_IDENTITY",
163
+ description: "Identity to be used along with --embed",
164
+ optional: true),
165
+ FastlaneCore::ConfigItem.new(key: :sdk,
166
+ env_name: "IPA_SDK",
167
+ description: "Use SDK as the name or path of the base SDK when building the project",
168
+ optional: true),
169
+ FastlaneCore::ConfigItem.new(key: :ipa,
170
+ env_name: "IPA_IPA",
171
+ description: "Specify the name of the .ipa file to generate (including file extension)",
172
+ optional: true),
173
+ FastlaneCore::ConfigItem.new(key: :xcconfig,
174
+ env_name: "IPA_XCCONFIG",
175
+ description: "Use an extra XCCONFIG file to build the app",
176
+ optional: true),
177
+ FastlaneCore::ConfigItem.new(key: :xcargs,
178
+ env_name: "IPA_XCARGS",
179
+ description: "Pass additional arguments to xcodebuild when building the app. Be sure to quote multiple args",
180
+ optional: true),
181
+ ]
160
182
  end
161
183
 
162
184
  def self.output