fastlane 1.48.0 → 1.49.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6a5d03f7acef71473dbcf2d8f361ac8c9aa756c4
4
- data.tar.gz: beee3f8e936b16eebb46213cea86e4590fc30eea
3
+ metadata.gz: f2c19482851fecde47475e7466ef2d2ec74468c0
4
+ data.tar.gz: 749a46dd66b8207dc017c71158d413ab71ed7473
5
5
  SHA512:
6
- metadata.gz: d9f2eecd4ec5e999f3278015d53d3a45ac7f13a1f1cf6336d1241508d4b1fee574f1ddf2f1d8d6030b3b0afa2f0a051f73f9d27f648b685d8767cc83d6ceb7fc
7
- data.tar.gz: e311ba2e8c85ebe0263384a24d9f214614ee494e5797480e48a28eb9eac8fb99266e351783bbac40067f876b0145cd1ae436f018cd8821c9d7e2051e73f555ee
6
+ metadata.gz: 4e87b4d2b77f981983ea2e2837c663f2b392a8711915d4ae45848d33423b5821690701e2b24bd207c2a1e62f2caa7cad3a23cc9f36b064279c05ecf498ff58b7
7
+ data.tar.gz: 9c095a74b24fbccca42445938d5901a7f6cfb52b6661e0abfb204903714036aa5a61e94d22ca7a10a6ee5d78e89412f9aeb8333183ea12955eb561dcd5c57e72
data/README.md CHANGED
@@ -130,7 +130,7 @@ The setup assistant will create all the necessary files for you, using the exist
130
130
 
