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
@@ -12,7 +12,7 @@ module Fastlane
12
12
  "Shows a Mac OS X notification"
13
13
  end
14
14
 
15
- def author
15
+ def self.author
16
16
  "champo"
17
17
  end
18
18
 
@@ -13,7 +13,7 @@ module Fastlane
13
13
  values = params.first
14
14
 
15
15
  begin
16
- FastlaneCore::UpdateChecker.start_looking_for_update('pem')
16
+ FastlaneCore::UpdateChecker.start_looking_for_update('pem') unless Helper.is_test?
17
17
 
18
18
  success_block = values[:new_profile]
19
19
  values.delete(:new_profile) # as it's not in the configs
@@ -8,16 +8,15 @@ module Fastlane
8
8
  def self.run(params)
9
9
  require 'produce'
10
10
 
11
- hash = params.first || {}
12
- raise 'Parameter of produce must be a hash'.red unless hash.is_a?(Hash)
11
+ raise 'Parameter of produce must be a hash'.red unless params.is_a?(Hash)
13
12
 
14
- hash.each do |key, value|
13
+ params.each do |key, value|
15
14
  ENV[key.to_s.upcase] = value.to_s
16
15
  end
17
16
 
18
17
  return if Helper.test?
19
18
 
20
- FastlaneCore::UpdateChecker.start_looking_for_update('produce')
19
+ FastlaneCore::UpdateChecker.start_looking_for_update('produce') unless Helper.is_test?
21
20
 
22
21
  begin
23
22
  Dir.chdir(FastlaneFolder.path || Dir.pwd) do
@@ -3,29 +3,26 @@ module Fastlane
3
3
  # Adds a git tag to the current commit
4
4
  class PushToGitRemoteAction < Action
5
5
  def self.run(params)
