fastlane 2.152.0 → 2.155.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +76 -76
  3. data/deliver/lib/deliver/app_screenshot.rb +1 -1
  4. data/deliver/lib/deliver/commands_generator.rb +7 -4
  5. data/deliver/lib/deliver/detect_values.rb +9 -3
  6. data/deliver/lib/deliver/download_screenshots.rb +1 -3
  7. data/deliver/lib/deliver/html_generator.rb +8 -1
  8. data/deliver/lib/deliver/runner.rb +5 -10
  9. data/deliver/lib/deliver/setup.rb +92 -3
  10. data/deliver/lib/deliver/submit_for_review.rb +1 -3
  11. data/deliver/lib/deliver/upload_metadata.rb +46 -26
  12. data/deliver/lib/deliver/upload_price_tier.rb +1 -3
  13. data/deliver/lib/deliver/upload_screenshots.rb +75 -44
  14. data/{deliver/lib/deliver/.commands_generator.rb.swp → fastlane/lib/fastlane/.erb_template_helper.rb.swp} +0 -0
  15. data/{frameit/lib/frameit/.editor.rb.swp → fastlane/lib/fastlane/actions/.git_commit.rb.swp} +0 -0
  16. data/fastlane/lib/fastlane/actions/carthage.rb +7 -0
  17. data/fastlane/lib/fastlane/actions/create_keychain.rb +5 -1
  18. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +3 -1
  19. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +21 -2
  20. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +4 -4
  21. data/fastlane/lib/fastlane/actions/download_dsyms.rb +4 -2
  22. data/fastlane/lib/fastlane/actions/erb.rb +10 -2
  23. data/fastlane/lib/fastlane/actions/git_pull.rb +13 -2
  24. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +5 -0
  25. data/fastlane/lib/fastlane/runner.rb +3 -1
  26. data/fastlane/lib/fastlane/version.rb +1 -1
  27. data/fastlane/swift/Deliverfile.swift +1 -1
  28. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  29. data/fastlane/swift/Fastlane.swift +407 -189
  30. data/fastlane/swift/Gymfile.swift +1 -1
  31. data/fastlane/swift/GymfileProtocol.swift +1 -1
  32. data/fastlane/swift/Matchfile.swift +1 -1
  33. data/fastlane/swift/MatchfileProtocol.swift +10 -2
  34. data/fastlane/swift/Precheckfile.swift +1 -1
  35. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  36. data/fastlane/swift/Scanfile.swift +1 -1
  37. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  38. data/fastlane/swift/Screengrabfile.swift +1 -1
  39. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  40. data/fastlane/swift/Snapshotfile.swift +1 -1
  41. data/fastlane/swift/SnapshotfileProtocol.swift +9 -1
  42. data/fastlane_core/lib/fastlane_core/device_manager.rb +25 -6
  43. data/frameit/lib/frameit/editor.rb +11 -6
  44. data/gym/lib/gym/detect_values.rb +6 -3
  45. data/gym/lib/gym/module.rb +30 -0
  46. data/gym/lib/gym/runner.rb +23 -18
  47. data/match/lib/match/generator.rb +6 -0
  48. data/match/lib/match/options.rb +16 -4
  49. data/match/lib/match/runner.rb +13 -5
  50. data/match/lib/match/spaceship_ensure.rb +7 -9
  51. data/match/lib/match/storage/git_storage.rb +16 -2
  52. data/match/lib/match/storage/google_cloud_storage.rb +1 -1
  53. data/pilot/lib/pilot/build_manager.rb +9 -0
  54. data/pilot/lib/pilot/options.rb +1 -1
  55. data/scan/lib/scan/runner.rb +19 -6
  56. data/sigh/lib/sigh/.runner.rb.swp +0 -0
  57. data/sigh/lib/sigh/download_all.rb +42 -27
  58. data/sigh/lib/sigh/module.rb +26 -0
  59. data/sigh/lib/sigh/options.rb +2 -2
  60. data/sigh/lib/sigh/runner.rb +96 -35
  61. data/snapshot/lib/snapshot/options.rb +10 -0
  62. data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
  63. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +5 -0
  64. data/snapshot/lib/snapshot/test_command_generator.rb +3 -2
  65. data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +4 -1
  66. data/spaceship/lib/spaceship/connect_api.rb +1 -0
  67. data/spaceship/lib/spaceship/connect_api/client.rb +5 -3
  68. data/spaceship/lib/spaceship/connect_api/model.rb +15 -1
  69. data/spaceship/lib/spaceship/connect_api/models/.device.rb.swp +0 -0
  70. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +1 -0
  71. data/spaceship/lib/spaceship/connect_api/models/app.rb +61 -3
  72. data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +1 -0
  73. data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +1 -0
  74. data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +44 -5
  75. data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +1 -0
  76. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +12 -0
  77. data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +1 -0
  78. data/spaceship/lib/spaceship/connect_api/models/app_store_version_release_request.rb +12 -0
  79. data/spaceship/lib/spaceship/connect_api/models/build.rb +1 -0
  80. data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +17 -5
  81. data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +41 -7
  82. data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +1 -0
  83. data/spaceship/lib/spaceship/connect_api/models/profile.rb +31 -1
  84. data/spaceship/lib/spaceship/connect_api/provisioning/client.rb +46 -4
  85. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +41 -0
  86. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +32 -1
  87. data/supply/lib/supply/client.rb +2 -1
  88. data/supply/lib/supply/options.rb +8 -1
  89. metadata +33 -58
  90. data/deliver/lib/deliver/.submit_for_review.rb.swp +0 -0
  91. data/deliver/lib/deliver/.upload_metadata.rb.swp +0 -0