131
131
  For more details, please follow the [fastlane guide](https://github.com/fastlane/fastlane/blob/master/docs/Guide.md) or [documentation](https://github.com/fastlane/fastlane/tree/master/docs).
132
132
 
133
- There are also 2 Japanese fastlane guides available: [qiita](http://qiita.com/gin0606/items/162d756dfda7b84e97d4) and [mercari](http://tech.mercari.com/entry/2015/07/13/143000)
133
+ There are also 2 Japanese fastlane guides available: [qiita](http://qiita.com/gin0606/items/a8573b582752de0c15e1) and [mercari](http://tech.mercari.com/entry/2015/07/13/143000)
134
134
 
135
135
  ## Available commands
136
136
 
data/bin/fastlane CHANGED
@@ -44,7 +44,7 @@ class FastlaneApplication
44
44
 
45
45
  command :init do |c|
46
46
  c.syntax = 'fastlane init'
47
- c.description = 'Helps you setting up fastlane based on your existing tools.'
47
+ c.description = 'Helps you with your initial fastlane setup'
48
48
 
49
49
  c.action do |args, options|
50
50
  Fastlane::Setup.new.run
@@ -0,0 +1,175 @@
1
+ module Fastlane
2
+ module Actions
3
+ class AppiumAction < Action
4
+ INVOKE_TIMEOUT = 30
5
+ APPIUM_PATH_HOMEBREW = '/usr/local/bin/appium'
6
+ APPIUM_APP_PATH = '/Applications/Appium.app'
7
+ APPIUM_APP_BUNDLE_PATH = 'Contents/Resources/node_modules/.bin/appium'
8
+
9
+ def self.run(params)
10
+ Actions.verify_gem!('rspec')
11
+ Actions.verify_gem!('appium_lib')
12
+
13
+ require 'rspec'
14
+ require 'appium_lib'
15
+
16
+ FastlaneCore::PrintTable.print_values(
17
+ config: params,
18
+ title: "Summary for Appium Action"
19
+ )
20
+
21
+ if params[:invoke_appium_server]
22
+ appium_pid = invoke_appium_server(params)
23
+ wait_for_appium_server(params)
24
+ end
25
+
26
+ configure_rspec(params)
27
+
28
+ rspec_args = []
29
+ rspec_args << params[:spec_path]
30
+ status = RSpec::Core::Runner.run(rspec_args).to_i
31
+ if status != 0
32
+ raise "Failed to run Appium spec. status code: #{status}".red
33
+ end
34
+ ensure
35
+ Actions.sh "kill #{appium_pid}" if appium_pid
36
+ end
37
+
38
+ def self.invoke_appium_server(params)
39
+ appium = detect_appium(params)
40
+ fork do
41
+ Process.exec("#{appium} -a #{params[:host]} -p #{params[:port]}")
42
+ end
43
+ end
44
+
45
+ def self.detect_appium(params)
46
+ appium_path = params[:appium_path] || `which appium`.to_s.strip
47
+
48
+ if appium_path.empty?
49
+ if File.exist?(APPIUM_PATH_HOMEBREW)
50
+ appium_path = APPIUM_PATH_HOMEBREW
51
+ elsif File.exist?(APPIUM_APP_PATH)
52
+ appium_path = APPIUM_APP_PATH
53
+ end
54
+ end
55
+
56
+ unless File.exist?(appium_path)
57
+ raise 'You have to install Appium using `npm install -g appium`'.red
58
+ end
59
+
60
+ if appium_path.end_with?('.app')
61
+ appium_path = "#{appium_path}/#{APPIUM_APP_BUNDLE_PATH}"
62
+ end
63
+
64
+ Helper.log.info("Appium executable detected: #{appium_path}")
65
+ appium_path
66
+ end
67
+
68
+ def self.wait_for_appium_server(params)
69
+ loop.with_index do |_, count|
70
+ break if `lsof -i:#{params[:port]}`.to_s.length != 0
71
+
72
+ if count * 5 > INVOKE_TIMEOUT
73
+ raise 'Invoke Appium server timed out'.red
74
+ end
75
+ sleep 5
76
+ end
77
+ end
78
+
79
+ def self.configure_rspec(params)
80
+ RSpec.configure do |c|
81
+ c.before(:each) do
82
+ caps = params[:caps] || {}
83
+ caps[:platformName] ||= params[:platform]
84
+ caps[:autoAcceptAlerts] ||= true
85
+ caps[:app] = params[:app_path]
86
+
87
+ @driver = Appium::Driver.new(
88
+ caps: caps,
89
+ server_url: params[:host],
90
+ port: params[:port]
91
+ ).start_driver
92
+ Appium.promote_appium_methods(RSpec::Core::ExampleGroup)
93
+ end
94
+
95
+ c.after(:each) do
96
+ @driver.quit unless @driver.nil?
97
+ end
98
+ end
99
+ end
100
+
101
+ def self.description
102
+ 'Run UI test by Appium with RSpec'
103
+ end
104
+
105
+ def self.available_options
106
+ [
107
+ FastlaneCore::ConfigItem.new(
108
+ key: :platform,
109
+ env_name: 'FL_APPIUM_PLATFORM',
110
+ description: 'Appium platform name',
111
+ is_string: true
112
+ ),
113
+ FastlaneCore::ConfigItem.new(
114
+ key: :spec_path,
115
+ env_name: 'FL_APPIUM_SPEC_PATH',
116
+ description: 'Path to Appium spec directory',
117
+ is_string: true
118
+ ),
119
+ FastlaneCore::ConfigItem.new(
120
+ key: :app_path,
121
+ env_name: 'FL_APPIUM_APP_FILE_PATH',
122
+ description: 'Path to Appium target app file',
123
+ is_string: true
124
+ ),
125
+ FastlaneCore::ConfigItem.new(
126
+ key: :invoke_appium_server,
127
+ env_name: 'FL_APPIUM_INVOKE_APPIUM_SERVER',
128
+ description: 'Use local Appium server with invoke automatically',
129
+ is_string: false,
130
+ default_value: true,
131
+ optional: true
132
+ ),
133
+ FastlaneCore::ConfigItem.new(
134
+ key: :host,
135
+ env_name: 'FL_APPIUM_HOST',
136
+ description: 'Hostname of Appium server',
137
+ is_string: true,
138
+ default_value: '0.0.0.0',
139
+ optional: true
140
+ ),
141
+ FastlaneCore::ConfigItem.new(
142
+ key: :port,
143
+ env_name: 'FL_APPIUM_PORT',
144
+ description: 'HTTP port of Appium server',
145
+ is_string: false,
146
+ default_value: 4723,
147
+ optional: true
148
+ ),
149
+ FastlaneCore::ConfigItem.new(
150
+ key: :appium_path,
151
+ env_name: 'FL_APPIUM_EXECUTABLE_PATH',
152
+ description: 'Path to Appium executable',
153
+ is_string: true,
154
+ optional: true
155
+ ),
156
+ FastlaneCore::ConfigItem.new(
157
+ key: :caps,
158
+ env_name: 'FL_APPIUM_CAPS',
159
+ description: 'Hash of caps for Appium::Driver',
160
+ is_string: false,
161
+ optional: true
162
+ )
163
+ ]
164
+ end
165
+
166
+ def self.author
167
+ 'yonekawa'
168
+ end
169
+
170
+ def self.is_supported?(platform)
171
+ platform == :ios
172
+ end
173
+ end
174
+ end
175
+ end
@@ -24,6 +24,7 @@ module Fastlane
24
24
 
25
25
  Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] = absolute_ipa_path
26
26
  Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH] = absolute_dsym_path if File.exist?(absolute_dsym_path)
27
+ Actions.lane_context[SharedValues::XCODEBUILD_ARCHIVE] = Gym::BuildCommandGenerator.archive_path
27
28
  ENV[SharedValues::IPA_OUTPUT_PATH.to_s] = absolute_ipa_path # for deliver
28
29
  ENV[SharedValues::DSYM_OUTPUT_PATH.to_s] = absolute_dsym_path if File.exist?(absolute_dsym_path)
29
30
 
@@ -141,7 +141,11 @@ module Fastlane
141
141
  env_name: "FL_HOCKEY_UPLOAD_DSYM_ONLY",
142
142
  description: "Flag to upload only the dSYM file to hockey app",
143
143
  is_string: false,
144
- default_value: false)
144
+ default_value: false),
145
+ FastlaneCore::ConfigItem.new(key: :owner_id,
146
+ env_name: "FL_HOCKEY_OWNER_ID",
147
+ description: "ID for the owner of the app",
148
+ optional: true)
145
149
  ]