6
- options = params.first
7
-
8
- remote = (options && options[:remote]) || 'origin'
9
- force = (options && options[:force]) || false
10
- local_branch = (options && (options[:local_branch] || options[:branch])) || Actions.git_branch.gsub(/#{remote}\//, '') || 'master'
11
- remote_branch = (options && options[:remote_branch]) || local_branch
6
+ local_branch = params[:local_branch] || (Actions.git_branch.gsub(/#{params[:remote]}\//, '') rescue nil) || 'master'
7
+ remote_branch = params[:remote_branch] || local_branch
12
8
 
13
9
  # construct our command as an array of components
14
10
  command = [
15
11
  'git',
16
12
  'push',
17
- remote,
13
+ params[:remote],
18
14
  "#{local_branch}:#{remote_branch}",
19
15
  '--tags'
20
16
  ]
21
17
 
22
18
  # optionally add the force component
23
- command << '--force' if force
19
+ command << '--force' if params[:force]
24
20
 
25
21
  # execute our command
26
- puts Actions.sh('pwd')
27
- Actions.sh(command.join(' '))
22
+ Actions.sh('pwd')
23
+ return command.join(' ') if Helper.is_test?
28
24
 
25
+ Actions.sh(command.join(' '))
29
26
  Helper.log.info 'Sucesfully pushed to remote.'
30
27
  end
31
28
 
@@ -35,10 +32,23 @@ module Fastlane
35
32
 
36
33
  def self.available_options
37
34
  [
38
- ['remote', 'The remote to push to. Defaults to `origin`'],
39
- ['branch', 'The local branch to push from. Defaults to the current branch'],
40
- ['branch', 'The remote branch to push to. Defaults to the local branch'],
41
- ['force', 'Force push to remote. Defaults to false']
35
+ FastlaneCore::ConfigItem.new(key: :local_branch,
36
+ env_name: "FL_GIT_PUSH_LOCAL_BRANCH",
37
+ description: "The local branch to push from. Defaults to the current branch",
38
+ optional: true),
39
+ FastlaneCore::ConfigItem.new(key: :remote_branch,
40
+ env_name: "FL_GIT_PUSH_REMOTE_BRANCH",
41
+ description: "The remote branch to push to. Defaults to the local branch",
42
+ optional: true),
43
+ FastlaneCore::ConfigItem.new(key: :force,
44
+ env_name: "FL_PUSH_GIT_FORCE",
45
+ description: "Force push to remote. Defaults to false",
46
+ is_string: false,
47
+ default_value: false),
48
+ FastlaneCore::ConfigItem.new(key: :remote,
49
+ env_name: "FL_GIT_PUSH_REMOTE",
50
+ description: "The remote to push to. Defaults to `origin`",
51
+ default_value: 'origin')
42
52
  ]
43
53
  end
44
54
 
@@ -1,3 +1,5 @@
1
+ require 'credentials_manager'
2
+
1
3
  module Fastlane
2
4
  module Actions
3
5
  class RegisterDevicesAction < Action
@@ -9,17 +11,12 @@ module Fastlane
9
11
 
10
12
  def self.run(params)
11
13
  require 'cupertino/provisioning_portal'
12
- require 'credentials_manager'
13
14
  require 'csv'
14
15
 
15
- params = params.first
16
-
17
- raise 'You must pass valid params to the register_devices action. Please check the readme.'.red if (params.nil? || params.empty?)
18
-
19
16
  devices = params[:devices]
20
17
  devices_file = params[:devices_file]
21
- team_id = params[:team_id] || ENV['CUPERTINO_TEAM_ID'] || ENV['FASTLANE_TEAM_ID']
22
- username = params[:username] || ENV['CUPERTINO_USERNAME']
18
+ team_id = params[:team_id]
19
+ username = params[:username]
23
20
 
24
21
  if devices
25
22
  device_objs = devices.map do |k, v|
@@ -69,10 +66,25 @@ module Fastlane
69
66
 
70
67
  def self.available_options
71
68
  [
72
- ['devices', 'A hash of devices, with the name as key and the UDID as value'],
73
- ['device_file', 'Instead, you can proide a path containing all UDIDs'],
74
- ['team_id', 'optional: Your team ID'],
75
- ['username', 'optional: Your Apple ID']
69
+ FastlaneCore::ConfigItem.new(key: :devices,
70
+ env_name: "FL_REGISTER_DEVICES_DEVICES",
71
+ description: "A hash of devices, with the name as key and the UDID as value",
72
+ is_string: false),
73
+ FastlaneCore::ConfigItem.new(key: :devices_file,
74
+ env_name: "FL_REGISTER_DEVICES_FILE",
75
+ description: "Provide a path to the devices to register",
76
+ optional: true,
77
+ verify_block: Proc.new do |value|
78
+ raise "Could not find file '#{value}'".red unless File.exists?(value)
79
+ end),
80
+ FastlaneCore::ConfigItem.new(key: :team_id,
81
+ env_name: "FASTLANE_TEAM_ID",
82
+ description: "optional: Your team ",
83
+ optional: true),
84
+ FastlaneCore::ConfigItem.new(key: :username,
85
+ env_name: "CUPERTINO_USERNAME",
86
+ description: "optional: Your Apple ID ",
87
+ default_value: CredentialsManager::AppfileConfig.try_fetch_value(:apple_id)),
76
88
  ]
77
89
  end
78
90
 
@@ -3,9 +3,8 @@ module Fastlane
3
3
  # Does a hard reset and clean on the repo
4
4
  class ResetGitRepoAction < Action
5
5
  def self.run(params)
6
- hash = params.first
7
- if params.include?(:force) || hash[:force] || Actions.lane_context[SharedValues::GIT_REPO_WAS_CLEAN_ON_START]
8
- paths = (hash[:files] rescue nil)
6
+ if params[:force] || params[:force] || Actions.lane_context[SharedValues::GIT_REPO_WAS_CLEAN_ON_START]
7
+ paths = (params[:files] rescue nil)
9
8
 
10
9
  if (paths || []).count == 0
11
10
  Actions.sh('git reset --hard HEAD')
@@ -37,8 +36,17 @@ module Fastlane
37
36
 
38
37
  def self.available_options
39
38
  [
40
- ['files', 'Array of files the changes should be discarded from. If not given, all files will be discarded'],
41
- ['force', 'Skip verifying of previously clean state of repo. Only recommended in combination with `files` option']
39
+ FastlaneCore::ConfigItem.new(key: :files,
40
+ env_name: "FL_RESET_GIT_FILES",
41
+ description: "Array of files the changes should be discarded from. If not given, all files will be discarded",
42
+ verify_block: Proc.new do |value|
43
+ raise "Please pass an array only" unless value.kind_of?Array
44
+ end),
45
+ FastlaneCore::ConfigItem.new(key: :force,
46
+ env_name: "FL_RESET_GIT_FORCE",
47
+ description: "Skip verifying of previously clean state of repo. Only recommended in combination with `files` option",
48
+ is_string: false,
49
+ default_value: false),
42
50
  ]
43
51
  end
44
52
 
@@ -5,20 +5,9 @@ module Fastlane
5
5
  def self.run(params)
6
6
  require 'sigh'
7
7
 
8
- params = params.first
9
-
10
- raise 'You must pass valid params to the resign action. Please check the README.md'.red if (params.nil? || params.empty?)
11
-
12
- ipa = params[:ipa] || Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
13
- signing_identity = params[:signing_identity]
14
- provisioning_profile = params[:provisioning_profile] || Actions.lane_context[SharedValues::SIGH_PROFILE_PATH]
15
-
16
- raise 'Please pass a valid ipa which should be a path to an ipa on disk'.red unless ipa
17
- raise 'Please pass a valid signing_identity'.red unless signing_identity
18
- raise 'Please pass a valid provisioning_profile which should be a path to a profile on disk.'.red unless provisioning_profile
19
8
 
20
9
  # try to resign the ipa
21
- if Sigh::Resign.resign(ipa, signing_identity, provisioning_profile)
10
+ if Sigh::Resign.resign(params[:ipa], params[:signing_identity], params[:provisioning_profile])
22
11
  Helper.log.info 'Successfully re-signed .ipa 🔏.'.green
23
12
  else
24
13
  raise 'Failed to re-sign .ipa'.red
@@ -26,14 +15,28 @@ module Fastlane
26
15
  end
27
16
 
28
17
  def self.description
29
- "Code sign an existing ipa file"
18
+ "Codesign an existing ipa file"
30
19
  end
31
20
 
32
21
  def self.available_options
33
22
  [
34
- ['ipa', 'Path to the ipa file to resign. Optional if you use the `ipa` or `xcodebuild` action'],
35
- ['signing_identity', 'Code signing identity to use. e.g. "iPhone Distribution: Luka Mirosevic (0123456789)"'],
36
- ['provisioning_profile', 'Path to your provisioning_profile. Optional if you use `sigh`']
23
+ FastlaneCore::ConfigItem.new(key: :ipa,
24
+ env_name: "FL_RESIGN_IPA",
25
+ description: "Path to the ipa file to resign. Optional if you use the `ipa` or `xcodebuild` action",
26
+ default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH],
27
+ verify_block: Proc.new do |value|
28
+ raise "No IPA file given or found, pass using `ipa_path: 'path/app.ipa'`".red unless File.exists?(value)
29
+ end),
30
+ FastlaneCore::ConfigItem.new(key: :signing_identity,
31
+ env_name: "FL_RESIGN_SIGNING_IDENTITY",
32
+ description: "Code signing identity to use. e.g. \"iPhone Distribution: Luka Mirosevic (0123456789)\""),
33
+ FastlaneCore::ConfigItem.new(key: :provisioning_profile,
34
+ env_name: "FL_RESIGN_PROVISIONING_PROFILE",
35
+ description: "Path to your provisioning_profile. Optional if you use `sigh`",
36
+ default_value: Actions.lane_context[SharedValues::SIGH_PROFILE_PATH],
37
+ verify_block: Proc.new do |value|
38
+ raise "No provisioning_profile file given or found, pass using `provisioning_profile: 'path/app.mobileprovision'`".red unless File.exists?(value)
39
+ end)
37
40
  ]
38
41
  end
39
42
 
@@ -12,18 +12,6 @@ module Fastlane
12
12
  S3_HTML_OUTPUT_PATH = :S3_HTML_OUTPUT_PATH
13
13
  end
14
14
 
15
- # -f, --file FILE .ipa file for the build
16
- # -d, --dsym FILE zipped .dsym package for the build
17
- # -a, --access-key-id ACCESS_KEY_ID AWS Access Key ID
18
- # -s, --secret-access-key SECRET_ACCESS_KEY AWS Secret Access Key
19
- # -b, --bucket BUCKET S3 bucket
20
- # --[no-]create Create bucket if it doesn't already exist
21
- # -r, --region REGION Optional AWS region (for bucket creation)
22
- # --acl ACL Uploaded object permissions e.g public_read (default), private, public_read_write, authenticated_read
23
- # --source-dir SOURCE Optional source directory e.g. ./build
24
- # -P, --path PATH S3 'path'. Values from Info.plist will be substituded for keys wrapped in {}
25
- # eg. "/path/to/folder/{CFBundleVersion}/" could be evaluated as "/path/to/folder/1.0.0/"
26
-
27
15
  S3_ARGS_MAP = {
28
16
  ipa: '-f',
29
17
  dsym: '-d',
@@ -37,23 +25,19 @@ module Fastlane
37
25
  }
38
26
 
39
27
  class S3Action < Action
40
- def self.run(params)
41
-
42
- params[0] ||= {}
43
- unless params.first.is_a?Hash
44
- raise "Please pass the required information to the s3 action."
45
- end
46
-
47
- # Other things that we need
48
- params = params.first
49
-
50
- params[:access_key] ||= ENV['S3_ACCESS_KEY'] || ENV['AWS_ACCESS_KEY_ID']
51
- params[:secret_access_key] ||= ENV['S3_SECRET_ACCESS_KEY'] || ENV['AWS_SECRET_ACCESS_KEY']
52
- params[:bucket] ||= ENV['S3_BUCKET'] || ENV['AWS_BUCKET_NAME']
53
- params[:region] ||= ENV['S3_REGION'] || ENV['AWS_REGION']
54
- params[:ipa] ||= Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
55
- params[:dsym] ||= Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH]
56
- params[:path] ||= 'v{CFBundleShortVersionString}_b{CFBundleVersion}/'
28
+ def self.run(config)
29
+
30
+ # Calling fetch on config so that default values will be used
31
+ params = {}
32
+ params[:ipa] = config[:ipa]
33
+ params[:dsym] = config[:dsym]
34
+ params[:access_key] = config[:access_key]
35
+ params[:secret_access_key] = config[:secret_access_key]
36
+ params[:bucket] = config[:bucket]
37
+ params[:region] = config[:region]
38
+ params[:acl] = config[:acl]
39
+ params[:source] = config[:source]
40
+ params[:path] = config[:path]
57
41
 
58
42
  # Maps nice developer build parameters to Shenzhen args
59
43
  build_args = params_to_build_args(params)
@@ -247,14 +231,49 @@ module Fastlane
247
231
 
248
232
  def self.available_options
249
233
  [
250
- ['access_key', 'AWS S3 Access Key', 'S3_ACCESS_KEY'],
251
- ['secret_access_key', 'AWS S3 Secret Key', 'S3_SECRET_ACCESS_KEY'],
252
- ['bucket', 'The bucket to store the ipa and plist in', 'S3_BUCKET'],
253
- ['region', 'The region of your S3 server', 'S3_REGION'],
254
- ['file', 'Path the ipa file to upload'],
255
- ['dsym', 'Path to your dsym file'],
256
- ['path', 'The path how it\'s used on S3']
257
- # TODO: there are more options
234
+ FastlaneCore::ConfigItem.new(key: :ipa,
235
+ env_name: "",
236
+ description: ".ipa file for the build ",
237
+ optional: true,
238
+ default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]),
239
+ FastlaneCore::ConfigItem.new(key: :dsym,
240
+ env_name: "",
241
+ description: "zipped .dsym package for the build ",
242
+ optional: true,
243
+ default_value: Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH]),
244
+ FastlaneCore::ConfigItem.new(key: :access_key,
245
+ env_name: "S3_ACCESS_KEY",
246
+ description: "AWS Access Key ID ",
247
+ optional: true,
248
+ default_value: ENV['AWS_ACCESS_KEY_ID']),
249
+ FastlaneCore::ConfigItem.new(key: :secret_access_key,
250
+ env_name: "S3_SECRET_ACCESS_KEY",
251
+ description: "AWS Secret Access Key ",
252
+ optional: true,
253
+ default_value: ENV['AWS_SECRET_ACCESS_KEY']),
254
+ FastlaneCore::ConfigItem.new(key: :bucket,
255
+ env_name: "S3_BUCKET",
256
+ description: "AWS bucket name",
257
+ optional: true,
258
+ default_value: ENV['AWS_BUCKET_NAME']),
259
+ FastlaneCore::ConfigItem.new(key: :region,
260
+ env_name: "S3_REGION",
261
+ description: "AWS region (for bucket creation) ",
262
+ optional: true,
263
+ default_value: ENV['AWS_REGION']),
264
+ FastlaneCore::ConfigItem.new(key: :path,
265
+ env_name: "S3_PATH",
266
+ description: "S3 'path'. Values from Info.plist will be substituded for keys wrapped in {} ",
267
+ optional: true,
268
+ default_value: 'v{CFBundleShortVersionString}_b{CFBundleVersion}/'),
269
+ FastlaneCore::ConfigItem.new(key: :source,
270
+ env_name: "S3_SOURCE",
271
+ description: "Optional source directory e.g. ./build ",
272
+ optional: true),
273
+ FastlaneCore::ConfigItem.new(key: :acl,
274
+ env_name: "S3_ACL",
275
+ description: "Uploaded object permissions e.g public_read (default), private, public_read_write, authenticated_read ",
276
+ optional: true,),
258
277
  ]
