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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/fastlane/lib/assets/ActionDetails.md.erb +2 -2
  3. data/fastlane/lib/fastlane/actions/appstore.rb +3 -32
  4. data/fastlane/lib/fastlane/actions/build_android_app.rb +14 -0
  5. data/fastlane/lib/fastlane/actions/build_app.rb +14 -0
  6. data/fastlane/lib/fastlane/actions/build_ios_app.rb +143 -0
  7. data/fastlane/lib/fastlane/actions/capture_android_screenshots.rb +57 -0
  8. data/fastlane/lib/fastlane/actions/capture_ios_screenshots.rb +55 -0
  9. data/fastlane/lib/fastlane/actions/capture_screenshots.rb +14 -0
  10. data/fastlane/lib/fastlane/actions/cert.rb +6 -60
  11. data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +53 -0
  12. data/fastlane/lib/fastlane/actions/create_app_online.rb +76 -0
  13. data/fastlane/lib/fastlane/actions/deliver.rb +6 -56
  14. data/fastlane/lib/fastlane/actions/docs/frameit.md +2 -1
  15. data/fastlane/lib/fastlane/actions/frame_screenshots.rb +62 -0
  16. data/fastlane/lib/fastlane/actions/frameit.rb +6 -53
  17. data/fastlane/lib/fastlane/actions/get_certificates.rb +69 -0
  18. data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +88 -0
  19. data/fastlane/lib/fastlane/actions/get_push_certificate.rb +82 -0
  20. data/fastlane/lib/fastlane/actions/gym.rb +6 -133
  21. data/fastlane/lib/fastlane/actions/match.rb +3 -87
  22. data/fastlane/lib/fastlane/actions/pem.rb +6 -73
  23. data/fastlane/lib/fastlane/actions/pilot.rb +3 -55
  24. data/fastlane/lib/fastlane/actions/precheck.rb +6 -44
  25. data/fastlane/lib/fastlane/actions/produce.rb +6 -66
  26. data/fastlane/lib/fastlane/actions/run_tests.rb +105 -0
  27. data/fastlane/lib/fastlane/actions/scan.rb +6 -96
  28. data/fastlane/lib/fastlane/actions/screengrab.rb +6 -48
  29. data/fastlane/lib/fastlane/actions/sigh.rb +6 -79
  30. data/fastlane/lib/fastlane/actions/snapshot.rb +6 -46
  31. data/fastlane/lib/fastlane/actions/supply.rb +3 -56
  32. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +99 -0
  33. data/fastlane/lib/fastlane/actions/testflight.rb +3 -32
  34. data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +67 -0
  35. data/fastlane/lib/fastlane/actions/upload_to_play_store.rb +68 -0
  36. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +67 -0
  37. data/fastlane/lib/fastlane/version.rb +1 -1
  38. data/spaceship/lib/spaceship/client.rb +1 -1
  39. metadata +19 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 214350d2a2fb36bcb9e5986405534e1fd77524dc
4
- data.tar.gz: 3eba464e91ee8d1a657d5ebdb730ad5f78162ecc
3
+ metadata.gz: b66413a1158fdc02ea6bdb1b110be9324b6ae3b6
4
+ data.tar.gz: a2c9704c99f20f2edb0dea198010b7e108802193
5
5
  SHA512:
6
- metadata.gz: 5cbf535dc7856f6659775977f809a9cfaded54c56373c95c61a1721cb500cc1464941aef602ac52e6aeb241661b4ee834040a8c98a8e003a21c3827e70f8aa3e
7
- data.tar.gz: a86fc1671fe25112c93cb59d4eb0467f1b5e4fb5b2f912e719a5ba5cefbbe5bca9c460604ae3692533a2fc309fce2060502868ba2dbb87e3134c1086efa304b5
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
- **<%= action.example_code.count %> Example<%= (action.example_code.count > 1) ? "s" : "" %>**
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
- **Parameters**
40
+ ## Parameters
41
41
 
42
42
  Key | Description
43
43
  ----|------------
@@ -1,42 +1,13 @@
1
1
  module Fastlane
2
2
  module Actions
3
- class AppstoreAction < Action
4
- def self.run(params)
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 deliver action"
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
- module SharedValues
4
- CERT_FILE_PATH = :CERT_FILE_PATH
5
- CERT_CERTIFICATE_ID = :CERT_CERTIFICATE_ID
6
- end
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
- "Fetch or generate the latest available code signing identity"
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