146
150
  end
147
151
 
@@ -0,0 +1,114 @@
1
+ module Fastlane
2
+ module Actions
3
+ module SharedValues
4
+ INSTALLR_BUILD_INFORMATION = :INSTALLR_BUILD_INFORMATION
5
+ end
6
+
7
+ class InstallrAction < Action
8
+ INSTALLR_API = "https://www.installrapp.com/apps.json"
9
+
10
+ def self.run(params)
11
+ Helper.log.info 'Upload to Installr has been started. This may take some time.'.green
12
+
13
+ response = self.upload_build(params)
14
+
15
+ case response.status
16
+ when 200...300
17
+ Actions.lane_context[SharedValues::INSTALLR_BUILD_INFORMATION] = response.body
18
+ Helper.log.info 'Build successfully uploaded to Installr!'.green
19
+ else
20
+ raise "Error when trying to upload build file to Installr: #{response.body}".red
21
+ end
22
+ end
23
+
24
+ def self.upload_build(params)
25
+ require 'faraday'
26
+ require 'faraday_middleware'
27
+
28
+ url = INSTALLR_API
29
+ connection = Faraday.new(url) do |builder|
30
+ builder.request :multipart
31
+ builder.request :url_encoded
32
+ builder.response :json, content_type: /\bjson$/
33
+ builder.use FaradayMiddleware::FollowRedirects
34
+ builder.adapter :net_http
35
+ end
36
+
37
+ options = {}
38
+ options[:qqfile] = Faraday::UploadIO.new(params[:ipa], 'application/octet-stream')
39
+
40
+ if params[:notes]
41
+ options[:releaseNotes] = params[:notes]
42
+ end
43
+
44
+ if params[:notify]
45
+ options[:notify] = params[:notify]
46
+ end
47
+
48
+ if params[:add]
49
+ options[:add] = params[:add]
50
+ end
51
+
52
+ post_request = connection.post do |req|
53
+ req.headers['X-InstallrAppToken'] = params[:api_token]
54
+ req.body = options
55
+ end
56
+
57
+ post_request.on_complete do |env|
58
+ yield env[:status], env[:body] if block_given?
59
+ end
60
+ end
61
+
62
+ def self.description
63
+ "Upload a new build to Installr"
64
+ end
65
+
66
+ def self.available_options
67
+ [
68
+ FastlaneCore::ConfigItem.new(key: :api_token,
69
+ env_name: "INSTALLR_API_TOKEN",
70
+ description: "API Token for Installr Access",
71
+ verify_block: proc do |value|
72
+ raise "No API token for Installr given, pass using `api_token: 'token'`".red unless value and !value.empty?
73
+ end),
74
+ FastlaneCore::ConfigItem.new(key: :ipa,
75
+ env_name: "INSTALLR_IPA_PATH",
76
+ description: "Path to your IPA file. Optional if you use the `gym` or `xcodebuild` action",
77
+ default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH],
78
+ verify_block: proc do |value|
79
+ raise "Couldn't find build file at path '#{value}'".red unless File.exist?(value)
80
+ end),
81
+ FastlaneCore::ConfigItem.new(key: :notes,
82
+ env_name: "INSTALLR_NOTES",
83
+ description: "Release notes",
84
+ is_string: true,
85
+ optional: true),
86
+ FastlaneCore::ConfigItem.new(key: :notify,
87
+ env_name: "INSTALLR_NOTIFY",
88
+ description: "Groups to notify (e.g. 'dev,qa')",
89
+ is_string: true,
90
+ optional: true),
91
+ FastlaneCore::ConfigItem.new(key: :add,
92
+ env_name: "INSTALLR_ADD",
93
+ description: "Groups to add (e.g. 'exec,ops')",
94
+ is_string: true,
95
+ optional: true)
96
+ ]
97
+ end
98
+
99
+ def self.output
100
+ [
101
+ ['INSTALLR_BUILD_INFORMATION', 'Contains release info like :appData. See http://help.installrapp.com/api/']
102
+ ]
103
+ end
104
+
105
+ def self.authors
106
+ ["scottrhoyt"]
107
+ end
108
+
109
+ def self.is_supported?(platform)
110
+ [:ios].include?(platform)
111
+ end
112
+ end
113
+ end
114
+ end
@@ -17,6 +17,20 @@ module Fastlane
17
17
  "Codesign an existing ipa file"
