fastlane 2.111.0.beta.20181211193527 → 2.111.0.beta.20181213171204

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: 3156ccbe8ad937dd68b64fa4c676815b42d43da0
4
- data.tar.gz: 65a6b79bb08c2b46afbbc6af29efdc0736e8b19a
3
+ metadata.gz: af0cf74e48e328942aea2bfe399ec7d244090855
4
+ data.tar.gz: 3af3cbdf9257b760a5a180ae87e1f51eda31a1db
5
5
  SHA512:
6
- metadata.gz: df95c139f66367b20c73d75dd7edf02ca71190dfac17c93e6e92327f18e8a4c178f25f20573846463bccea26c349a52ed94c6de5f1541381918bf3156edc3cbb
7
- data.tar.gz: 19ffdca96f4e72f7d97859d7d79e5b92d499c3209aa39bac3db6cd472821d232b9ad1bf1915f169fc09970642946caa3782b8b5b09e589909bdaf34c24a85a7a
6
+ metadata.gz: 144dd25bed10d9ebcd1bb3d68061d31d5597252b9414ede7eb7e631f9388e9dda685f95015c5514af75d1f17696d019d9b6c57444e797fa08b9c9edd2ad5afd9
7
+ data.tar.gz: d952795cf6e91c90204a33adaa121f23873c7e7fcdab75256f9e99b8ae7b0a38b35b268144b110259d2bf55e458812f06aa4faa11477e4862b1410b280799330
@@ -162,15 +162,24 @@ module Fastlane
162
162
  def self.details
163
163
  [
164
164
  "Additionally, you can specify `notes`, `emails`, `groups` and `notifications`.",
165
- "Distributing to Groups: When using the `groups` parameter, it's important to use the group **alias** names for each group you'd like to distribute to. A group's alias can be found in the web UI. If you're viewing the Beta page, you can open the groups dialog by clicking the 'Manage Groups' button."
165
+ "Distributing to Groups: When using the `groups` parameter, it's important to use the group **alias** names for each group you'd like to distribute to. A group's alias can be found in the web UI. If you're viewing the Beta page, you can open the groups dialog by clicking the 'Manage Groups' button.",
166
+ "This action uses the `submit` binary provided by the Crashlytics framework. If the binary is not found in its usual path, you'll need to specify the path manually by using the `crashlytics_path` option."
166
167
  ].join("\n")
167
168
  end
168
169
 
169
170
  def self.example_code
170
171
  [
171
172
  'crashlytics',
172
- 'crashlytics(
173
- crashlytics_path: "./Pods/Crashlytics/", # path to your Crashlytics submit binary.
173
+ '# If you installed Crashlytics via CocoaPods
174
+ crashlytics(
175
+ crashlytics_path: "./Pods/Crashlytics/submit", # path to your Crashlytics submit binary.
176
+ api_token: "...",
177
+ build_secret: "...",
178
+ ipa_path: "./app.ipa"
179
+ )',
180
+ '# If you installed Crashlytics via Carthage for iOS platform
181
+ crashlytics(
182
+ crashlytics_path: "./Carthage/Build/iOS/Crashlytics.framework/submit", # path to your Crashlytics submit binary.
174
183
  api_token: "...",
175
184
  build_secret: "...",
176
185
  ipa_path: "./app.ipa"
@@ -239,7 +239,7 @@ A benefit of using _match_ is that it enables you to give the developers of your
239
239
 
240
240
  1. Run _match_ to store the certificates in a Git repo or Google Cloud Storage
241
241
  2. Grant access to the Git repo / Google Cloud Storage Bucket to your developers and give them the passphrase (for git storage)
242
- 3. The developers can now run _match_ which will install the latest code signing profiles so they can build and sign the application without having to have access to the Developer Portal
242
+ 3. The developers can now run _match_ which will install the latest code signing profiles so they can build and sign the application without having to have access to the Apple Developer Portal
243
243
  4. Every time you run _match_ to update the profiles (e.g. add a new device), all your developers will automatically get the latest profiles when running _match_
244
244
 
245
245
  If you decide to run _match_ without access to the Developer Portal, make sure to use the `--readonly` option so that the commands don't ask you for the password to the Developer Portal.
@@ -32,7 +32,7 @@ module Fastlane
32
32
  FastlaneCore::ConfigItem.new(key: :path,
33
33
  env_name: "FRAMEIT_SCREENSHOTS_PATH",
34
34
  description: "The path to the directory containing the screenshots",
35
- default_value: Actions.lane_context[SharedValues::SNAPSHOT_SCREENSHOTS_PATH] || FastlaneCore::FastlaneFolder.path,
35
+ default_value: Actions.lane_context[SharedValues::SNAPSHOT_SCREENSHOTS_PATH] || FastlaneCore::FastlaneFolder.path,
36
36
  default_value_dynamic: true)
37
37
  ]
38
38
  end
@@ -18,6 +18,7 @@ module Fastlane
18
18
 
19
19
  Dir.chdir(File.expand_path("..", params[:path])) do # required to properly zip
20
20
  zip_options = params[:verbose] ? "r" : "rq"
21
+ zip_options += "y" if params[:symlinks]
21
22
 
22
23
  if params[:password]
23
24
  password_option = "-P '#{params[:password]}'"
@@ -60,7 +61,13 @@ module Fastlane
60
61
  FastlaneCore::ConfigItem.new(key: :password,
61
62
  env_name: "FL_ZIP_PASSWORD",
62
63
  description: "Encrypt the contents of the zip archive using a password",
63
- optional: true)
64
+ optional: true),
65
+ FastlaneCore::ConfigItem.new(key: :symlinks,
66
+ env_name: "FL_ZIP_SYMLINKS",
67
+ description: "Store symbolic links as such in the zip archive",
68
+ optional: true,
69
+ type: Boolean,
70
+ default_value: false)
64
71
  ]