@@ -7,9 +7,7 @@ require 'fastlane_core/pkg_file_analyser'
7
7
  module Deliver
8
8
  class SubmitForReview
9
9
  def submit!(options)
10
- legacy_app = options[:app]
11
- app_id = legacy_app.apple_id
12
- app = Spaceship::ConnectAPI::App.get(app_id: app_id)
10
+ app = options[:app]
13
11
 
14
12
  platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
15
13
  version = app.get_edit_app_store_version(platform: platform)
@@ -8,10 +8,10 @@ module Deliver
8
8
  LOCALISED_VERSION_VALUES = {
9
9
  description: "description",
10
10
  keywords: "keywords",
11
- release_notes: "whatsNew",
12
- support_url: "supportUrl",
13
- marketing_url: "marketingUrl",
14
- promotional_text: "promotionalText"
11
+ release_notes: "whats_new",
12
+ support_url: "support_url",
13
+ marketing_url: "marketing_url",
14
+ promotional_text: "promotional_text"
15
15
  }
16
16
 
17
17
  # Everything attached to the version but not being localised
@@ -23,14 +23,19 @@ module Deliver
23
23
  LOCALISED_APP_VALUES = {
24
24
  name: "name",
25
25
  subtitle: "subtitle",
26
- privacy_url: "privacyPolicyUrl",
27
- apple_tv_privacy_policy: "privacyPolicyText"
26
+ privacy_url: "privacy_policy_url",
27
+ apple_tv_privacy_policy: "privacy_policy_text"
28
28
  }
29
29
 
30
30
  # Non localized app details values
31
- NON_LOCALISED_APP_VALUES = [:primary_category, :secondary_category,
32
- :primary_first_sub_category, :primary_second_sub_category,
33
- :secondary_first_sub_category, :secondary_second_sub_category]
31
+ NON_LOCALISED_APP_VALUES = {
32
+ primary_category: :primary_category,
33
+ secondary_category: :secondary_category,
34
+ primary_first_sub_category: :primary_subcategory_one,
35
+ primary_second_sub_category: :primary_subcategory_two,
36
+ secondary_first_sub_category: :secondary_subcategory_one,
37
+ secondary_second_sub_category: :secondary_subcategory_two
38
+ }
34
39
 
35
40
  # Review information values
36
41
  REVIEW_INFORMATION_VALUES_LEGACY = {
@@ -43,12 +48,12 @@ module Deliver
43
48
  review_notes: :notes
44
49
  }
45
50
  REVIEW_INFORMATION_VALUES = {
46
- first_name: "contactFirstName",
47
- last_name: "contactLastName",
48
- phone_number: "contactPhone",
49
- email_address: "contactEmail",
50
- demo_user: "demoAccountName",
51
- demo_password: "demoAccountPassword",
51
+ first_name: "contact_first_name",
52
+ last_name: "contact_last_name",
53
+ phone_number: "contact_phone",
54
+ email_address: "contact_email",
55
+ demo_user: "demo_account_name",
56
+ demo_password: "demo_account_password",
52
57
  notes: "notes"
53
58
  }