259
278
  end
260
279
 
@@ -23,7 +23,7 @@ module Fastlane
23
23
  end
24
24
 
25
25
  begin
26
- FastlaneCore::UpdateChecker.start_looking_for_update('sigh')
26
+ FastlaneCore::UpdateChecker.start_looking_for_update('sigh') unless Helper.is_test?
27
27
 
28
28
  Sigh.config = FastlaneCore::Configuration.create(Sigh::Options.available_options, (values || {}))
29
29
 
@@ -30,17 +30,10 @@ module Fastlane
30
30
  message
31
31
  end
32
32
 
33
- def self.run(params)
34
- options = { message: '',
35
- success: true,
36
- channel: nil,
37
- payload: {}
38
- }.merge(params.first || {})
39
-
33
+ def self.run(options)
40
34
  require 'slack-notifier'
41
35
 
42
36
  options[:message] = self.trim_message(options[:message].to_s || '')
43
-
44
37
  options[:message] = Slack::Notifier::LinkFormatter.format(options[:message])
45
38
 
46
39
  url = ENV['SLACK_URL']
@@ -79,11 +72,36 @@ module Fastlane
79
72
 
80
73
  def self.available_options
81
74
  [
82
- ['message', 'The message that should be displayed on Slack. This supports the standard Slack markup language'],
83
- ['channel', '#channel or @username'],
84
- ['success', 'Success or error?'],
85
- ['payload', 'Add additional information to this post. payload must be a hash containg any key with any value'],
86
- ['default_payloads', 'Remove some of the default payloads. More information about the available payloads GitHub']
75
+ FastlaneCore::ConfigItem.new(key: :message,
76
+ env_name: "FL_SLACK_MESSAGE",
77
+ description: "The message that should be displayed on Slack. This supports the standard Slack markup language",
78
+ optional: true),
79
+ FastlaneCore::ConfigItem.new(key: :channel,
80
+ env_name: "FL_SLACK_CHANNEL",
81
+ description: "#channel or @username",
82
+ optional: true),
83
+ FastlaneCore::ConfigItem.new(key: :slack_url,
84
+ env_name: "SLACK_URL",
85
+ description: "Create an Incoming WebHook for your Slack group",
86
+ verify_block: Proc.new do |value|
87
+ raise "Invalid URL, must start with https://" unless value.start_with?"https://"
88
+ end),
89
+ FastlaneCore::ConfigItem.new(key: :payload,
90
+ env_name: "FL_SLACK_PAYLOAD",
91
+ description: "Add additional information to this post. payload must be a hash containg any key with any value",
92
+ default_value: {},
93
+ is_string: false),
94
+ FastlaneCore::ConfigItem.new(key: :default_payloads,
95
+ env_name: "FL_SLACK_DEFAULT_PAYLOADS",
96
+ description: "Remove some of the default payloads. More information about the available payloads on GitHub",
97
+ optional: true,
98
+ is_string: false),
99
+ FastlaneCore::ConfigItem.new(key: :success,
100
+ env_name: "FL_SLACK_SUCCESS",
101
+ description: "Was this build successful? (true/false)",
102
+ optional: true,
103
+ default_value: true,
104
+ is_string: false),
87
105
  ]