18
18
  end
19
19
 
20
+ def self.details
21
+ [
22
+ "You may provide multiple provisioning profiles if the application contains",
23
+ "nested applications or app extensions, which need their own provisioning",
24
+ "profile. You can do so by passing an array of provisiong profile strings or a",
25
+ "hash that associates provisioning profile values to bundle identifier keys.",
26
+ "",
27
+ "resign(ipa: \"path\", signing_identity: \"identity\", provisioning_profile: {",
28
+ " \"com.example.awesome-app\" => \"App.mobileprovision\",",
29
+ " \"com.example.awesome-app.app-extension\" => \"Extension.mobileprovision\"",
30
+ "})"
31
+ ].join("\n")
32
+ end
33
+
20
34
  def self.available_options
21
35
  [
22
36
  FastlaneCore::ConfigItem.new(key: :ipa,
@@ -33,8 +47,16 @@ module Fastlane
33
47
  env_name: "FL_RESIGN_PROVISIONING_PROFILE",
34
48
  description: "Path to your provisioning_profile. Optional if you use `sigh`",
35
49
  default_value: Actions.lane_context[SharedValues::SIGH_PROFILE_PATH],
50
+ is_string: false,
36
51
  verify_block: proc do |value|
37
- raise "No provisioning_profile file given or found, pass using `provisioning_profile: 'path/app.mobileprovision'`".red unless File.exist?(value)
52
+ files = case value
53
+ when Hash then value.values
54
+ when Enumerable then value
55
+ else [value]
56
+ end
57
+ files.each do |file|
58
+ raise "Couldn't find provisiong profile at path '#{file}'".red unless File.exist?(file)
59
+ end
38
60
  end)
39
61
  ]