54
59
 
@@ -74,9 +79,7 @@ module Deliver
74
79
  def upload(options)
75
80
  return if options[:skip_metadata]
76
81
 
77
- legacy_app = options[:app]
78
- app_id = legacy_app.apple_id
79
- app = Spaceship::ConnectAPI::App.get(app_id: app_id)
82
+ app = options[:app]
80
83
 
81
84
  platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
82
85
 
@@ -495,7 +498,7 @@ module Deliver
495
498
  end
496
499
 
497
500
  # Load non localised data
498
- (NON_LOCALISED_VERSION_VALUES.keys + NON_LOCALISED_APP_VALUES).each do |key|
501
+ (NON_LOCALISED_VERSION_VALUES.keys + NON_LOCALISED_APP_VALUES.keys).each do |key|
499
502
  path = File.join(options[:metadata_path], "#{key}.txt")
500
503
  next unless File.exist?(path)
501
504
 
@@ -504,13 +507,30 @@ module Deliver
504
507
  end
505
508
 
506
509
  # Load review information
507
- options[:app_review_information] ||= {}
508
- REVIEW_INFORMATION_VALUES.keys.each do |option_name|
510
+ # This is used to find the file path for both new and legacy review information filenames
511
+ resolve_review_info_path = lambda do |option_name|
509
512
  path = File.join(options[:metadata_path], REVIEW_INFORMATION_DIR, "#{option_name}.txt")
510
- next unless File.exist?(path)
511
- next if options[:app_review_information][option_name].to_s.length > 0
513
+ return nil unless File.exist?(path)
514
+ return nil if options[:app_review_information][option_name].to_s.length > 0
512
515
 
513
516
  UI.message("Loading '#{path}'...")
517
+ return path
518
+ end
519
+
520
+ # First try and load review information from legacy filenames
521
+ options[:app_review_information] ||= {}
522
+ REVIEW_INFORMATION_VALUES_LEGACY.each do |legacy_option_name, option_name|
523
+ path = resolve_review_info_path.call(legacy_option_name)
524
+ next if path.nil?
525
+ options[:app_review_information][option_name] ||= File.read(path)
526
+
527
+ UI.deprecated("Review rating option '#{legacy_option_name}' from iTunesConnect has been deprecated. Please replace with '#{option_name}'")
528
+ end
529
+
530
+ # Then load review information from new App Store Connect filenames
531
+ REVIEW_INFORMATION_VALUES.keys.each do |option_name|
532
+ path = resolve_review_info_path.call(option_name)
533
+ next if path.nil?
514
534
  options[:app_review_information][option_name] ||= File.read(path)
515
535
  end
516
536
  end
@@ -542,10 +562,10 @@ module Deliver
542
562
  attributes[attribute_name] = strip_value unless strip_value.empty?
543
563
  end
544
564
 
545
- if !attributes["demoAccountName"].to_s.empty? && !attributes["demoAccountPassword"].to_s.empty?
546
- attributes["demoAccountRequired"] = true
565
+ if !attributes["demo_account_name"].to_s.empty? && !attributes["demo_account_password"].to_s.empty?
566
+ attributes["demo_account_required"] = true
547
567
  else
548
- attributes["demoAccountRequired"] = false
568
+ attributes["demo_account_required"] = false
549
569
  end
550
570
 
551
571
  UI.message("Uploading app review information to App Store Connect")
@@ -9,9 +9,7 @@ module Deliver
9
9
 
10
10
  price_tier = options[:price_tier].to_s
11
11
 
12
- legacy_app = options[:app]
13
- app_id = legacy_app.apple_id
14
- app = Spaceship::ConnectAPI::App.get(app_id: app_id)
12
+ app = options[:app]
15
13
 
16
14
  attributes = {}
17
15
  territory_ids = []
@@ -12,9 +12,7 @@ module Deliver
12
12
  return if options[:skip_screenshots]
13
13
  return if options[:edit_live]
14
14
 
15
- legacy_app = options[:app]
16
- app_id = legacy_app.apple_id
17
- app = Spaceship::ConnectAPI::App.get(app_id: app_id)
15
+ app = options[:app]
18
16
 
19
17
  platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
20
18
  version = app.get_edit_app_store_version(platform: platform)