65
72
  end
66
73
 
@@ -75,6 +82,12 @@ module Fastlane
75
82
  path: "MyApp.app",
76
83
  output_path: "Latest.app.zip",
77
84
  verbose: false
85
+ )',
86
+ 'zip(
87
+ path: "MyApp.app",
88
+ output_path: "Latest.app.zip",
89
+ verbose: false,
90
+ symlinks: true
78
91
  )'
79
92
  ]
80
93
  end
@@ -24,7 +24,8 @@ module Fastlane
24
24
  path ||= Dir["./Pods/iOS/Crashlytics/Crashlytics.framework/submit"].last
25
25
  path ||= Dir["./**/Crashlytics.framework/submit"].last
26
26
 
27
- if path && path.downcase.include?("crashlytics.framework")
27
+ downcase_path = path ? path.downcase : nil
28
+ if downcase_path && downcase_path.include?("pods") && downcase_path.include?("crashlytics.framework")
28
29
  UI.deprecated("Crashlytics has moved the submit binary outside of Crashlytics.framework directory as of 3.4.1. Please change :crashlytics_path to `<PODS_ROOT>/Crashlytics/submit`")
29
30
  end
30
31
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.111.0.beta.20181211193527'.freeze
2
+ VERSION = '2.111.0.beta.20181213171204'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  MINIMUM_XCODE_RELEASE = "7.0".freeze
5
5
  RUBOCOP_REQUIREMENT = '0.49.1'.freeze
@@ -1,4 +1,5 @@
1
1
  require 'fastlane_core/helper'
2
+ require 'fastlane/boolean'
2
3
 
3
4
  require_relative 'config_parser'
4
5
 
@@ -7,6 +8,7 @@ module Frameit
7
8
  attr_accessor :config
8
9
  end
9
10
 
11
+ Boolean = Fastlane::Boolean
10
12
  Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
11
13
  UI = FastlaneCore::UI
12
14
  ROOT = Pathname.new(File.expand_path('../../..', __FILE__))
@@ -8,22 +8,25 @@ module Frameit
8
8
  @options ||= [
9
9
 
10
10
  FastlaneCore::ConfigItem.new(key: :white,
11
- env_name: "FRAMEIT_WHITE_FRAME",
12
- description: "Use white device frames",
13
- optional: true,
14
- is_string: false),
11
+ env_name: "FRAMEIT_WHITE_FRAME",
12
+ description: "Use white device frames",
13
+ type: Boolean,
14
+ optional: true),
15
15
  FastlaneCore::ConfigItem.new(key: :silver,
16
+ env_name: "FRAMEIT_SILVER_FRAME",
16
17
  description: "Use white device frames. Alias for :white",
17
- optional: true,
18
- is_string: false),
18
+ type: Boolean,
19
+ optional: true),
19
20
  FastlaneCore::ConfigItem.new(key: :rose_gold,
21
+ env_name: "FRAMEIT_ROSE_GOLD_FRAME",
20
22
  description: "Use rose gold device frames. Alias for :rose_gold",
21
- optional: true,
22
- is_string: false),
23
+ type: Boolean,
24
+ optional: true),
23
25
  FastlaneCore::ConfigItem.new(key: :gold,
26
+ env_name: "FRAMEIT_GOLD_FRAME",
24
27
  description: "Use gold device frames. Alias for :gold",
25
- optional: true,
26
- is_string: false),
28
+ type: Boolean,
29
+ optional: true),
27
30
  FastlaneCore::ConfigItem.new(key: :force_device_type,
28
31
  env_name: "FRAMEIT_FORCE_DEVICE_TYPE",
29
32
  description: "Forces a given device type, useful for Mac screenshots, as their sizes vary",
@@ -35,29 +38,29 @@ module Frameit
35
38
  end
36
39
  end),