88
106
  end
89
107
 
@@ -6,9 +6,8 @@ module Fastlane
6
6
 
7
7
  class SnapshotAction < Action
8
8
  def self.run(params)
9
- clean = true
10
- clean = false if params.include?(:noclean)
11
- $verbose = true if params.include?(:verbose)
9
+ $verbose = true if params[:verbose]
10
+ clean = !params[:noclean]
12
11
 
13
12
  if Helper.test?
14
13
  Actions.lane_context[SharedValues::SNAPSHOT_SCREENSHOTS_PATH] = Dir.pwd
@@ -17,7 +16,7 @@ module Fastlane
17
16
 
18
17
  require 'snapshot'
19
18
 
20
- FastlaneCore::UpdateChecker.start_looking_for_update('snapshot')
19
+ FastlaneCore::UpdateChecker.start_looking_for_update('snapshot') unless Helper.is_test?
21
20
 
22
21
  begin
23
22
  Dir.chdir(FastlaneFolder.path) do
@@ -39,8 +38,16 @@ module Fastlane
39
38
 
40
39
  def self.available_options
41
40
  [
42
- ['noclean', 'Skips the clean process when building the app'],
43
- ['verbose', 'Print out the UI Automation output']
41
+ FastlaneCore::ConfigItem.new(key: :noclean,
42
+ env_name: "FL_SNAPSHOT_NO_CLEAN",
43
+ description: "Skips the clean process when building the app",
44
+ is_string: false,
45
+ default_value: false),
46
+ FastlaneCore::ConfigItem.new(key: :verbose,
47
+ env_name: "FL_SNAPSHOT_VERBOSE",
48
+ description: "Print out the UI Automation output",
49
+ is_string: false,
50
+ default_value: false)
44
51
  ]
45
52
  end
46
53