@@ -28,47 +26,7 @@ module Deliver
28
26
  localizations = version.get_app_store_version_localizations
29
27
 
30
28
  if options[:overwrite_screenshots]
31
- # Get localizations on version
32
- localizations.each do |localization|
33
- # Only delete screenshots if trying to upload
34
- next unless screenshots_per_language.keys.include?(localization.locale)
35
-
36
- # Iterate over all screenshots for each set and delete
37
- screenshot_sets = localization.get_app_screenshot_sets
38
-
39
- # Multi threading delete on single localization
40
- threads = []
41
- errors = []
42
-
43
- screenshot_sets.each do |screenshot_set|
44
- UI.message("Removing all previously uploaded screenshots for '#{localization.locale}' '#{screenshot_set.screenshot_display_type}'...")
45
- screenshot_set.app_screenshots.each do |screenshot|
46
- UI.verbose("Deleting screenshot - #{localization.locale} #{screenshot_set.screenshot_display_type} #{screenshot.id}")
47
- threads << Thread.new do
48
- begin
49
- screenshot.delete!
50
- UI.verbose("Deleted screenshot - #{localization.locale} #{screenshot_set.screenshot_display_type} #{screenshot.id}")
51
- rescue => error
52
- UI.verbose("Failed to delete screenshot - #{localization.locale} #{screenshot_set.screenshot_display_type} #{screenshot.id}")
53
- errors << error
54
- end
55
- end
56
- end
57
- end
58
-
59
- sleep(1) # Feels bad but sleeping a bit to let the threads catchup
60
-
61
- unless threads.empty?
62
- Helper.show_loading_indicator("Waiting for screenshots to be deleted for '#{localization.locale}'... (might be slow)") unless FastlaneCore::Globals.verbose?
63
- threads.each(&:join)
64
- Helper.hide_loading_indicator unless FastlaneCore::Globals.verbose?
65
- end
66
-
67
- # Crash if any errors happen while deleting
68
- errors.each do |error|
69
- UI.error(error.message)
70
- end
71
- end
29
+ delete_screenshots(localizations, screenshots_per_language)
72
30
  end
73
31
 
74
32
  # Finding languages to enable
@@ -95,6 +53,79 @@ module Deliver
95
53
  upload_screenshots(screenshots_per_language, localizations, options)
96
54
  end
97
55
 
56
+ def delete_screenshots(localizations, screenshots_per_language, tries: 5)
57
+ tries -= 1
58
+
59
+ # Get localizations on version
60
+ localizations.each do |localization|
61
+ # Only delete screenshots if trying to upload
62
+ next unless screenshots_per_language.keys.include?(localization.locale)
63
+
64
+ # Iterate over all screenshots for each set and delete
65
+ screenshot_sets = localization.get_app_screenshot_sets
66
+
67
+ # Multi threading delete on single localization
68
+ threads = []
69
+ errors = []
70
+
71
+ screenshot_sets.each do |screenshot_set|
72
+ UI.message("Removing all previously uploaded screenshots for '#{localization.locale}' '#{screenshot_set.screenshot_display_type}'...")
73
+ screenshot_set.app_screenshots.each do |screenshot|
74
+ UI.verbose("Deleting screenshot - #{localization.locale} #{screenshot_set.screenshot_display_type} #{screenshot.id}")
75
+ threads << Thread.new do
76
+ begin
77
+ screenshot.delete!
78
+ UI.verbose("Deleted screenshot - #{localization.locale} #{screenshot_set.screenshot_display_type} #{screenshot.id}")
79
+ rescue => error
80
+ UI.verbose("Failed to delete screenshot - #{localization.locale} #{screenshot_set.screenshot_display_type} #{screenshot.id}")
81
+ errors << error
82
+ end
83
+ end
84
+ end
85
+ end
86
+
87
+ sleep(1) # Feels bad but sleeping a bit to let the threads catchup
88
+
89
+ unless threads.empty?
90
+ Helper.show_loading_indicator("Waiting for screenshots to be deleted for '#{localization.locale}'... (might be slow)") unless FastlaneCore::Globals.verbose?
91
+ threads.each(&:join)
92
+ Helper.hide_loading_indicator unless FastlaneCore::Globals.verbose?
93
+ end
94
+
95
+ # Crash if any errors happen while deleting
96
+ errors.each do |error|
97
+ UI.error(error.message)
98
+ end
99
+ end
100
+
101
+ # Verify all screenshots have been deleted
102
+ # Sometimes API requests will fail but screenshots will still be deleted
103
+ count = count_screenshots(localizations)
104
+ UI.important("Number of screenshots not deleted: #{count}")
105
+ if count > 0
106
+ if tries.zero?
107
+ UI.user_error!("Failed verification of all screenshots deleted... #{count} screenshot(s) still exist")
108
+ else
109
+ UI.error("Failed to delete all screenshots... Tries remaining: #{tries}")
110
+ delete_screenshots(localizations, screenshots_per_language, tries: tries)
111
+ end
112
+ else
113
+ UI.message("Successfully deleted all screenshots")
114
+ end
115
+ end
116
+
117
+ def count_screenshots(localizations)
118
+ count = 0
119
+ localizations.each do |localization|
120
+ screenshot_sets = localization.get_app_screenshot_sets
121
+ screenshot_sets.each do |screenshot_set|
122
+ count += screenshot_set.app_screenshots.size
123
+ end
124
+ end
125
+
126
+ return count
127
+ end
128
+
98
129
  def upload_screenshots(screenshots_per_language, localizations, options)