37
40
  FastlaneCore::ConfigItem.new(key: :use_legacy_iphone5s,
38
- env_name: "FRAMEIT_USE_LEGACY_IPHONE_5_S",
39
- is_string: false,
40
- description: "Use iPhone 5s instead of iPhone SE frames",
41
- default_value: false),
41
+ env_name: "FRAMEIT_USE_LEGACY_IPHONE_5_S",
42
+ description: "Use iPhone 5s instead of iPhone SE frames",
43
+ default_value: false,
44
+ type: Boolean),
42
45
  FastlaneCore::ConfigItem.new(key: :use_legacy_iphone6s,
43
- env_name: "FRAMEIT_USE_LEGACY_IPHONE_6_S",
44
- is_string: false,
45
- description: "Use iPhone 6s frames instead of iPhone 7 frames",
46
- default_value: false),
46
+ env_name: "FRAMEIT_USE_LEGACY_IPHONE_6_S",
47
+ description: "Use iPhone 6s frames instead of iPhone 7 frames",
48
+ default_value: false,
49
+ type: Boolean),
47
50
  FastlaneCore::ConfigItem.new(key: :force_orientation_block,
48
- type: :string_callback,
49
- description: "[Advanced] A block to customize your screenshots' device orientation",
50
- display_in_shell: false,
51
- optional: true,
52
- default_value: proc do |filename|
53
- f = filename.downcase
54
- if f.end_with?("force_landscapeleft")
55
- :landscape_left
56
- elsif f.end_with?("force_landscaperight")
57
- :landscape_right
58
- end
59
- end,
60
- default_value_dynamic: true)
51
+ type: :string_callback,
52
+ description: "[Advanced] A block to customize your screenshots' device orientation",
53
+ display_in_shell: false,
54
+ optional: true,
55
+ default_value: proc do |filename|
56
+ f = filename.downcase
57
+ if f.end_with?("force_landscapeleft")
58
+ :landscape_left
59
+ elsif f.end_with?("force_landscaperight")
60
+ :landscape_right
61
+ end
62
+ end,
63
+ default_value_dynamic: true)
61
64
  ]
62
65
  end
63
66
  end
@@ -168,8 +168,9 @@ module Match
168
168
 
169
169
  [file_type, components[2]]
170
170
  end
171
+
171
172
  puts(Terminal::Table.new({
172
- title: "Files that are going to be deleted".green,
173
+ title: "Files that are going to be deleted".green + "\n" + self.storage.human_readable_description,
173
174
  headings: ["Type", "File Name"],
174
175
  rows: rows
175
176
  }))
@@ -96,6 +96,10 @@ module Match
96
96
  checkout_branch unless self.branch == "master"
97
97
  end
98
98
 
99
+ def human_readable_description
100
+ "Git Repo [#{self.git_url}]"
101
+ end
102
+
99
103
  def delete_files(files_to_delete: [], custom_message: nil)
100
104
  # No specific list given, e.g. this happens on `fastlane match nuke`
101
105
  # We just want to run `git add -A` to commit everything
@@ -98,7 +98,10 @@ module Match
98
98
  UI.message("Deleting '#{target_path}' from Google Cloud Storage bucket '#{self.bucket_name}'...")
99
99
  file.delete
100
100
  end
101
- finished_pushing_message
101
+ end
102
+
103
+ def human_readable_description
104
+ "Google Cloud Bucket [#{self.project_id}/#{self.bucket_name}]"
102
105
  end
103
106
 
104
107
  def upload_files(files_to_upload: [], custom_message: nil)
@@ -118,7 +121,6 @@ module Match
118
121
  UI.verbose("Uploading '#{target_path}' to Google Cloud Storage...")
119
122
  bucket.create_file(current_file, target_path)
120
123
  end
121
- finished_pushing_message
122
124
  end
123
125
 
124
126
  def skip_docs
@@ -127,10 +129,6 @@ module Match
127
129
 
128
130
  private
129
131
 
130
- def finished_pushing_message
131
- UI.success("Finished applying changes up to Google Cloud Storage on bucket '#{self.bucket_name}'")
132
- end
133
-
134
132
  def bucket
