fastlane 2.29.0.beta.20170502010055 → 2.29.0.beta.20170503010035
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core/project.rb +9 -2
- data/gym/lib/gym/generators/build_command_generator.rb +2 -0
- data/gym/lib/gym/options.rb +5 -0
- data/spaceship/lib/spaceship/tunes/app_ratings.rb +74 -2
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +13 -2
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5af3635f331af53664a682ac1e0f327148b59255
|
4
|
+
data.tar.gz: 4c2519637d6f99b4279568c023afcbcdcf1d1320
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cba9b945d5edb104026efdbad536bd114c43c41756e3bcd16132fc9be5accbe09fffaebd3d2ecd069400b1687bca9aadbb7156a0f5d6e7df1adee4eac7d1fb5c
|
7
|
+
data.tar.gz: e1dcbf6170ab99f30dbef56f0257a165caf265e7713241d257280ad4fb5828deb98481a5558f1bfd0ec0e3bbc5b435d751ae192e635c36c82e44da4ab5f1c0c9
|
@@ -296,9 +296,16 @@ module FastlaneCore
|
|
296
296
|
# @param [String] The key of which we want the value for (e.g. "PRODUCT_NAME")
|
297
297
|
def build_settings(key: nil, optional: true)
|
298
298
|
unless @build_settings
|
299
|
+
if is_workspace
|
300
|
+
if schemes.count == 0
|
301
|
+
UI.user_error!("Could not find any schemes for Xcode workspace at path '#{self.path}'. Please make sure that the schemes you want to use are marked as `Shared` from Xcode.")
|
302
|
+
end
|
303
|
+
options[:scheme] ||= schemes.first
|
304
|
+
end
|
305
|
+
|
299
306
|
command = build_xcodebuild_showbuildsettings_command
|
300
307
|
|
301
|
-
#
|
308
|
+
# Xcode might hang here and retrying fixes the problem, see fastlane#4059
|
302
309
|
begin
|
303
310
|
timeout = FastlaneCore::Project.xcode_build_settings_timeout
|
304
311
|
retries = FastlaneCore::Project.xcode_build_settings_retries
|
@@ -332,7 +339,7 @@ module FastlaneCore
|
|
332
339
|
|
333
340
|
# Returns the build settings and sets the default scheme to the options hash
|
334
341
|
def default_build_settings(key: nil, optional: true)
|
335
|
-
options[:scheme]
|
342
|
+
options[:scheme] ||= schemes.first if is_workspace
|
336
343
|
build_settings(key: key, optional: optional)
|
337
344
|
end
|
338
345
|
|
@@ -41,6 +41,7 @@ module Gym
|
|
41
41
|
options << "-derivedDataPath '#{config[:derived_data_path]}'" if config[:derived_data_path]
|
42
42
|
options << "-resultBundlePath '#{result_bundle_path}'" if config[:result_bundle]
|
43
43
|
options << config[:xcargs] if config[:xcargs]
|
44
|
+
options << "OTHER_SWIFT_FLAGS=\"\$(inherited) -Xfrontend -debug-time-function-bodies\"" if config[:analyze_build_time]
|
44
45
|
|
45
46
|
options
|
46
47
|
end
|
@@ -64,6 +65,7 @@ module Gym
|
|
64
65
|
def pipe
|
65
66
|
pipe = []
|
66
67
|
pipe << "| tee #{xcodebuild_log_path.shellescape}"
|
68
|
+
pipe << "| grep .[0-9]ms | grep -v ^0.[0-9]ms | sort -nr > culprits.txt" if Gym.config[:analyze_build_time]
|
67
69
|
unless Gym.config[:disable_xcpretty]
|
68
70
|
formatter = Gym.config[:xcpretty_formatter]
|
69
71
|
pipe << "| xcpretty"
|
data/gym/lib/gym/options.rb
CHANGED
@@ -277,6 +277,11 @@ module Gym
|
|
277
277
|
verify_block: proc do |value|
|
278
278
|
UI.user_error!("Report output location not found at path '#{File.expand_path(value)}'") unless File.exist?(value)
|
279
279
|
end),
|
280
|
+
FastlaneCore::ConfigItem.new(key: :analyze_build_time,
|
281
|
+
env_name: "GYM_ANALYZE_BUILD_TIME",
|
282
|
+
description: "Analyze the project build time and store the output in culprits.txt file",
|
283
|
+
optional: true,
|
284
|
+
is_string: false),
|
280
285
|
FastlaneCore::ConfigItem.new(key: :xcpretty_utf,
|
281
286
|
env_name: "XCPRETTY_UTF",
|
282
287
|
description: "Have xcpretty use unicode encoding when reporting builds",
|
@@ -47,9 +47,81 @@ module Spaceship
|
|
47
47
|
instance_variable_set(:@store_fronts, unfolded_store_fronts)
|
48
48
|
end
|
49
49
|
|
50
|
-
# @return (Array) of
|
50
|
+
# @return (Array) of Review Objects
|
51
51
|
def reviews(store_front, versionId = '')
|
52
|
-
client.get_reviews(application.apple_id, application.platform, store_front, versionId)
|
52
|
+
raw_reviews = client.get_reviews(application.apple_id, application.platform, store_front, versionId)
|
53
|
+
raw_reviews.map do |review|
|
54
|
+
review["value"]["application"] = self.application
|
55
|
+
AppReview.factory(review["value"])
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
class DeveloperResponse < TunesBase
|
61
|
+
attr_reader :id
|
62
|
+
attr_reader :response
|
63
|
+
attr_reader :last_modified
|
64
|
+
attr_reader :hidden
|
65
|
+
attr_reader :state
|
66
|
+
attr_accessor :application
|
67
|
+
attr_accessor :review_id
|
68
|
+
|
69
|
+
attr_mapping({
|
70
|
+
'responseId' => :id,
|
71
|
+
'response' => :response,
|
72
|
+
'lastModified' => :last_modified,
|
73
|
+
'isHidden' => :hidden,
|
74
|
+
'pendingState' => :state
|
75
|
+
})
|
76
|
+
end
|
77
|
+
|
78
|
+
class AppReview < TunesBase
|
79
|
+
attr_accessor :application
|
80
|
+
attr_reader :rating
|
81
|
+
attr_reader :id
|
82
|
+
attr_reader :title
|
83
|
+
attr_reader :review
|
84
|
+
attr_reader :nickname
|
85
|
+
attr_reader :store_front
|
86
|
+
attr_reader :app_version
|
87
|
+
attr_reader :last_modified
|
88
|
+
attr_reader :helpful_views
|
89
|
+
attr_reader :total_views
|
90
|
+
attr_reader :edited
|
91
|
+
attr_reader :raw_developer_response
|
92
|
+
attr_accessor :developer_response
|
93
|
+
|
94
|
+
attr_mapping({
|
95
|
+
'id' => :id,
|
96
|
+
'rating' => :rating,
|
97
|
+
'title' => :title,
|
98
|
+
'review' => :review,
|
99
|
+
'nickname' => :nickname,
|
100
|
+
'storeFront' => :store_front,
|
101
|
+
'appVersionString' => :app_version,
|
102
|
+
'lastModified' => :last_modified,
|
103
|
+
'helpfulViews' => :helpful_views,
|
104
|
+
'totalViews' => :total_views,
|
105
|
+
'developerResponse' => :raw_developer_response,
|
106
|
+
'edited' => :edited
|
107
|
+
})
|
108
|
+
class << self
|
109
|
+
# Create a new object based on a hash.
|
110
|
+
# This is used to create a new object based on the server response.
|
111
|
+
def factory(attrs)
|
112
|
+
obj = self.new(attrs)
|
113
|
+
response_attrs = {}
|
114
|
+
response_attrs = obj.raw_developer_response if obj.raw_developer_response
|
115
|
+
response_attrs[:application] = obj.application
|
116
|
+
response_attrs[:review_id] = obj.id
|
117
|
+
obj.developer_response = DeveloperResponse.factory(response_attrs)
|
118
|
+
return obj
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def responded?
|
123
|
+
return true if raw_developer_response
|
124
|
+
false
|
53
125
|
end
|
54
126
|
end
|
55
127
|
|
@@ -324,8 +324,19 @@ module Spaceship
|
|
324
324
|
end
|
325
325
|
|
326
326
|
def get_reviews(app_id, platform, storefront, versionId = '')
|
327
|
-
|
328
|
-
|
327
|
+
index = 0
|
328
|
+
per_page = 100 # apple default
|
329
|
+
all_reviews = []
|
330
|
+
loop do
|
331
|
+
r = request(:get, "ra/apps/#{app_id}/platforms/#{platform}/reviews?storefront=#{storefront}&versionId=#{versionId}&index=#{index}")
|
332
|
+
all_reviews.concat(parse_response(r, 'data')['reviews'])
|
333
|
+
if all_reviews.count < parse_response(r, 'data')['reviewCount']
|
334
|
+
index += per_page
|
335
|
+
else
|
336
|
+
break
|
337
|
+
end
|
338
|
+
end
|
339
|
+
all_reviews
|
329
340
|
end
|
330
341
|
|
331
342
|
#####################################################
|
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.29.0.beta.
|
4
|
+
version: 2.29.0.beta.20170503010035
|
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-05-
|
18
|
+
date: 2017-05-03 00:00:00.000000000 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: slack-notifier
|
@@ -1356,23 +1356,23 @@ metadata:
|
|
1356
1356
|
post_install_message:
|
1357
1357
|
rdoc_options: []
|
1358
1358
|
require_paths:
|
1359
|
-
- deliver/lib
|
1360
|
-
- cert/lib
|
1361
|
-
- produce/lib
|
1362
1359
|
- snapshot/lib
|
1363
|
-
-
|
1364
|
-
- pilot/lib
|
1365
|
-
- fastlane_core/lib
|
1366
|
-
- supply/lib
|
1360
|
+
- produce/lib
|
1367
1361
|
- gym/lib
|
1362
|
+
- fastlane_core/lib
|
1363
|
+
- scan/lib
|
1364
|
+
- match/lib
|
1368
1365
|
- spaceship/lib
|
1369
|
-
- screengrab/lib
|
1370
1366
|
- sigh/lib
|
1371
|
-
-
|
1367
|
+
- pilot/lib
|
1368
|
+
- deliver/lib
|
1372
1369
|
- fastlane/lib
|
1370
|
+
- cert/lib
|
1373
1371
|
- frameit/lib
|
1374
|
-
-
|
1372
|
+
- supply/lib
|
1373
|
+
- credentials_manager/lib
|
1375
1374
|
- pem/lib
|
1375
|
+
- screengrab/lib
|
1376
1376
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1377
1377
|
requirements:
|
1378
1378
|
- - ">="
|