40
62
  end
@@ -200,7 +200,8 @@ module Fastlane
200
200
  env_name: "FL_SET_GITHUB_RELEASE_DESCRIPTION",
201
201
  description: "Description of this release",
202
202
  is_string: true,
203
- optional: true),
203
+ optional: true,
204
+ default_value: Actions.lane_context[SharedValues::FL_CHANGELOG]),
204
205
  FastlaneCore::ConfigItem.new(key: :is_draft,
205
206
  env_name: "FL_SET_GITHUB_RELEASE_IS_DRAFT",
206
207
  description: "Whether the release should be marked as draft",
@@ -5,7 +5,11 @@ module Fastlane
5
5
  if `which swiftlint`.to_s.length == 0 and !Helper.test?
6
6
  raise "You have to install swiftlint using `brew install swiftlint`".red
7
7
  end
8
- Actions.sh("swiftlint")
8
+
9
+ command = 'swiftlint lint'
10
+ command << " --config #{params[:config_file]}" if params[:config_file]
11
+ command << " > #{params[:output_file]}" if params[:output_file]
12
+ Actions.sh(command)
9
13
  end
10
14
 
11
15
  #####################################################
@@ -21,6 +25,12 @@ module Fastlane
21
25
 
22
26
  def self.available_options
23
27
  [
28
+ FastlaneCore::ConfigItem.new(key: :output_file,
29
+ description: 'Path to output SwiftLint result',
30
+ optional: true),
31
+ FastlaneCore::ConfigItem.new(key: :config_file,
32
+ description: 'Custom configuration file of SwiftLint',
33
+ optional: true)
24
34
  ]
25
35
  end
26
36
 
@@ -0,0 +1,52 @@
1
+ module Fastlane
2
+ module Actions
3
+ module SharedValues
4
+ end
5
+
6
+ class UpdateProjectTeamAction < Action
7
+ def self.run(params)
8
+ path = params[:path]
9
+ path = File.join(path, "project.pbxproj")
10
+ raise "Could not find path to project config '#{path}'. Pass the path to your project (not workspace)!".red unless File.exist?(path)
11
+
12
+ Helper.log.info("Updating development team (#{params[:teamid]}) for the given project '#{path}'")
13
+
14
+ p = File.read(path)
15
+ File.write(path, p.gsub(/DevelopmentTeam = .*;/, "DevelopmentTeam = #{params[:teamid]};"))
16
+
17
+ Helper.log.info("Successfully updated project settings to use Developer Team ID '#{params[:teamid]}'".green)
18
+ end
19
+
20
+ def self.description
21
+ "Update Development Team ID"
22
+ end
23
+
24
+ def self.details
25
+ "This action update the Developer Team ID of your Xcode Project."
26
+ end
27
+
28
+ def self.available_options
29
+ [
30
+ FastlaneCore::ConfigItem.new(key: :path,
31
+ env_name: "FL_PROJECT_SIGNING_PROJECT_PATH",
32
+ description: "Path to your Xcode project",
33
+ verify_block: proc do |value|
34
+ raise "Path is invalid".red unless File.exist?(value)
35
+ end),
36
+ FastlaneCore::ConfigItem.new(key: :teamid,
37
+ env_name: "FL_PROJECT_TEAM_ID",
38
+ description: "The Team ID you want to use",
39
+ default_value: ENV["TEAM_ID"])
40
+ ]
41
+ end
42
+
43
+ def self.author
44
+ "lgaches"
45
+ end
46
+
47
+ def self.is_supported?(platform)
48
+ [:ios, :mac].include?(platform)
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,28 @@
1
+ module Fastlane
2
+ module Actions
3
+ class XcakeAction < Action
4
+ def self.run(params)
5
+ Actions.verify_gem!('xcake')
6
+ require 'xcake'
7
+ Xcake::Command.run
8
+ end
9
+
10
+ def self.description
11
+ "Runs `xcake` for the project"
12
+ end
13
+
14
+ def self.available_options
15
+ [
16
+ ]
17
+ end
18
+
19
+ def self.is_supported?(platform)
20
+ [:ios, :mac].include? platform
21
+ end
22
+
23
+ def self.authors
24
+ ["jcampbell05"]
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,7 +1,7 @@
1
1
  module Fastlane
2
2
  module Actions
3
3
  def self.git_log_between(pretty_format, from, to)
4
- Actions.sh("git log --pretty=\"#{pretty_format}\" #{from}...#{to}", log: false).chomp
4
+ Actions.sh("git log --pretty=\"#{pretty_format}\" #{from.shellescape}...#{to.shellescape}", log: false).chomp
5
5
  rescue
6
6
  nil
7
7
  end
@@ -18,7 +18,6 @@ module Fastlane
18
18
  # @param lane_name The name of the lane to execute
19
19
  # @param platform The name of the platform to execute
20
20
  # @param parameters [Hash] The parameters passed from the command line to the lane
21
- # rubocop:disable Metrics/CyclomaticComplexity
22
21
  # rubocop:disable Metrics/AbcSize
23
22
  def execute(lane, platform = nil, parameters = nil)
24
23
  raise "No lane given" unless lane
@@ -42,18 +41,20 @@ module Fastlane
42
41
  return_val = nil
43
42
 
44
43
  path_to_use = Fastlane::FastlaneFolder.path || Dir.pwd
44
+ parameters ||= {}
45
45
  begin
46
46
  Dir.chdir(path_to_use) do # the file is located in the fastlane folder
47
47
  # Call the platform specific before_all block and then the general one
48
- before_all_blocks[current_platform].call(current_lane) if before_all_blocks[current_platform] && current_platform
49
- before_all_blocks[nil].call(current_lane) if before_all_blocks[nil]
50
48
 
51
- return_val = lane_obj.call(parameters || {}) # by default no parameters
49
+ before_all_blocks[current_platform].call(current_lane, parameters) if before_all_blocks[current_platform] && current_platform
50
+ before_all_blocks[nil].call(current_lane, parameters) if before_all_blocks[nil]
51
+
52
+ return_val = lane_obj.call(parameters) # by default no parameters
52
53
 
53
54
  # `after_all` is only called if no exception was raised before
54
55
  # Call the platform specific before_all block and then the general one
55
- after_all_blocks[current_platform].call(current_lane) if after_all_blocks[current_platform] && current_platform
56
- after_all_blocks[nil].call(current_lane) if after_all_blocks[nil]
56
+ after_all_blocks[current_platform].call(current_lane, parameters) if after_all_blocks[current_platform] && current_platform
57
+ after_all_blocks[nil].call(current_lane, parameters) if after_all_blocks[nil]
57
58
  end
58
59
 
59
60
  return return_val
@@ -62,13 +63,12 @@ module Fastlane
62
63
  # Provide error block exception without colour code
63
64
  error_ex = ex.exception(ex.message.gsub(/\033\[\d+m/, ''))
64
65
 
65
- error_blocks[current_platform].call(current_lane, error_ex) if error_blocks[current_platform] && current_platform
66
- error_blocks[nil].call(current_lane, error_ex) if error_blocks[nil]
66
+ error_blocks[current_platform].call(current_lane, error_ex, parameters) if error_blocks[current_platform] && current_platform
67
+ error_blocks[nil].call(current_lane, error_ex, parameters) if error_blocks[nil]
67
68
  end
68
69
  raise ex
69
70
  end
70
71
  end
71
- # rubocop:enable Metrics/CyclomaticComplexity
72
72
  # rubocop:enable Metrics/AbcSize
73
73
 
74
74
  # @param filter_platform: Filter, to only show the lanes of a given platform
@@ -1,3 +1,3 @@
1
1
  module Fastlane
2
- VERSION = '1.48.0'
2
+ VERSION = '1.49.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.48.0
4
+ version: 1.49.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-15 00:00:00.000000000 Z
11
+ date: 2015-12-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: krausefx-shenzhen
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.14.6
19
+ version: 0.14.7
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.14.6
26
+ version: 0.14.7
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: slack-notifier
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -148,7 +148,7 @@ dependencies:
148
148
  requirements:
149
149
  - - ">="
150
150
  - !ruby/object:Gem::Version
151
- version: 0.29.1
151
+ version: 0.31.0
152
152
  - - "<"
153
153
  - !ruby/object:Gem::Version
154
154
  version: 1.0.0
@@ -158,7 +158,7 @@ dependencies:
158
158
  requirements:
159
159
  - - ">="
160
160
  - !ruby/object:Gem::Version
161
- version: 0.29.1
161
+ version: 0.31.0
162
162
  - - "<"
163
163
  - !ruby/object:Gem::Version
164
164
  version: 1.0.0
@@ -188,7 +188,7 @@ dependencies:
188
188
  requirements:
189
189
  - - ">="
190
190
  - !ruby/object:Gem::Version
191
- version: 0.18.0
191
+ version: 0.18.1
192
192
  - - "<"
193
193
  - !ruby/object:Gem::Version
194
194
  version: 1.0.0
@@ -198,7 +198,7 @@ dependencies:
198
198
  requirements:
199
199
  - - ">="
200
200
  - !ruby/object:Gem::Version
201
- version: 0.18.0
201
+ version: 0.18.1
202
202
  - - "<"
203
203
  - !ruby/object:Gem::Version
204
204
  version: 1.0.0
@@ -208,7 +208,7 @@ dependencies:
208
208
  requirements:
209
209
  - - ">="
210
210
  - !ruby/object:Gem::Version
211
- version: 1.6.4
211
+ version: 1.6.5
212
212
  - - "<"
213
213
  - !ruby/object:Gem::Version
214
214
  version: 2.0.0
@@ -218,7 +218,7 @@ dependencies:
218
218
  requirements:
219
219
  - - ">="
220
220
  - !ruby/object:Gem::Version
221
- version: 1.6.4
221
+ version: 1.6.5
222
222
  - - "<"
223
223
  - !ruby/object:Gem::Version
224
224
  version: 2.0.0
@@ -268,7 +268,7 @@ dependencies:
268
268
  requirements:
269
269
  - - ">="
270
270
  - !ruby/object:Gem::Version
271
- version: 1.1.0
271
+ version: 1.1.1
272
272
  - - "<"
273
273
  - !ruby/object:Gem::Version
274
274
  version: 2.0.0
@@ -278,7 +278,7 @@ dependencies:
278
278
  requirements:
279
279
  - - ">="
280
280
  - !ruby/object:Gem::Version
281
- version: 1.1.0
281
+ version: 1.1.1
282
282
  - - "<"
283
283
  - !ruby/object:Gem::Version
284
284
  version: 2.0.0
@@ -368,7 +368,7 @@ dependencies:
368
368
  requirements:
369
369
  - - ">="
370
370
  - !ruby/object:Gem::Version
371
- version: 1.1.0
371
+ version: 1.2.1
372
372
  - - "<"
373
373
  - !ruby/object:Gem::Version
374
374
  version: 2.0.0
@@ -378,7 +378,7 @@ dependencies:
378
378
  requirements:
379
379
  - - ">="
380
380
  - !ruby/object:Gem::Version
381
- version: 1.1.0
381
+ version: 1.2.1
382
382
  - - "<"
383
383
  - !ruby/object:Gem::Version
384
384
  version: 2.0.0
@@ -408,7 +408,7 @@ dependencies:
408
408
  requirements:
409
409
  - - ">="
410
410
  - !ruby/object:Gem::Version
411
- version: 0.3.2
411
+ version: 0.3.3
412
412
  - - "<"
413
413
  - !ruby/object:Gem::Version
414
414
  version: 1.0.0
@@ -418,7 +418,7 @@ dependencies:
418
418
  requirements:
419
419
  - - ">="
420
420
  - !ruby/object:Gem::Version
421
- version: 0.3.2
421
+ version: 0.3.3
422
422
  - - "<"
423
423
  - !ruby/object:Gem::Version
424
424
  version: 1.0.0
@@ -428,7 +428,7 @@ dependencies:
428
428
  requirements:
429
429
  - - ">="
430
430
  - !ruby/object:Gem::Version
431
- version: 0.1.2
431
+ version: 0.2.2
432
432
  - - "<"
433
433
  - !ruby/object:Gem::Version
434
434
  version: 1.0.0
@@ -438,7 +438,7 @@ dependencies:
438
438
  requirements:
439
439
  - - ">="
440
440
  - !ruby/object:Gem::Version
441
- version: 0.1.2
441
+ version: 0.2.2
442
442
  - - "<"
443
443
  - !ruby/object:Gem::Version
444
444
  version: 1.0.0
@@ -554,6 +554,20 @@ dependencies:
554
554
  - - "~>"
555
555
  - !ruby/object:Gem::Version
556
556
  version: '0.29'
557
+ - !ruby/object:Gem::Dependency
558
+ name: appium_lib
559
+ requirement: !ruby/object:Gem::Requirement
560
+ requirements:
561
+ - - "~>"
562
+ - !ruby/object:Gem::Version
563
+ version: 4.1.0
564
+ type: :development
565
+ prerelease: false
566
+ version_requirements: !ruby/object:Gem::Requirement
567
+ requirements:
568
+ - - "~>"
569
+ - !ruby/object:Gem::Version
570
+ version: 4.1.0
557
571
  description: Connect all iOS deployment tools into one streamlined workflow
558
572
  email:
559
573
  - fastlane@krausefx.com
@@ -583,6 +597,7 @@ files:
583
597
  - lib/fastlane/actions/add_git_tag.rb
584
598
  - lib/fastlane/actions/appaloosa.rb
585
599
  - lib/fastlane/actions/appetize.rb
600
+ - lib/fastlane/actions/appium.rb
586
601
  - lib/fastlane/actions/appledoc.rb
587
602
  - lib/fastlane/actions/appstore.rb
588
603
  - lib/fastlane/actions/artifactory.rb
@@ -638,6 +653,7 @@ files:
638
653
  - lib/fastlane/actions/increment_build_number.rb
639
654
  - lib/fastlane/actions/increment_version_number.rb
640
655
  - lib/fastlane/actions/install_xcode_plugin.rb
656
+ - lib/fastlane/actions/installr.rb
641
657
  - lib/fastlane/actions/ipa.rb
642
658
  - lib/fastlane/actions/is_ci.rb
643
659
  - lib/fastlane/actions/jazzy.rb
@@ -696,11 +712,13 @@ files:
696
712
  - lib/fastlane/actions/update_info_plist.rb
697
713
  - lib/fastlane/actions/update_project_code_signing.rb
698
714
  - lib/fastlane/actions/update_project_provisioning.rb
715
+ - lib/fastlane/actions/update_project_team.rb
699
716
  - lib/fastlane/actions/update_url_schemes.rb
700
717
  - lib/fastlane/actions/verify_pod_keys.rb
701
718
  - lib/fastlane/actions/verify_xcode.rb
702
719
  - lib/fastlane/actions/version_bump_podspec.rb
703
720
  - lib/fastlane/actions/version_get_podspec.rb
721
+ - lib/fastlane/actions/xcake.rb
704
722
  - lib/fastlane/actions/xcode_install.rb
705
723
  - lib/fastlane/actions/xcode_select.rb
706
724
  - lib/fastlane/actions/xcode_server_get_assets.rb
@@ -754,7 +772,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
754
772
  version: '0'
755
773
  requirements: []
756
774
  rubyforge_project:
757
- rubygems_version: 2.4.0
775
+ rubygems_version: 2.4.6
758
776
  signing_key:
759
777
  specification_version: 4
760
778
  summary: Connect all iOS deployment tools into one streamlined workflow