99
130
  # Check if should wait for processing
100
131
  # Default to waiting if submitting for review (since needed for submission)
@@ -20,6 +20,7 @@ module Fastlane
20
20
  cmd << "--output #{params[:output]}" if params[:output]
21
21
  cmd << "--use-ssh" if params[:use_ssh]
22
22
  cmd << "--use-submodules" if params[:use_submodules]
23
+ cmd << "--use-netrc" if params[:use_netrc]
23
24
  cmd << "--no-use-binaries" if params[:use_binaries] == false
24
25
  cmd << "--no-checkout" if params[:no_checkout] == true
25
26
  cmd << "--no-build" if params[:no_build] == true
@@ -89,6 +90,12 @@ module Fastlane
89
90
  is_string: false,
90
91
  type: Boolean,
91
92
  optional: true),
93
+ FastlaneCore::ConfigItem.new(key: :use_netrc,
94
+ env_name: "FL_CARTHAGE_USE_NETRC",
95
+ description: "Use .netrc for downloading frameworks",
96
+ is_string: false,
97
+ type: Boolean,
98
+ optional: true),
92
99
  FastlaneCore::ConfigItem.new(key: :use_binaries,
93
100
  env_name: "FL_CARTHAGE_USE_BINARIES",
94
101
  description: "Check out dependency repositories even when prebuilt frameworks exist",
@@ -4,6 +4,7 @@ module Fastlane
4
4
  module Actions
5
5
  module SharedValues
6
6
  ORIGINAL_DEFAULT_KEYCHAIN = :ORIGINAL_DEFAULT_KEYCHAIN
7
+ KEYCHAIN_PATH = :KEYCHAIN_PATH
7
8
  end
8
9
 
9
10
  class CreateKeychainAction < Action
@@ -32,6 +33,8 @@ module Fastlane
32
33
  UI.important("If creating a new Keychain DB is required please set the `require_create` option true to cause the action to fail")
33
34
  end
34
35
 
36
+ Actions.lane_context[Actions::SharedValues::KEYCHAIN_PATH] = keychain_path
37
+
35
38
  if params[:default_keychain]
36
39
  # if there is no default keychain - setting the original will fail - silent this error
37
40
  begin
@@ -91,7 +94,8 @@ module Fastlane
91
94
 
92
95
  def self.output
93
96
  [
94
- ['ORIGINAL_DEFAULT_KEYCHAIN', 'The path to the default keychain']
97
+ ['ORIGINAL_DEFAULT_KEYCHAIN', 'The path to the default keychain'],
98
+ ['KEYCHAIN_PATH', 'The path of the keychain']
95
99
  ]
96
100
  end
97
101
 
@@ -135,7 +135,7 @@ The general parameters are defined in the `default` key and can be:
135
135
  | `show_complete_frame` | Specifies whether _frameit_ should shrink the device frame so that it is completely shown in the framed screenshot. If it is false, clipping of the device frame might occur at the bottom (when `title_below_image` is `false`) or top (when `title_below_image` is `true`) of the framed screenshot. | `false` |
136
136
  | `padding` | The content of the framed screenshot will be resized to match the specified `padding` around all edges. The vertical padding is also applied between the text and the top or bottom (depending on `title_below_image`) of the device frame. <p> There are 3 different options of specyfying the padding: <p> 1. Default: An integer value that defines both horizontal and vertical padding in pixels. <br> 2. A string that defines (different) padding values in pixels for horizontal and vertical padding. The syntax is `"<horizontal>x<vertical>"`, e.g. `"30x60"`. <br> 3. A string that defines (different) padding values in percentage for horizontal and vertical padding. The syntax is `"<horizontal>%x<vertical>%"`, e.g. `"5%x10%"`. <br> **Note:** The percentage is calculated from the smallest image dimension (height or width). <p> A combination of option 2 and 3 is possible, e.g. `"5%x40"`. | `50` |
137
137
  | `interline_spacing` | Specifies whether _frameit_ should add or subtract this many pixels between the individual lines of text. This only applies to a multi-line `title` and/or `keyword` to expand or squash together the individual lines of text. | `0` |
138
- | `font_scale_factor` | Specifies whether _frameit_ should increase or decrease the font size of the text. | `0.1` |
138
+ | `font_scale_factor` | Specifies whether _frameit_ should increase or decrease the font size of the text. Is ignored for `keyword` or `title`, if `font_size` is specified. | `0.1` |
139
139
  | `frame` | Overrides the color of the frame to be used. (Valid values are `BLACK`, `WHITE`, `GOLD` and `ROSE_GOLD`) | NA |
140
140
  | `title_min_height` | Specifies a height always reserved for the title. Value can be a percentage of the height or an absolute value. The device will be placed below (or above) this area. Convenient to ensure the device top (or bottom) will be consistently placed at the same height on the different screenshots. | NA |
141
141
  | `use_platform` | Overrides the platform used for the screenshot. Valid values are `IOS`, `ANDROID` and `ANY`. | `IOS` |
@@ -163,6 +163,7 @@ The `keyword` and `title` parameters are both used in `default` and `data`. They
163
163
  |-----|-------------|---------------|
164
164
  | `color` | The font color for the text. Specify a hex/html color code. | `#000000` (black) |
165
165
  | `font` | The font family for the text. Specify the (relative) path to the font file (e.g. an OpenType Font). | The default `imagemagick` font, which is system dependent. |
166
+ | `font_size` | The font size for the text specified in points. If not specified or `0`, font will be scaled automatically to fit the available space. _frameit_ still shrinks the text, if it would not fit. | NA |
166
167
  | `text` | The text that should be used for the `keyword` or `title`. <p> Note: If you want to use localised text, use [`.strings` files](#strings-files). | NA |
167
168
 
168
169
  ### Example
@@ -176,6 +177,7 @@ The `keyword` and `title` parameters are both used in `default` and `data`. They
176
177
  },
177
178
  "title": {
178
179
  "font": "./fonts/MyFont-Th.otf",
180
+ "font_size": 128,
179
181
  "color": "#545454"
180
182
  },
181
183
  "background": "./background.jpg",
@@ -111,6 +111,25 @@ match
111
111
 
112
112
  You can find more information about GitHub basic authentication and personal token generation here: [https://developer.github.com/v3/auth/#basic-authentication](https://developer.github.com/v3/auth/#basic-authentication)
113
113
 
114
+ ##### Git Storage on GitHub - Deploy keys
115
+
116
+ If your machine does not have a private key set up for your certificates repository, you can give _match_ a path for one:
117
+
118
+ Using parameter:
119
+
120
+ ```
121
+ match(git_private_key: '<PATH TO YOUR KEY>')
122
+ ```
123
+
124
+ Using environment variable:
125
+
126
+ ```
127
+ ENV['MATCH_GIT_PRIVATE_KEY'] = '<PATH TO YOUR KEY>'
128
+ match
129
+ ```
130
+
131
+ You can find more information about GitHub basic authentication and personal token generation here: [https://developer.github.com/v3/auth/#basic-authentication](https://developer.github.com/v3/auth/#basic-authentication)
132
+
114
133
  ##### Git Storage on Azure Devops
115
134
 
116
135
  If you're running a pipeline on Azure Devops and using git storage in a another repository on the same project, you might want to use `bearer` token authentication.
@@ -488,14 +507,14 @@ _match_ stores the certificate (`.cer`) and the private key (`.p12`) files separ
488
507
  Decrypt your cert found in `certs/<type>/<unique-id>.cer` as a pem file:
489
508
 
490
509
  ```no-highlight
491
- openssl aes-256-cbc -k "<password>" -in "certs/<type>/<unique-id>.cer" -out "cert.der" -a -d
510
+ openssl aes-256-cbc -k "<password>" -in "certs/<type>/<unique-id>.cer" -out "cert.der" -a -d -md [md5|sha256]
492
511
  openssl x509 -inform der -in cert.der -out cert.pem
493
512
  ```
494
513
 
495
514
  Decrypt your private key found in `certs/<type>/<unique-id>.p12` as a pem file:
496
515
 
497
516
  ```no-highlight
498
- openssl aes-256-cbc -k "<password>" -in "certs/distribution/<unique-id>.p12" -out "key.pem" -a -d
517
+ openssl aes-256-cbc -k "<password>" -in "certs/distribution/<unique-id>.p12" -out "key.pem" -a -d -md [md5|sha256]
499
518
  ```
500
519
 
501
520
  Generate an encrypted p12 file with the same or new password:
@@ -471,7 +471,7 @@ _deliver_ allows for metadata to be set through `.txt` files in the metadata fol
471
471
 
472
472
  Key | Editable While Live | Directory | Filename
473
473
  ----|--------|--------|--------
474
- <%- (Deliver::UploadMetadata::NON_LOCALISED_VERSION_VALUES.keys + Deliver::UploadMetadata::NON_LOCALISED_APP_VALUES).each do |value| -%>
474
+ <%- (Deliver::UploadMetadata::NON_LOCALISED_VERSION_VALUES.keys + Deliver::UploadMetadata::NON_LOCALISED_APP_VALUES.keys).each do |value| -%>
475
475
  `<%= value %>` | <%= Deliver::UploadMetadata::NON_LOCALISED_LIVE_VALUES.include?(value) ? 'Yes' : 'No' %> | `<metadata_path>` | `<%= value %>.txt`
476
476
  <%- end %>
477
477
 
@@ -485,10 +485,10 @@ Key | Editable While Live | Directory | Filename
485
485
 
486
486
  ### Review Information Metadata
487
487
 
488
- Key | Editable While Live | Directory | Filename
489
- ----|--------|--------|--------
488
+ Key | Editable While Live | Directory | Filename | Deprecated Filename
489
+ ----|--------|--------|--------|--------
490
490
  <%- Deliver::UploadMetadata::REVIEW_INFORMATION_VALUES_LEGACY.each do |key, value| -%>
491
- `<%= value %>` | Yes | `<metadata_path>/<%= Deliver::UploadMetadata::REVIEW_INFORMATION_DIR %>` | `<%= value %>.txt`
491
+ `<%= value %>` | Yes | `<metadata_path>/<%= Deliver::UploadMetadata::REVIEW_INFORMATION_DIR %>` | `<%= value %>.txt` | `<%= key %>.txt`
492
492
  <%- end %>
493
493
 
494
494
  ## Reference
@@ -22,7 +22,7 @@ module Fastlane
22
22
 
23
23
  # Process options
24
24
  version = params[:version]
25
- build_number = params[:build_number]
25
+ build_number = params[:build_number].to_s unless params[:build_number].nil?
26
26
  platform = params[:platform]
27
27
  output_directory = params[:output_directory]
28
28
  wait_for_dsym_processing = params[:wait_for_dsym_processing]
@@ -258,7 +258,8 @@ module Fastlane
258
258
  short_option: "-b",
259
259
  env_name: "DOWNLOAD_DSYMS_BUILD_NUMBER",
260
260
  description: "The app build_number for dSYMs you wish to download",
261
- optional: true),
261
+ optional: true,
262
+ is_string: false),
262
263
  FastlaneCore::ConfigItem.new(key: :min_version,
263
264
  short_option: "-m",
264
265
  env_name: "DOWNLOAD_DSYMS_MIN_VERSION",
@@ -308,6 +309,7 @@ module Fastlane
308
309
  [
309
310
  'download_dsyms',
310
311
  'download_dsyms(version: "1.0.0", build_number: "345")',
312
+ 'download_dsyms(version: "1.0.1", build_number: 42)',
311
313
  'download_dsyms(version: "live")',
312
314
  'download_dsyms(min_version: "1.2.3")'
313
315
  ]