fastlane 2.58.0.beta.20170919010003 → 2.58.0.beta.20170920010003
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/cert/lib/cert/runner.rb +1 -1
- data/fastlane/lib/fastlane/actions/prompt.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +6 -11
- data/fastlane_core/lib/fastlane_core/ipa_upload_package_builder.rb +1 -1
- data/fastlane_core/lib/fastlane_core/ui/github_issue_inspector_reporter.rb +1 -0
- data/precheck/lib/precheck/options.rb +9 -1
- data/precheck/lib/precheck/rule_processor.rb +26 -1
- data/precheck/lib/precheck/rules/free_stuff_iap_rule.rb +32 -0
- data/snapshot/lib/snapshot/reports_generator.rb +1 -0
- data/snapshot/lib/snapshot/test_command_generator.rb +10 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1aee2a4ce2c2f291827675b8cfbc2509337817f
|
4
|
+
data.tar.gz: 2c0a3895848af582417fcbf8581ea28cd6667b3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7246060005b8de3927014bc6237032ae0e816c5a3dcc378f59a4235e3560ded56bf101e5cdee8e9034a419cab0f7800d697ee8ff0d561f33241fa81435c24431
|
7
|
+
data.tar.gz: 964fc6bfcdd559f16578c22c484ead850d588dfff08a3ec15183477e411ece96b3fb169f305e767e00779889141bee6f7278108360db12525fdbdb9f0f3f2d31
|
data/cert/lib/cert/runner.rb
CHANGED
@@ -5,7 +5,7 @@ module Cert
|
|
5
5
|
def launch
|
6
6
|
run
|
7
7
|
|
8
|
-
installed = FastlaneCore::CertChecker.installed?(ENV["CER_FILE_PATH"]
|
8
|
+
installed = FastlaneCore::CertChecker.installed?(ENV["CER_FILE_PATH"])
|
9
9
|
UI.message "Verifying the certificate is properly installed locally..."
|
10
10
|
UI.user_error!("Could not find the newly generated certificate installed", show_github_issues: true) unless installed
|
11
11
|
UI.success "Successfully installed certificate #{ENV['CER_CERTIFICATE_ID']}"
|
@@ -44,7 +44,7 @@ module Fastlane
|
|
44
44
|
[
|
45
45
|
FastlaneCore::ConfigItem.new(key: :text,
|
46
46
|
description: "The text that will be displayed to the user",
|
47
|
-
default_value: "Please enter
|
47
|
+
default_value: "Please enter some text: "),
|
48
48
|
FastlaneCore::ConfigItem.new(key: :ci_input,
|
49
49
|
description: "The default text that will be used when being executed on a CI service",
|
50
50
|
default_value: ''),
|
@@ -3,10 +3,10 @@ require 'tempfile'
|
|
3
3
|
module FastlaneCore
|
4
4
|
# This class checks if a specific certificate is installed on the current mac
|
5
5
|
class CertChecker
|
6
|
-
def self.installed?(path
|
6
|
+
def self.installed?(path)
|
7
7
|
UI.user_error!("Could not find file '#{path}'") unless File.exist?(path)
|
8
8
|
|
9
|
-
ids = installed_identies
|
9
|
+
ids = installed_identies
|
10
10
|
finger_print = sha1_fingerprint(path)
|
11
11
|
|
12
12
|
return ids.include? finger_print
|
@@ -17,10 +17,10 @@ module FastlaneCore
|
|
17
17
|
installed?(path)
|
18
18
|
end
|
19
19
|
|
20
|
-
def self.installed_identies
|
20
|
+
def self.installed_identies
|
21
21
|
install_wwdr_certificate unless wwdr_certificate_installed?
|
22
22
|
|
23
|
-
available = list_available_identities
|
23
|
+
available = list_available_identities
|
24
24
|
# Match for this text against word boundaries to avoid edge cases around multiples of 10 identities!
|
25
25
|
if /\b0 valid identities found\b/ =~ available
|
26
26
|
UI.error([
|
@@ -44,13 +44,8 @@ module FastlaneCore
|
|
44
44
|
return ids
|
45
45
|
end
|
46
46
|
|
47
|
-
def self.list_available_identities
|
48
|
-
|
49
|
-
locked = keychain and !system("security show-keychain-info #{keychain} >/dev/null 2>/dev/null")
|
50
|
-
`security unlock -p #{password} #{keychain}` if locked
|
51
|
-
`security find-identity -v -p codesigning #{keychain}`
|
52
|
-
ensure
|
53
|
-
`security lock #{keychain}` if locked
|
47
|
+
def self.list_available_identities
|
48
|
+
`security find-identity -v -p codesigning`
|
54
49
|
end
|
55
50
|
|
56
51
|
def self.wwdr_certificate_installed?
|
@@ -34,7 +34,7 @@ module FastlaneCore
|
|
34
34
|
private
|
35
35
|
|
36
36
|
def copy_ipa(ipa_path)
|
37
|
-
ipa_file_name = "#{File.basename(ipa_path, '.ipa')}
|
37
|
+
ipa_file_name = "#{File.basename(ipa_path, '.ipa')}_#{Digest::SHA256.file(ipa_path).hexdigest}.ipa"
|
38
38
|
resulting_path = File.join(self.package_path, ipa_file_name)
|
39
39
|
FileUtils.cp(ipa_path, resulting_path)
|
40
40
|
|
@@ -17,6 +17,7 @@ module Fastlane
|
|
17
17
|
report.issues[0..(NUMBER_OF_ISSUES_INLINE - 1)].each { |issue| print_issue_full(issue) }
|
18
18
|
|
19
19
|
if report.issues.count > NUMBER_OF_ISSUES_INLINE
|
20
|
+
report.url.sub!('\'', '%27')
|
20
21
|
puts "and #{report.total_results - NUMBER_OF_ISSUES_INLINE} more at: #{report.url}"
|
21
22
|
puts ""
|
22
23
|
end
|
@@ -12,6 +12,7 @@ module Precheck
|
|
12
12
|
FutureFunctionalityRule,
|
13
13
|
TestWordsRule,
|
14
14
|
CurseWordsRule,
|
15
|
+
FreeStuffIAPRule,
|
15
16
|
CustomTextRule,
|
16
17
|
CopyrightDateRule,
|
17
18
|
UnreachableURLRule
|
@@ -56,7 +57,14 @@ module Precheck
|
|
56
57
|
env_name: "PRECHECK_DEFAULT_RULE_LEVEL",
|
57
58
|
description: "The default rule level unless otherwise configured",
|
58
59
|
is_string: false,
|
59
|
-
default_value: RULE_LEVELS[:error])
|
60
|
+
default_value: RULE_LEVELS[:error]),
|
61
|
+
FastlaneCore::ConfigItem.new(key: :include_in_app_purchases,
|
62
|
+
short_option: "-i",
|
63
|
+
env_name: "PRECHECK_INCLUDE_IN_APP_PURCHASES",
|
64
|
+
description: "Should check in-app purchases?",
|
65
|
+
is_string: false,
|
66
|
+
optional: true,
|
67
|
+
default_value: true)
|
60
68
|
] + rules
|
61
69
|
end
|
62
70
|
end
|
@@ -149,6 +149,7 @@ module Precheck
|
|
149
149
|
|
150
150
|
def self.generate_text_items_to_check(app: nil, app_version: nil)
|
151
151
|
items = []
|
152
|
+
|
152
153
|
items << TextItemToCheck.new(app_version.copyright, :copyright, "copyright")
|
153
154
|
|
154
155
|
items += collect_text_items_from_language_item(hash: app_version.keywords,
|
@@ -175,10 +176,34 @@ module Precheck
|
|
175
176
|
item_name: :app_subtitle,
|
176
177
|
friendly_name_postfix: "app name subtitle",
|
177
178
|
is_optional: true)
|
179
|
+
|
180
|
+
should_include_iap = Precheck.config[:include_in_app_purchases]
|
181
|
+
if should_include_iap
|
182
|
+
UI.message "Reading in-app purchases. If you have a lot, this might take a while"
|
183
|
+
UI.message "You can disable IAP checking by setting the `include_in_app_purchases` flag to `false`"
|
184
|
+
in_app_purchases = app.in_app_purchases.all
|
185
|
+
in_app_purchases ||= []
|
186
|
+
in_app_purchases.each do |purchase|
|
187
|
+
items += collect_iap_language_items(purchase_edit_versions: purchase.edit.versions)
|
188
|
+
end
|
189
|
+
UI.message "Done reading in-app purchases"
|
190
|
+
end
|
191
|
+
|
192
|
+
return items
|
193
|
+
end
|
194
|
+
|
195
|
+
def self.collect_iap_language_items(purchase_edit_versions: nil, is_optional: false)
|
196
|
+
items = []
|
197
|
+
purchase_edit_versions.each do |language_key, hash|
|
198
|
+
name = hash[:name]
|
199
|
+
description = hash[:description]
|
200
|
+
items << TextItemToCheck.new(name, :in_app_purchase, "in-app purchase name: #{name}: (#{language_key})", is_optional)
|
201
|
+
items << TextItemToCheck.new(description, :in_app_purchase, "in-app purchase desc: #{description}: (#{language_key})", is_optional)
|
202
|
+
end
|
178
203
|
return items
|
179
204
|
end
|
180
205
|
|
181
|
-
#
|
206
|
+
# a few attributes are LanguageItem this method creates a TextItemToCheck for each pair
|
182
207
|
def self.collect_text_items_from_language_item(hash: nil, item_name: nil, friendly_name_postfix: nil, is_optional: false)
|
183
208
|
items = []
|
184
209
|
hash.each do |key, value|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'precheck/rule'
|
2
|
+
require 'precheck/rules/abstract_text_match_rule'
|
3
|
+
|
4
|
+
module Precheck
|
5
|
+
class FreeStuffIAPRule < AbstractTextMatchRule
|
6
|
+
def self.key
|
7
|
+
:free_stuff_in_iap
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.env_name
|
11
|
+
"RULE_FREE_STUFF_IN_IAP"
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.friendly_name
|
15
|
+
"No words indicating your IAP is free"
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.description
|
19
|
+
"using text indicating that your IAP is free"
|
20
|
+
end
|
21
|
+
|
22
|
+
def supported_fields_symbol_set
|
23
|
+
[:in_app_purchase].to_set
|
24
|
+
end
|
25
|
+
|
26
|
+
def lowercased_words_to_look_for
|
27
|
+
[
|
28
|
+
"free"
|
29
|
+
].map(&:downcase)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -55,9 +55,17 @@ module Snapshot
|
|
55
55
|
end
|
56
56
|
# Return true if all devices are iOS devices
|
57
57
|
return true unless all_ios.include?(false)
|
58
|
+
|
59
|
+
all_tvos = devices.map do |device|
|
60
|
+
device = device.downcase
|
61
|
+
device.start_with?('apple tv')
|
62
|
+
end
|
63
|
+
# Return true if all devices are iOS devices
|
64
|
+
return true unless all_tvos.include?(false)
|
65
|
+
|
58
66
|
# There should only be more than 1 device type if
|
59
|
-
# it is iOS, therefore, if there is more than 1
|
60
|
-
# device in the array, and they are not all iOS
|
67
|
+
# it is iOS or tvOS, therefore, if there is more than 1
|
68
|
+
# device in the array, and they are not all iOS or tvOS
|
61
69
|
# as checked above, that would imply that this is a mixed bag
|
62
70
|
return devices.count == 1
|
63
71
|
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.58.0.beta.
|
4
|
+
version: 2.58.0.beta.20170920010003
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
@@ -15,7 +15,7 @@ authors:
|
|
15
15
|
autorequire:
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
|
-
date: 2017-09-
|
18
|
+
date: 2017-09-20 00:00:00.000000000 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: slack-notifier
|
@@ -1246,6 +1246,7 @@ files:
|
|
1246
1246
|
- precheck/lib/precheck/rules/copyright_date_rule.rb
|
1247
1247
|
- precheck/lib/precheck/rules/curse_words_rule.rb
|
1248
1248
|
- precheck/lib/precheck/rules/custom_text_rule.rb
|
1249
|
+
- precheck/lib/precheck/rules/free_stuff_iap_rule.rb
|
1249
1250
|
- precheck/lib/precheck/rules/future_functionality_rule.rb
|
1250
1251
|
- precheck/lib/precheck/rules/negative_apple_sentiment_rule.rb
|
1251
1252
|
- precheck/lib/precheck/rules/other_platforms_rule.rb
|