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
@@ -1,51 +1,13 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Actions
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
require 'precheck'
|
9
|
-
Precheck.config = config
|
10
|
-
return Precheck::Runner.new.run
|
11
|
-
end
|
3
|
+
require 'fastlane/actions/check_app_store_metadata'
|
4
|
+
class PrecheckAction < CheckAppStoreMetadataAction
|
5
|
+
#####################################################
|
6
|
+
# @!group Documentation
|
7
|
+
#####################################################
|
12
8
|
|
13
9
|
def self.description
|
14
|
-
"
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.details
|
18
|
-
"More information: https://fastlane.tools/precheck"
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.available_options
|
22
|
-
require 'precheck/options'
|
23
|
-
Precheck::Options.available_options
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.return_value
|
27
|
-
return "true if precheck passes, else, false"
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.authors
|
31
|
-
["taquitos"]
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.is_supported?(platform)
|
35
|
-
platform == :ios
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.example_code
|
39
|
-
[
|
40
|
-
'precheck(
|
41
|
-
negative_apple_sentiment(level: :skip), # Set to skip to not run the `negative_apple_sentiment` rule
|
42
|
-
curse_words(level: :warn) # Set to warn to only warn on curse word check failures
|
43
|
-
)'
|
44
|
-
]
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.category
|
48
|
-
:misc
|
10
|
+
"Alias for the `check_app_store_metadata` action"
|
49
11
|
end
|
50
12
|
end
|
51
13
|
end
|
@@ -1,73 +1,13 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Actions
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
def self.run(params)
|
9
|
-
require 'produce'
|
10
|
-
|
11
|
-
return if Helper.test?
|
12
|
-
|
13
|
-
Produce.config = params # we alread have the finished config
|
14
|
-
|
15
|
-
Dir.chdir(FastlaneCore::FastlaneFolder.path || Dir.pwd) do
|
16
|
-
# This should be executed in the fastlane folder
|
17
|
-
apple_id = Produce::Manager.start_producing.to_s
|
18
|
-
|
19
|
-
Actions.lane_context[SharedValues::PRODUCE_APPLE_ID] = apple_id
|
20
|
-
ENV['PRODUCE_APPLE_ID'] = apple_id
|
21
|
-
end
|
22
|
-
end
|
3
|
+
require 'fastlane/actions/create_app_online'
|
4
|
+
class ProduceAction < CreateAppOnlineAction
|
5
|
+
#####################################################
|
6
|
+
# @!group Documentation
|
7
|
+
#####################################################
|
23
8
|
|
24
9
|
def self.description
|
25
|
-
"
|
26
|
-
end
|
27
|
-
|
28
|
-
def details
|
29
|
-
[
|
30
|
-
'Create new apps on iTunes Connect and Apple Developer Portal. If the app already exists, `produce` will not do anything.',
|
31
|
-
'For more information about produce, visit its GitHub page:',
|
32
|
-
'https://github.com/fastlane/fastlane/tree/master/produce'
|
33
|
-
].join(' ')
|
34
|
-
end
|
35
|
-
|
36
|
-
def self.available_options
|
37
|
-
require 'produce'
|
38
|
-
Produce::Options.available_options
|
39
|
-
end
|
40
|
-
|
41
|
-
def self.output
|
42
|
-
[
|
43
|
-
['PRODUCE_APPLE_ID', 'The Apple ID of the newly created app. You probably need it for `deliver`']
|
44
|
-
]
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.author
|
48
|
-
"KrauseFx"
|
49
|
-
end
|
50
|
-
|
51
|
-
def self.is_supported?(platform)
|
52
|
-
platform == :ios
|
53
|
-
end
|
54
|
-
|
55
|
-
def self.example_code
|
56
|
-
[
|
57
|
-
'produce(
|
58
|
-
username: "felix@krausefx.com",
|
59
|
-
app_identifier: "com.krausefx.app",
|
60
|
-
app_name: "MyApp",
|
61
|
-
language: "English",
|
62
|
-
app_version: "1.0",
|
63
|
-
sku: "123",
|
64
|
-
team_name: "SunApps GmbH" # Only necessary when in multiple teams.
|
65
|
-
)'
|
66
|
-
]
|
67
|
-
end
|
68
|
-
|
69
|
-
def self.category
|
70
|
-
:misc
|
10
|
+
"Alias for the `create_app_online` action"
|
71
11
|
end
|
72
12
|
end
|
73
13
|
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
module SharedValues
|
4
|
+
SCAN_DERIVED_DATA_PATH = :SCAN_DERIVED_DATA_PATH
|
5
|
+
SCAN_GENERATED_PLIST_FILE = :SCAN_GENERATED_PLIST_FILE
|
6
|
+
SCAN_GENERATED_PLIST_FILES = :SCAN_GENERATED_PLIST_FILES
|
7
|
+
end
|
8
|
+
|
9
|
+
class RunTestsAction < Action
|
10
|
+
def self.run(values)
|
11
|
+
require 'scan'
|
12
|
+
plist_files_before = []
|
13
|
+
|
14
|
+
begin
|
15
|
+
destination = values[:destination] # save destination value which can be later overridden
|
16
|
+
Scan.config = values # we set this here to auto-detect missing values, which we need later on
|
17
|
+
unless values[:derived_data_path].to_s.empty?
|
18
|
+
plist_files_before = test_summary_filenames(values[:derived_data_path])
|
19
|
+
end
|
20
|
+
|
21
|
+
values[:destination] = destination # restore destination value
|
22
|
+
Scan::Manager.new.work(values)
|
23
|
+
|
24
|
+
return true
|
25
|
+
rescue => ex
|
26
|
+
if values[:fail_build]
|
27
|
+
raise ex
|
28
|
+
end
|
29
|
+
ensure
|
30
|
+
unless values[:derived_data_path].to_s.empty?
|
31
|
+
Actions.lane_context[SharedValues::SCAN_DERIVED_DATA_PATH] = values[:derived_data_path]
|
32
|
+
plist_files_after = test_summary_filenames(values[:derived_data_path])
|
33
|
+
all_test_summaries = (plist_files_after - plist_files_before)
|
34
|
+
Actions.lane_context[SharedValues::SCAN_GENERATED_PLIST_FILES] = all_test_summaries
|
35
|
+
Actions.lane_context[SharedValues::SCAN_GENERATED_PLIST_FILE] = all_test_summaries.last
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.description
|
41
|
+
"Easily run tests of your iOS app (via `scan`)"
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.details
|
45
|
+
"More information: https://github.com/fastlane/fastlane/tree/master/scan"
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.author
|
49
|
+
"KrauseFx"
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.available_options
|
53
|
+
require 'scan'
|
54
|
+
|
55
|
+
FastlaneCore::CommanderGenerator.new.generate(Scan::Options.available_options) + [
|
56
|
+
FastlaneCore::ConfigItem.new(key: :fail_build,
|
57
|
+
env_name: "SCAN_FAIL_BUILD",
|
58
|
+
description: "Should this step stop the build if the tests fail? Set this to false if you're using trainer",
|
59
|
+
is_string: false,
|
60
|
+
default_value: true)
|
61
|
+
]
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.is_supported?(platform)
|
65
|
+
[:ios, :mac].include? platform
|
66
|
+
end
|
67
|
+
|
68
|
+
private_class_method
|
69
|
+
|
70
|
+
def self.test_summary_filenames(derived_data_path)
|
71
|
+
Dir["#{derived_data_path}/**/Logs/Test/*TestSummaries.plist"]
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.example_code
|
75
|
+
[
|
76
|
+
'run_tests',
|
77
|
+
'scan # alias for "run_tests"',
|
78
|
+
'run_tests(
|
79
|
+
workspace: "App.xcworkspace",
|
80
|
+
scheme: "MyTests",
|
81
|
+
clean: false
|
82
|
+
)',
|
83
|
+
'# Build For Testing
|
84
|
+
run_tests(
|
85
|
+
derived_data_path: "my_folder",
|
86
|
+
build_for_testing: true
|
87
|
+
)',
|
88
|
+
'# run tests using derived data from prev. build
|
89
|
+
run_tests(
|
90
|
+
derived_data_path: "my_folder",
|
91
|
+
test_without_building: true
|
92
|
+
)',
|
93
|
+
'# or run it from an existing xctestrun package
|
94
|
+
run_tests(
|
95
|
+
xctestrun: "/path/to/mytests.xctestrun"
|
96
|
+
)'
|
97
|
+
]
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.category
|
101
|
+
:testing
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -1,103 +1,13 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Actions
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
class ScanAction < Action
|
10
|
-
def self.run(values)
|
11
|
-
require 'scan'
|
12
|
-
plist_files_before = []
|
13
|
-
|
14
|
-
begin
|
15
|
-
destination = values[:destination] # save destination value which can be later overridden
|
16
|
-
Scan.config = values # we set this here to auto-detect missing values, which we need later on
|
17
|
-
unless values[:derived_data_path].to_s.empty?
|
18
|
-
plist_files_before = test_summary_filenames(values[:derived_data_path])
|
19
|
-
end
|
20
|
-
|
21
|
-
values[:destination] = destination # restore destination value
|
22
|
-
Scan::Manager.new.work(values)
|
23
|
-
|
24
|
-
return true
|
25
|
-
rescue => ex
|
26
|
-
if values[:fail_build]
|
27
|
-
raise ex
|
28
|
-
end
|
29
|
-
ensure
|
30
|
-
unless values[:derived_data_path].to_s.empty?
|
31
|
-
Actions.lane_context[SharedValues::SCAN_DERIVED_DATA_PATH] = values[:derived_data_path]
|
32
|
-
plist_files_after = test_summary_filenames(values[:derived_data_path])
|
33
|
-
all_test_summaries = (plist_files_after - plist_files_before)
|
34
|
-
Actions.lane_context[SharedValues::SCAN_GENERATED_PLIST_FILES] = all_test_summaries
|
35
|
-
Actions.lane_context[SharedValues::SCAN_GENERATED_PLIST_FILE] = all_test_summaries.last
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
3
|
+
require 'fastlane/actions/run_tests'
|
4
|
+
class ScanAction < RunTestsAction
|
5
|
+
#####################################################
|
6
|
+
# @!group Documentation
|
7
|
+
#####################################################
|
39
8
|
|
40
9
|
def self.description
|
41
|
-
"
|
42
|
-
end
|
43
|
-
|
44
|
-
def self.details
|
45
|
-
"More information: https://github.com/fastlane/fastlane/tree/master/scan"
|
46
|
-
end
|
47
|
-
|
48
|
-
def self.author
|
49
|
-
"KrauseFx"
|
50
|
-
end
|
51
|
-
|
52
|
-
def self.available_options
|
53
|
-
require 'scan'
|
54
|
-
|
55
|
-
FastlaneCore::CommanderGenerator.new.generate(Scan::Options.available_options) + [
|
56
|
-
FastlaneCore::ConfigItem.new(key: :fail_build,
|
57
|
-
env_name: "SCAN_FAIL_BUILD",
|
58
|
-
description: "Should this step stop the build if the tests fail? Set this to false if you're using trainer",
|
59
|
-
is_string: false,
|
60
|
-
default_value: true)
|
61
|
-
]
|
62
|
-
end
|
63
|
-
|
64
|
-
def self.is_supported?(platform)
|
65
|
-
[:ios, :mac].include? platform
|
66
|
-
end
|
67
|
-
|
68
|
-
private_class_method
|
69
|
-
|
70
|
-
def self.test_summary_filenames(derived_data_path)
|
71
|
-
Dir["#{derived_data_path}/**/Logs/Test/*TestSummaries.plist"]
|
72
|
-
end
|
73
|
-
|
74
|
-
def self.example_code
|
75
|
-
[
|
76
|
-
'scan',
|
77
|
-
'scan(
|
78
|
-
workspace: "App.xcworkspace",
|
79
|
-
scheme: "MyTests",
|
80
|
-
clean: false
|
81
|
-
)',
|
82
|
-
'# Build For Testing
|
83
|
-
scan(
|
84
|
-
derived_data_path: "my_folder",
|
85
|
-
build_for_testing: true
|
86
|
-
)',
|
87
|
-
'# run tests using derived data from prev. build
|
88
|
-
scan(
|
89
|
-
derived_data_path: "my_folder",
|
90
|
-
test_without_building: true
|
91
|
-
)',
|
92
|
-
'# or run it from an existing xctestrun package
|
93
|
-
scan(
|
94
|
-
xctestrun: "/path/to/mytests.xctestrun"
|
95
|
-
)'
|
96
|
-
]
|
97
|
-
end
|
98
|
-
|
99
|
-
def self.category
|
100
|
-
:testing
|
10
|
+
"Alias for the `run_tests` action"
|
101
11
|
end
|
102
12
|
end
|
103
13
|
end
|
@@ -1,55 +1,13 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Actions
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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
|
3
|
+
require 'fastlane/actions/capture_android_screenshots'
|
4
|
+
class ScreengrabAction < CaptureAndroidScreenshotsAction
|
5
|
+
#####################################################
|
6
|
+
# @!group Documentation
|
7
|
+
#####################################################
|
21
8
|
|
22
9
|
def self.description
|
23
|
-
|
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
|
-
'screengrab',
|
42
|
-
'screengrab(
|
43
|
-
locales: ["en-US", "fr-FR", "ja-JP"],
|
44
|
-
clear_previous_screenshots: true,
|
45
|
-
app_apk_path: "build/outputs/apk/example-debug.apk",
|
46
|
-
tests_apk_path: "build/outputs/apk/example-debug-androidTest-unaligned.apk"
|
47
|
-
)'
|
48
|
-
]
|
49
|
-
end
|
50
|
-
|
51
|
-
def self.category
|
52
|
-
:screenshots
|
10
|
+
"Alias for the `capture_android_screenshots` action"
|
53
11
|
end
|
54
12
|
end
|
55
13
|
end
|
@@ -1,86 +1,13 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Actions
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
SIGH_NAME = :SIGH_NAME
|
9
|
-
SIGH_PROFILE_TYPE = :SIGH_PROFILE_TYPE
|
10
|
-
end
|
11
|
-
|
12
|
-
class SighAction < Action
|
13
|
-
def self.run(values)
|
14
|
-
require 'sigh'
|
15
|
-
require 'credentials_manager/appfile_config'
|
16
|
-
|
17
|
-
Sigh.config = values # we already have the finished config
|
18
|
-
|
19
|
-
path = Sigh::Manager.start
|
20
|
-
|
21
|
-
Actions.lane_context[SharedValues::SIGH_PROFILE_PATH] = path # absolute path
|
22
|
-
Actions.lane_context[SharedValues::SIGH_PROFILE_PATHS] ||= []
|
23
|
-
Actions.lane_context[SharedValues::SIGH_PROFILE_PATHS] << path
|
24
|
-
|
25
|
-
uuid = ENV["SIGH_UUID"] || ENV["SIGH_UDID"] # the UUID of the profile
|
26
|
-
name = ENV["SIGH_NAME"] # the name of the profile
|
27
|
-
Actions.lane_context[SharedValues::SIGH_UUID] = Actions.lane_context[SharedValues::SIGH_UDID] = uuid if uuid
|
28
|
-
Actions.lane_context[SharedValues::SIGH_NAME] = Actions.lane_context[SharedValues::SIGH_NAME] = name if name
|
29
|
-
|
30
|
-
set_profile_type(values, ENV["SIGH_PROFILE_ENTERPRISE"])
|
31
|
-
|
32
|
-
return uuid # returs uuid of profile
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.set_profile_type(values, enterprise)
|
36
|
-
profile_type = "app-store"
|
37
|
-
profile_type = "ad-hoc" if values[:adhoc]
|
38
|
-
profile_type = "development" if values[:development]
|
39
|
-
profile_type = "enterprise" if enterprise
|
40
|
-
|
41
|
-
UI.message("Setting Provisioning Profile type to '#{profile_type}'")
|
42
|
-
|
43
|
-
Actions.lane_context[SharedValues::SIGH_PROFILE_TYPE] = profile_type
|
44
|
-
end
|
3
|
+
require 'fastlane/actions/get_provisioning_profile'
|
4
|
+
class SighAction < GetProvisioningProfileAction
|
5
|
+
#####################################################
|
6
|
+
# @!group Documentation
|
7
|
+
#####################################################
|
45
8
|
|
46
9
|
def self.description
|
47
|
-
"
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.author
|
51
|
-
"KrauseFx"
|
52
|
-
end
|
53
|
-
|
54
|
-
def self.return_value
|
55
|
-
"The UUID of the profile sigh just fetched/generated"
|
56
|
-
end
|
57
|
-
|
58
|
-
def self.details
|
59
|
-
"**Note**: 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 provisioning profiles. Use _sigh_ directly only if you want full control over what's going on and know more about codesigning."
|
60
|
-
end
|
61
|
-
|
62
|
-
def self.available_options
|
63
|
-
require 'sigh'
|
64
|
-
Sigh::Options.available_options
|
65
|
-
end
|
66
|
-
|
67
|
-
def self.is_supported?(platform)
|
68
|
-
platform == :ios
|
69
|
-
end
|
70
|
-
|
71
|
-
def self.example_code
|
72
|
-
[
|
73
|
-
'sigh',
|
74
|
-
'sigh(
|
75
|
-
adhoc: true,
|
76
|
-
force: true,
|
77
|
-
filename: "myFile.mobileprovision"
|
78
|
-
)'
|
79
|
-
]
|
80
|
-
end
|
81
|
-
|
82
|
-
def self.category
|
83
|
-
:code_signing
|
10
|
+
"Alias for the `get_provisioning_profile` action"
|
84
11
|
end
|
85
12
|
end
|
86
13
|
end
|