fastlane 2.68.0.beta.20171129010003 → 2.68.0.beta.20171130010004
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.
- checksums.yaml +4 -4
- data/fastlane/lib/assets/ActionDetails.md.erb +2 -2
- data/fastlane/lib/fastlane/actions/appstore.rb +3 -32
- data/fastlane/lib/fastlane/actions/build_android_app.rb +14 -0
- data/fastlane/lib/fastlane/actions/build_app.rb +14 -0
- data/fastlane/lib/fastlane/actions/build_ios_app.rb +143 -0
- data/fastlane/lib/fastlane/actions/capture_android_screenshots.rb +57 -0
- data/fastlane/lib/fastlane/actions/capture_ios_screenshots.rb +55 -0
- data/fastlane/lib/fastlane/actions/capture_screenshots.rb +14 -0
- data/fastlane/lib/fastlane/actions/cert.rb +6 -60
- data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +53 -0
- data/fastlane/lib/fastlane/actions/create_app_online.rb +76 -0
- data/fastlane/lib/fastlane/actions/deliver.rb +6 -56
- data/fastlane/lib/fastlane/actions/docs/frameit.md +2 -1
- data/fastlane/lib/fastlane/actions/frame_screenshots.rb +62 -0
- data/fastlane/lib/fastlane/actions/frameit.rb +6 -53
- data/fastlane/lib/fastlane/actions/get_certificates.rb +69 -0
- data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +88 -0
- data/fastlane/lib/fastlane/actions/get_push_certificate.rb +82 -0
- data/fastlane/lib/fastlane/actions/gym.rb +6 -133
- data/fastlane/lib/fastlane/actions/match.rb +3 -87
- data/fastlane/lib/fastlane/actions/pem.rb +6 -73
- data/fastlane/lib/fastlane/actions/pilot.rb +3 -55
- data/fastlane/lib/fastlane/actions/precheck.rb +6 -44
- data/fastlane/lib/fastlane/actions/produce.rb +6 -66
- data/fastlane/lib/fastlane/actions/run_tests.rb +105 -0
- data/fastlane/lib/fastlane/actions/scan.rb +6 -96
- data/fastlane/lib/fastlane/actions/screengrab.rb +6 -48
- data/fastlane/lib/fastlane/actions/sigh.rb +6 -79
- data/fastlane/lib/fastlane/actions/snapshot.rb +6 -46
- data/fastlane/lib/fastlane/actions/supply.rb +3 -56
- data/fastlane/lib/fastlane/actions/sync_code_signing.rb +99 -0
- data/fastlane/lib/fastlane/actions/testflight.rb +3 -32
- data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +67 -0
- data/fastlane/lib/fastlane/actions/upload_to_play_store.rb +68 -0
- data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +67 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/spaceship/lib/spaceship/client.rb +1 -1
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b66413a1158fdc02ea6bdb1b110be9324b6ae3b6
|
4
|
+
data.tar.gz: a2c9704c99f20f2edb0dea198010b7e108802193
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d357cd6fff85dabe65750095246ce39eaf64f43c6610af0276652b3c4cc0616554d671cc0dbcd68b7a3ca9a4baf3368d7f5aff5d2871d5701667db705e2ff50
|
7
|
+
data.tar.gz: 11338684d76f1fc54931382b069af86cb600bcb368ea99ab834f5aee15caa97d153c97089e8a2f9deb54fbcb71a40c3a70952ec7f8ebcbb5b5d6dcc9cc29c406
|
@@ -27,7 +27,7 @@ Returns | <%= action.return_value %>
|
|
27
27
|
|
28
28
|
<% if (action.example_code || []).count > 0 %>
|
29
29
|
|
30
|
-
|
30
|
+
## <%= action.example_code.count %> Example<%= (action.example_code.count > 1) ? "s" : "" %>
|
31
31
|
<% action.example_code.each do |current_sample| %>
|
32
32
|
```ruby
|
33
33
|
<%= current_sample.gsub(" ", "") %>
|
@@ -37,7 +37,7 @@ Returns | <%= action.return_value %>
|
|
37
37
|
|
38
38
|
<% if action.available_options && action.available_options.first.kind_of?(FastlaneCore::ConfigItem) %>
|
39
39
|
|
40
|
-
|
40
|
+
## Parameters
|
41
41
|
|
42
42
|
Key | Description
|
43
43
|
----|------------
|
@@ -1,42 +1,13 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Actions
|
3
|
-
|
4
|
-
|
5
|
-
Actions::DeliverAction.run(params)
|
6
|
-
end
|
7
|
-
|
3
|
+
require 'fastlane/actions/upload_to_app_store'
|
4
|
+
class AppstoreAction < UploadToAppStoreAction
|
8
5
|
#####################################################
|
9
6
|
# @!group Documentation
|
10
7
|
#####################################################
|
11
8
|
|
12
9
|
def self.description
|
13
|
-
"Alias for the
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.available_options
|
17
|
-
require "deliver"
|
18
|
-
require "deliver/options"
|
19
|
-
FastlaneCore::CommanderGenerator.new.generate(Deliver::Options.available_options)
|
20
|
-
end
|
21
|
-
|
22
|
-
def self.output
|
23
|
-
[]
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.author
|
27
|
-
'KrauseFx'
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.is_supported?(platform)
|
31
|
-
Actions::DeliverAction.is_supported?(platform)
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.category
|
35
|
-
Actions::DeliverAction.category
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.example_code
|
39
|
-
Actions::DeliverAction.example_code
|
10
|
+
"Alias for the `upload_to_app_store` action"
|
40
11
|
end
|
41
12
|
end
|
42
13
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
require 'fastlane/actions/gradle'
|
4
|
+
class BuildAndroidAppAction < GradleAction
|
5
|
+
#####################################################
|
6
|
+
# @!group Documentation
|
7
|
+
#####################################################
|
8
|
+
|
9
|
+
def self.description
|
10
|
+
"Alias for the `gradle` action"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
require 'fastlane/actions/build_ios_app'
|
4
|
+
class BuildAppAction < BuildIosAppAction
|
5
|
+
#####################################################
|
6
|
+
# @!group Documentation
|
7
|
+
#####################################################
|
8
|
+
|
9
|
+
def self.description
|
10
|
+
"Alias for the `build_ios_app` action"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,143 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
module SharedValues
|
4
|
+
IPA_OUTPUT_PATH = :IPA_OUTPUT_PATH
|
5
|
+
DSYM_OUTPUT_PATH = :DSYM_OUTPUT_PATH
|
6
|
+
end
|
7
|
+
|
8
|
+
class BuildIosAppAction < Action
|
9
|
+
def self.run(values)
|
10
|
+
require 'gym'
|
11
|
+
|
12
|
+
unless Actions.lane_context[SharedValues::SIGH_PROFILE_TYPE].to_s == "development"
|
13
|
+
values[:export_method] ||= Actions.lane_context[SharedValues::SIGH_PROFILE_TYPE]
|
14
|
+
end
|
15
|
+
|
16
|
+
if Actions.lane_context[SharedValues::MATCH_PROVISIONING_PROFILE_MAPPING]
|
17
|
+
# Since Xcode 9 you need to explicitly provide the provisioning profile per app target
|
18
|
+
# If the user is smart and uses match and gym together with fastlane, we can do all
|
19
|
+
# the heavy lifting for them
|
20
|
+
values[:export_options] ||= {}
|
21
|
+
# It's not always a hash, because the user might have passed a string path to a ready plist file
|
22
|
+
# If that's the case, we won't set the provisioning profiles
|
23
|
+
# see https://github.com/fastlane/fastlane/issues/9490
|
24
|
+
if values[:export_options].kind_of?(Hash)
|
25
|
+
match_mapping = (Actions.lane_context[SharedValues::MATCH_PROVISIONING_PROFILE_MAPPING] || {}).dup
|
26
|
+
existing_mapping = (values[:export_options][:provisioningProfiles] || {}).dup
|
27
|
+
|
28
|
+
# Be smart about how we merge those mappings in case there are conflicts
|
29
|
+
mapping_object = Gym::CodeSigningMapping.new
|
30
|
+
hash_to_use = mapping_object.merge_profile_mapping(primary_mapping: existing_mapping,
|
31
|
+
secondary_mapping: match_mapping,
|
32
|
+
export_method: values[:export_method])
|
33
|
+
|
34
|
+
values[:export_options][:provisioningProfiles] = hash_to_use
|
35
|
+
else
|
36
|
+
self.show_xcode_9_warning
|
37
|
+
end
|
38
|
+
elsif Actions.lane_context[SharedValues::SIGH_PROFILE_PATHS]
|
39
|
+
# Since Xcode 9 you need to explicitly provide the provisioning profile per app target
|
40
|
+
# If the user used sigh we can match the profiles from sigh
|
41
|
+
values[:export_options] ||= {}
|
42
|
+
if values[:export_options].kind_of?(Hash)
|
43
|
+
# It's not always a hash, because the user might have passed a string path to a ready plist file
|
44
|
+
# If that's the case, we won't set the provisioning profiles
|
45
|
+
# see https://github.com/fastlane/fastlane/issues/9684
|
46
|
+
values[:export_options][:provisioningProfiles] ||= {}
|
47
|
+
Actions.lane_context[SharedValues::SIGH_PROFILE_PATHS].each do |profile_path|
|
48
|
+
begin
|
49
|
+
profile = FastlaneCore::ProvisioningProfile.parse(profile_path)
|
50
|
+
profile_team_id = profile["TeamIdentifier"].first
|
51
|
+
next if profile_team_id != values[:export_team_id] && !values[:export_team_id].nil?
|
52
|
+
bundle_id = profile["Entitlements"]["application-identifier"].gsub("#{profile_team_id}.", "")
|
53
|
+
values[:export_options][:provisioningProfiles][bundle_id] = profile["Name"]
|
54
|
+
rescue => ex
|
55
|
+
UI.error("Couldn't load profile at path: #{profile_path}")
|
56
|
+
UI.error(ex)
|
57
|
+
UI.verbose(ex.backtrace.join("\n"))
|
58
|
+
end
|
59
|
+
end
|
60
|
+
else
|
61
|
+
self.show_xcode_9_warning
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
gym_output_path = Gym::Manager.new.work(values)
|
66
|
+
if gym_output_path.nil?
|
67
|
+
UI.important("No output path received from gym")
|
68
|
+
return nil
|
69
|
+
end
|
70
|
+
|
71
|
+
absolute_ipa_path = File.expand_path(gym_output_path)
|
72
|
+
absolute_dsym_path = absolute_ipa_path.gsub(".ipa", ".app.dSYM.zip")
|
73
|
+
|
74
|
+
# This might be the mac app path, so we don't want to set it here
|
75
|
+
# https://github.com/fastlane/fastlane/issues/5757
|
76
|
+
if absolute_ipa_path.include?(".ipa")
|
77
|
+
Actions.lane_context[SharedValues::IPA_OUTPUT_PATH] = absolute_ipa_path
|
78
|
+
ENV[SharedValues::IPA_OUTPUT_PATH.to_s] = absolute_ipa_path # for deliver
|
79
|
+
end
|
80
|
+
|
81
|
+
Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH] = absolute_dsym_path if File.exist?(absolute_dsym_path)
|
82
|
+
Actions.lane_context[SharedValues::XCODEBUILD_ARCHIVE] = Gym::BuildCommandGenerator.archive_path
|
83
|
+
ENV[SharedValues::DSYM_OUTPUT_PATH.to_s] = absolute_dsym_path if File.exist?(absolute_dsym_path)
|
84
|
+
|
85
|
+
return absolute_ipa_path
|
86
|
+
end
|
87
|
+
|
88
|
+
def self.description
|
89
|
+
"Easily build and sign your app (via gym)"
|
90
|
+
end
|
91
|
+
|
92
|
+
def self.details
|
93
|
+
"More information: https://fastlane.tools/gym"
|
94
|
+
end
|
95
|
+
|
96
|
+
def self.return_value
|
97
|
+
"The absolute path to the generated ipa file"
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.author
|
101
|
+
"KrauseFx"
|
102
|
+
end
|
103
|
+
|
104
|
+
def self.available_options
|
105
|
+
require 'gym'
|
106
|
+
Gym::Options.available_options
|
107
|
+
end
|
108
|
+
|
109
|
+
def self.is_supported?(platform)
|
110
|
+
[:ios, :mac].include? platform
|
111
|
+
end
|
112
|
+
|
113
|
+
def self.example_code
|
114
|
+
[
|
115
|
+
'build_ios_app(scheme: "MyApp", workspace: "MyApp.xcworkspace")',
|
116
|
+
'build_ios_app(
|
117
|
+
workspace: "MyApp.xcworkspace",
|
118
|
+
configuration: "Debug",
|
119
|
+
scheme: "MyApp",
|
120
|
+
silent: true,
|
121
|
+
clean: true,
|
122
|
+
output_directory: "path/to/dir", # Destination directory. Defaults to current directory.
|
123
|
+
output_name: "my-app.ipa", # specify the name of the .ipa file to generate (including file extension)
|
124
|
+
sdk: "10.0" # use SDK as the name or path of the base SDK when building the project.
|
125
|
+
)',
|
126
|
+
'gym(...) # alias for "build_ios_app"',
|
127
|
+
'build_app(...) # alias for "build_ios_app"'
|
128
|
+
]
|
129
|
+
end
|
130
|
+
|
131
|
+
def self.category
|
132
|
+
:building
|
133
|
+
end
|
134
|
+
|
135
|
+
def self.show_xcode_9_warning
|
136
|
+
return unless Helper.xcode_at_least?("9.0")
|
137
|
+
UI.message("You passed a path to a custom plist file for exporting the binary.")
|
138
|
+
UI.message("Make sure to include information about what provisioning profiles to use with Xcode 9")
|
139
|
+
UI.message("More information: https://docs.fastlane.tools/codesigning/xcode-project/#xcode-9-and-up")
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
module SharedValues
|
4
|
+
SCREENGRAB_OUTPUT_DIRECTORY = :SCREENGRAB_OUTPUT_DIRECTORY
|
5
|
+
end
|
6
|
+
|
7
|
+
class CaptureAndroidScreenshotsAction < Action
|
8
|
+
def self.run(params)
|
9
|
+
require 'screengrab'
|
10
|
+
|
11
|
+
Screengrab.config = params
|
12
|
+
Screengrab.android_environment = Screengrab::AndroidEnvironment.new(params[:android_home],
|
13
|
+
params[:build_tools_version])
|
14
|
+
Screengrab::DependencyChecker.check(Screengrab.android_environment)
|
15
|
+
Screengrab::Runner.new.run
|
16
|
+
|
17
|
+
Actions.lane_context[SharedValues::SCREENGRAB_OUTPUT_DIRECTORY] = File.expand_path(params[:output_directory])
|
18
|
+
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.description
|
23
|
+
'Automated localized screenshots of your Android app (via `screengrab`)'
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.available_options
|
27
|
+
require 'screengrab'
|
28
|
+
Screengrab::Options.available_options
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.author
|
32
|
+
['asfalcone', 'i2amsam', 'mfurtak']
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.is_supported?(platform)
|
36
|
+
platform == :android
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.example_code
|
40
|
+
[
|
41
|
+
'capture_android_screenshots',
|
42
|
+
'screengrab # alias for "capture_android_screenshots"',
|
43
|
+
'capture_android_screenshots(
|
44
|
+
locales: ["en-US", "fr-FR", "ja-JP"],
|
45
|
+
clear_previous_screenshots: true,
|
46
|
+
app_apk_path: "build/outputs/apk/example-debug.apk",
|
47
|
+
tests_apk_path: "build/outputs/apk/example-debug-androidTest-unaligned.apk"
|
48
|
+
)'
|
49
|
+
]
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.category
|
53
|
+
:screenshots
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
module SharedValues
|
4
|
+
SNAPSHOT_SCREENSHOTS_PATH = :SNAPSHOT_SCREENSHOTS_PATH
|
5
|
+
end
|
6
|
+
|
7
|
+
class CaptureIosScreenshotsAction < Action
|
8
|
+
def self.run(params)
|
9
|
+
return nil unless Helper.mac?
|
10
|
+
require 'snapshot'
|
11
|
+
|
12
|
+
Snapshot.config = params
|
13
|
+
Snapshot::DependencyChecker.check_simulators
|
14
|
+
Snapshot::Runner.new.work
|
15
|
+
|
16
|
+
Actions.lane_context[SharedValues::SNAPSHOT_SCREENSHOTS_PATH] = File.expand_path(params[:output_directory]) # absolute URL
|
17
|
+
|
18
|
+
true
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.description
|
22
|
+
"Generate new localized screenshots on multiple devices (via `snapshot`)"
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.available_options
|
26
|
+
return [] unless Helper.mac?
|
27
|
+
require 'snapshot'
|
28
|
+
Snapshot::Options.available_options
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.author
|
32
|
+
"KrauseFx"
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.is_supported?(platform)
|
36
|
+
[:ios, :mac].include? platform
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.example_code
|
40
|
+
[
|
41
|
+
'capture_ios_screenshots',
|
42
|
+
'snapshot # alias for "capture_ios_screenshots"',
|
43
|
+
'capture_ios_screenshots(
|
44
|
+
skip_open_summary: true,
|
45
|
+
clean: true
|
46
|
+
)'
|
47
|
+
]
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.category
|
51
|
+
:screenshots
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
require 'fastlane/actions/capture_ios_screenshots'
|
4
|
+
class CaptureScreenshotsAction < CaptureIosScreenshotsAction
|
5
|
+
#####################################################
|
6
|
+
# @!group Documentation
|
7
|
+
#####################################################
|
8
|
+
|
9
|
+
def self.description
|
10
|
+
"Alias for the `capture_ios_screenshots` action"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,67 +1,13 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Actions
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
class CertAction < Action
|
9
|
-
def self.run(params)
|
10
|
-
require 'cert'
|
11
|
-
|
12
|
-
return if Helper.test?
|
13
|
-
|
14
|
-
begin
|
15
|
-
Cert.config = params # we alread have the finished config
|
16
|
-
|
17
|
-
Cert::Runner.new.launch
|
18
|
-
cert_file_path = ENV["CER_FILE_PATH"]
|
19
|
-
certificate_id = ENV["CER_CERTIFICATE_ID"]
|
20
|
-
Actions.lane_context[SharedValues::CERT_FILE_PATH] = cert_file_path
|
21
|
-
Actions.lane_context[SharedValues::CERT_CERTIFICATE_ID] = certificate_id
|
22
|
-
|
23
|
-
UI.success("Use signing certificate '#{certificate_id}' from now on!")
|
24
|
-
|
25
|
-
ENV["SIGH_CERTIFICATE_ID"] = certificate_id # for further use in the sigh action
|
26
|
-
end
|
27
|
-
end
|
3
|
+
require 'fastlane/actions/get_certificates'
|
4
|
+
class CertAction < GetCertificatesAction
|
5
|
+
#####################################################
|
6
|
+
# @!group Documentation
|
7
|
+
#####################################################
|
28
8
|
|
29
9
|
def self.description
|
30
|
-
"
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.details
|
34
|
-
[
|
35
|
-
"**Important**: It is recommended to use [match](https://github.com/fastlane/fastlane/tree/master/match) according to the [codesigning.guide](https://codesigning.guide) for generating and maintaining your certificates. Use _cert_ directly only if you want full control over what's going on and know more about codesigning.",
|
36
|
-
"Use this action to download the latest code signing identity"
|
37
|
-
].join("\n")
|
38
|
-
end
|
39
|
-
|
40
|
-
def self.available_options
|
41
|
-
require 'cert'
|
42
|
-
Cert::Options.available_options
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.author
|
46
|
-
"KrauseFx"
|
47
|
-
end
|
48
|
-
|
49
|
-
def self.is_supported?(platform)
|
50
|
-
platform == :ios
|
51
|
-
end
|
52
|
-
|
53
|
-
def self.example_code
|
54
|
-
[
|
55
|
-
'cert',
|
56
|
-
'cert(
|
57
|
-
development: true,
|
58
|
-
username: "user@email.com"
|
59
|
-
)'
|
60
|
-
]
|
61
|
-
end
|
62
|
-
|
63
|
-
def self.category
|
64
|
-
:code_signing
|
10
|
+
"Alias for the `get_certificates` action"
|
65
11
|
end
|
66
12
|
end
|
67
13
|
end
|