135
133
  @_bucket ||= self.gc_storage.bucket(self.bucket_name)
136
134
 
@@ -152,9 +150,10 @@ module Match
152
150
  return google_cloud_keys_file
153
151
  end
154
152
 
155
- if File.exist?(DEFAULT_KEYS_FILE_NAME)
156
- return DEFAULT_KEYS_FILE_NAME
157
- end
153
+ return DEFAULT_KEYS_FILE_NAME if File.exist?(DEFAULT_KEYS_FILE_NAME)
154
+
155
+ fastlane_folder_gc_keys_path = File.join(FastlaneCore::FastlaneFolder.path, DEFAULT_KEYS_FILE_NAME)
156
+ return fastlane_folder_gc_keys_path if File.exist?(fastlane_folder_gc_keys_path)
158
157
 
159
158
  # User doesn't seem to have provided a keys file
160
159
  UI.message("Looks like you don't have a Google Cloud #{DEFAULT_KEYS_FILE_NAME.cyan} file yet")
@@ -212,7 +211,7 @@ module Match
212
211
  # This can only happen after we went through auth of Google Cloud
213
212
  available_bucket_identifiers = self.gc_storage.buckets.collect(&:id)
214
213
  if available_bucket_identifiers.count > 0
215
- @bucket_name = UI.select("What Google Cloud Storage bucket do you want to use?", available_bucket_identifiers)
214
+ @bucket_name = UI.select("What Google Cloud Storage bucket do you want to use? (you can define it using the `google_cloud_bucket_name` key)", available_bucket_identifiers)
216
215
  else
217
216
  UI.error("Looks like your Google Cloud account for the project ID '#{self.project_id}' doesn't")
218
217
  UI.error("have any available storage buckets yet. Please visit the following URL")
@@ -31,6 +31,12 @@ module Match
31
31
  not_implemented(__method__)
32
32
  end
33
33
 
34
+ # Returns a short string describing + identifing the current
35
+ # storage backend. This will be printed when nuking a storage
36
+ def human_readable_description
37
+ not_implemented(__method__)
38
+ end
39
+
34
40
  # Call this method after locally modifying the files
35
41
  # This will commit the changes and push it back to the
36
42
  # given remote server
@@ -62,8 +68,10 @@ module Match
62
68
  end
63
69
 
64
70
  self.upload_files(files_to_upload: files_to_commit, custom_message: custom_message)
71
+ UI.message("Finished uploading files to #{self.human_readable_description}")
65
72
  elsif files_to_delete.count > 0
66
73
  self.delete_files(files_to_delete: files_to_delete, custom_message: custom_message)
74
+ UI.message("Finished deleting files from #{self.human_readable_description}")
67
75
  else
68
76
  UI.user_error!("Neither `files_to_commit` nor `files_to_delete` were provided to the `save_changes!` method call")
69
77
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.111.0.beta.20181211193527
4
+ version: 2.111.0.beta.20181213171204
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
@@ -27,7 +27,7 @@ authors:
27
27
  autorequire:
28
28
  bindir: bin
29
29
  cert_chain: []
30
- date: 2018-12-11 00:00:00.000000000 Z
30
+ date: 2018-12-13 00:00:00.000000000 Z
31
31
  dependencies:
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: slack-notifier
@@ -1678,24 +1678,24 @@ metadata:
1678
1678
  post_install_message:
1679
1679
  rdoc_options: []
1680
1680
  require_paths:
1681
- - credentials_manager/lib
1682
1681
  - produce/lib
1683
- - scan/lib
1684
- - snapshot/lib
1685
- - match/lib
1686
- - sigh/lib
1687
- - fastlane/lib
1688
1682
  - precheck/lib
1683
+ - gym/lib
1689
1684
  - supply/lib
1690
1685
  - fastlane_core/lib
1691
- - screengrab/lib
1692
- - deliver/lib
1693
- - cert/lib
1694
- - gym/lib
1686
+ - credentials_manager/lib
1687
+ - snapshot/lib
1688
+ - pilot/lib
1689
+ - fastlane/lib
1695
1690
  - frameit/lib
1691
+ - deliver/lib
1696
1692
  - spaceship/lib
1693
+ - screengrab/lib
1697
1694
  - pem/lib
1698
- - pilot/lib
1695
+ - cert/lib
1696
+ - match/lib
1697
+ - sigh/lib
1698
+ - scan/lib
1699
1699
  required_ruby_version: !ruby/object:Gem::Requirement
1700
1700
  requirements:
1701
1701
  - - ">="