fastlane 2.79.0.beta.20180123010002 → 2.79.0.beta.20180124010003
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/plugins/plugin_fetcher.rb +2 -2
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core/module.rb +1 -1
- data/frameit/lib/frameit/editor.rb +47 -47
- data/frameit/lib/frameit/screenshot.rb +2 -2
- data/pem/lib/pem/module.rb +2 -1
- data/spaceship/lib/spaceship/portal/certificate.rb +1 -1
- metadata +14 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 579b61a800e044e85c68ad8e8f2e530f0b134c0a
|
4
|
+
data.tar.gz: fc82399a894d4d8f3cb0bbe8c56a7dc6991e251e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8629c6772657921a0f464128416520994af79754ba2c79d6fb1fd79382149971c37bb4c7a6593f44070cc124138a60dbf9ee7c0b126069d906e02c11ee3890c
|
7
|
+
data.tar.gz: a8a726bd15f676bba4a319d6804377958bc78162a76ff909baf7f32e8d6af29891f06c4ee5368b60a59c0666985b90064a522efa422ef13a2b4d3b823e26e72c
|
@@ -12,7 +12,7 @@ module Fastlane
|
|
12
12
|
page = 1
|
13
13
|
plugins = []
|
14
14
|
loop do
|
15
|
-
url = "https://rubygems.org/api/v1/search.json?query=#{PluginManager.plugin_prefix}
|
15
|
+
url = "https://rubygems.org/api/v1/search.json?query=#{PluginManager.plugin_prefix}&page=#{page}"
|
16
16
|
FastlaneCore::UI.verbose("RubyGems API Request: #{url}")
|
17
17
|
results = JSON.parse(open(url).read)
|
18
18
|
break if results.count == 0
|
@@ -25,7 +25,7 @@ module Fastlane
|
|
25
25
|
|
26
26
|
return plugins if search_query.to_s.length == 0
|
27
27
|
plugins.keep_if do |current|
|
28
|
-
current.full_name.include?(search_query)
|
28
|
+
current.full_name.include?(search_query) or current.info.include?(search_query)
|
29
29
|
end
|
30
30
|
|
31
31
|
return plugins
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Fastlane
|
2
|
-
VERSION = '2.79.0.beta.
|
2
|
+
VERSION = '2.79.0.beta.20180124010003'.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
|
@@ -24,7 +24,7 @@ module FastlaneCore
|
|
24
24
|
# Since we don't want to access FastlaneCore from spaceship
|
25
25
|
# this method is duplicated in spaceship/client.rb
|
26
26
|
def self.fastlane_user_dir
|
27
|
-
path = File.expand_path(File.join(
|
27
|
+
path = File.expand_path(File.join(Dir.home, ".fastlane"))
|
28
28
|
FileUtils.mkdir_p(path) unless File.directory?(path)
|
29
29
|
return path
|
30
30
|
end
|
@@ -220,11 +220,10 @@ module Frameit
|
|
220
220
|
|
221
221
|
def resize_text(text)
|
222
222
|
width = text.width
|
223
|
-
ratio =
|
223
|
+
ratio = width / (image.width.to_f - horizontal_frame_padding * 2)
|
224
224
|
if ratio > 1.0
|
225
225
|
# too large - resizing now
|
226
|
-
|
227
|
-
text.resize("#{(smaller * text.width).round}x")
|
226
|
+
text.resize("#{((1.0 / ratio) * text.width).round}x")
|
228
227
|
end
|
229
228
|
end
|
230
229
|
|
@@ -233,16 +232,12 @@ module Frameit
|
|
233
232
|
resize_text(title)
|
234
233
|
resize_text(keyword)
|
235
234
|
|
236
|
-
|
237
|
-
keyword_width = keyword.width
|
238
|
-
|
239
|
-
vertical_padding = vertical_frame_padding
|
235
|
+
vertical_padding = vertical_frame_padding # assign padding to variable
|
240
236
|
keyword_top_space = vertical_padding
|
241
|
-
|
242
|
-
spacing_between_title_and_keyword = (title.height / 2)
|
237
|
+
spacing_between_title_and_keyword = (actual_font_size / 2)
|
243
238
|
title_top_space = vertical_padding + keyword.height + spacing_between_title_and_keyword
|
244
|
-
title_left_space = (background.width / 2.0 -
|
245
|
-
keyword_left_space = (background.width / 2.0 -
|
239
|
+
title_left_space = (background.width / 2.0 - title.width / 2.0).round
|
240
|
+
keyword_left_space = (background.width / 2.0 - keyword.width / 2.0).round
|
246
241
|
|
247
242
|
self.space_to_device += title.height + keyword.height + spacing_between_title_and_keyword + vertical_padding
|
248
243
|
title_below_image = fetch_config['title_below_image']
|
@@ -252,8 +247,7 @@ module Frameit
|
|
252
247
|
c.geometry("+#{keyword_left_space}+#{keyword_top_space}") unless title_below_image
|
253
248
|
c.geometry("+#{keyword_left_space}+#{background.height - space_to_device + keyword_top_space}") if title_below_image
|
254
249
|
end
|
255
|
-
#
|
256
|
-
# Then, put the title above/below of the screenshot next to the keyword
|
250
|
+
# Place the title below the keyword
|
257
251
|
background = background.composite(title, "png") do |c|
|
258
252
|
c.compose("Over")
|
259
253
|
c.geometry("+#{title_left_space}+#{title_top_space}") unless title_below_image
|
@@ -263,7 +257,7 @@ module Frameit
|
|
263
257
|
end
|
264
258
|
|
265
259
|
def put_title_into_background(background, stack_title)
|
266
|
-
text_images = build_text_images(image.width - 2 * horizontal_frame_padding, image.height - 2 * vertical_frame_padding)
|
260
|
+
text_images = build_text_images(image.width - 2 * horizontal_frame_padding, image.height - 2 * vertical_frame_padding, stack_title)
|
267
261
|
|
268
262
|
keyword = text_images[:keyword]
|
269
263
|
title = text_images[:title]
|
@@ -277,24 +271,26 @@ module Frameit
|
|
277
271
|
sum_width = title.width
|
278
272
|
sum_width += keyword.width + keyword_padding if keyword
|
279
273
|
|
280
|
-
|
281
|
-
smaller = 1.0 # default
|
282
|
-
ratio = (sum_width + (keyword_padding + horizontal_frame_padding) * 2) / image.width.to_f
|
283
|
-
if ratio > 1.0
|
284
|
-
# too large - resizing now
|
285
|
-
smaller = (1.0 / ratio)
|
274
|
+
title_below_image = fetch_config['title_below_image']
|
286
275
|
|
287
|
-
|
276
|
+
# Resize the 2 labels if they exceed the available space either horizontally or vertically:
|
277
|
+
image_scale_factor = 1.0 # default
|
278
|
+
ratio_horizontal = sum_width / (image.width.to_f - horizontal_frame_padding * 2) # The fraction of the text images compared to the left and right padding
|
279
|
+
ratio_vertical = title.height.to_f / actual_font_size # The fraction of the actual height of the images compared to the available space
|
280
|
+
if ratio_horizontal > 1.0 || ratio_vertical > 1.0
|
281
|
+
# If either is too large, resize with the maximum ratio:
|
282
|
+
image_scale_factor = (1.0 / [ratio_horizontal, ratio_vertical].max)
|
288
283
|
|
289
|
-
|
290
|
-
|
291
|
-
|
284
|
+
UI.verbose("Text for image #{self.screenshot.path} is quite long, reducing font size by #{(100 * (1.0 - image_scale_factor)).round(1)}%")
|
285
|
+
|
286
|
+
title.resize("#{(image_scale_factor * title.width).round}x")
|
287
|
+
keyword.resize("#{(image_scale_factor * keyword.width).round}x") if keyword
|
288
|
+
sum_width *= image_scale_factor
|
292
289
|
end
|
293
290
|
|
294
|
-
vertical_padding = vertical_frame_padding
|
291
|
+
vertical_padding = vertical_frame_padding # assign padding to variable
|
295
292
|
top_space = vertical_padding + (actual_font_size - title.height) / 2
|
296
293
|
left_space = (background.width / 2.0 - sum_width / 2.0).round
|
297
|
-
title_below_image = fetch_config['title_below_image']
|
298
294
|
|
299
295
|
self.space_to_device += actual_font_size + vertical_padding
|
300
296
|
|
@@ -306,7 +302,7 @@ module Frameit
|
|
306
302
|
c.geometry("+#{left_space}+#{background.height - space_to_device + top_space}") if title_below_image
|
307
303
|
end
|
308
304
|
|
309
|
-
left_space += keyword.width + (keyword_padding *
|
305
|
+
left_space += keyword.width + (keyword_padding * image_scale_factor)
|
310
306
|
end
|
311
307
|
|
312
308
|
# Then, put the title on top of the screenshot next to the keyword
|
@@ -320,6 +316,7 @@ module Frameit
|
|
320
316
|
|
321
317
|
def actual_font_size
|
322
318
|
font_scale_factor = fetch_config['font_scale_factor'] || 0.1
|
319
|
+
UI.user_error!("Parameter 'font_scale_factor' can not be 0. Please provide a value larger than 0.0 (default = 0.1).") if font_scale_factor == 0.0
|
323
320
|
[@image.width * font_scale_factor].max.round
|
324
321
|
end
|
325
322
|
|
@@ -329,7 +326,7 @@ module Frameit
|
|
329
326
|
end
|
330
327
|
|
331
328
|
# This will build up to 2 individual images with the title and optional keyword, which will then be added to the real image
|
332
|
-
def build_text_images(max_width, max_height)
|
329
|
+
def build_text_images(max_width, max_height, stack_title)
|
333
330
|
words = [:keyword, :title].keep_if { |a| fetch_text(a) } # optional keyword/title
|
334
331
|
results = {}
|
335
332
|
trim_boxes = {}
|
@@ -367,7 +364,7 @@ module Frameit
|
|
367
364
|
|
368
365
|
results[key] = text_image
|
369
366
|
|
370
|
-
# Natively trimming the image with .trim will result in the loss of the common baseline between the text in all images.
|
367
|
+
# Natively trimming the image with .trim will result in the loss of the common baseline between the text in all images when side-by-side (e.g. stack_title is false).
|
371
368
|
# Hence retrieve the calculated trim bounding box without actually trimming:
|
372
369
|
calculated_trim_box = text_image.identify do |b|
|
373
370
|
b.format("%@") # CALCULATED: trim bounding box (without actually trimming), see: http://www.imagemagick.org/script/escape.php
|
@@ -381,7 +378,7 @@ module Frameit
|
|
381
378
|
top_vertical_trim_offset = trim_box.offset_y
|
382
379
|
end
|
383
380
|
|
384
|
-
# Get the maximum bottom offset of the
|
381
|
+
# Get the maximum bottom offset of the trim box, this is the top offset + height:
|
385
382
|
if (trim_box.offset_y + trim_box.height) > bottom_vertical_trim_offset
|
386
383
|
bottom_vertical_trim_offset = trim_box.offset_y + trim_box.height
|
387
384
|
end
|
@@ -390,31 +387,34 @@ module Frameit
|
|
390
387
|
trim_boxes[key] = trim_box
|
391
388
|
end
|
392
389
|
|
393
|
-
# Crop
|
390
|
+
# Crop text images:
|
394
391
|
words.each do |key|
|
395
392
|
# Get matching trim box:
|
396
393
|
trim_box = trim_boxes[key]
|
397
394
|
|
398
|
-
#
|
399
|
-
|
400
|
-
|
401
|
-
#
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
395
|
+
# For side-by-side text images (e.g. stack_title is false) adjust the trim box based on top_vertical_trim_offset and bottom_vertical_trim_offset to maintain the text baseline:
|
396
|
+
unless stack_title
|
397
|
+
# Determine the trim area by maintaining the same vertical top offset based on the smallest value from all trim boxes (top_vertical_trim_offset).
|
398
|
+
# When the vertical top offset is larger than the smallest vertical top offset, the trim box needs to be adjusted:
|
399
|
+
if trim_box.offset_y > top_vertical_trim_offset
|
400
|
+
# Increase the height of the trim box with the difference in vertical top offset:
|
401
|
+
trim_box.height += trim_box.offset_y - top_vertical_trim_offset
|
402
|
+
# Change the vertical top offset to match that of the others:
|
403
|
+
trim_box.offset_y = top_vertical_trim_offset
|
404
|
+
|
405
|
+
UI.verbose("Trim box for key \"#{key}\" is adjusted to align top: #{trim_box}\n")
|
406
|
+
end
|
408
407
|
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
408
|
+
# Check if the height needs to be adjusted to reach the bottom offset:
|
409
|
+
if (trim_box.offset_y + trim_box.height) < bottom_vertical_trim_offset
|
410
|
+
# Set the height of the trim box to the difference between vertical bottom and top offset:
|
411
|
+
trim_box.height = bottom_vertical_trim_offset - trim_box.offset_y
|
413
412
|
|
414
|
-
|
413
|
+
UI.verbose("Trim box for key \"#{key}\" is adjusted to align bottom: #{trim_box}\n")
|
414
|
+
end
|
415
415
|
end
|
416
416
|
|
417
|
-
# Crop image with adjusted trim box parameters in MiniMagick string format:
|
417
|
+
# Crop image with (adjusted) trim box parameters in MiniMagick string format:
|
418
418
|
results[key].crop(trim_box.string_format)
|
419
419
|
end
|
420
420
|
|
@@ -88,10 +88,10 @@ module Frameit
|
|
88
88
|
orientation = block.call(filename)
|
89
89
|
valid = [:landscape_left, :landscape_right, :portrait, nil]
|
90
90
|
UI.user_error("orientation_block must return #{valid[0..-2].join(', ')} or nil") unless valid.include?(orientation)
|
91
|
-
|
92
|
-
puts("Forced orientation: #{orientation}")
|
93
91
|
end
|
94
92
|
|
93
|
+
puts("Forced orientation: #{orientation}") unless orientation.nil?
|
94
|
+
|
95
95
|
return orientation unless orientation.nil?
|
96
96
|
return :portrait if self.orientation_name == Orientation::PORTRAIT
|
97
97
|
return :landscape_right # Default landscape orientation
|
data/pem/lib/pem/module.rb
CHANGED
@@ -243,7 +243,7 @@ module Spaceship
|
|
243
243
|
klass.new(attrs)
|
244
244
|
end
|
245
245
|
|
246
|
-
# @param mac [Bool] Fetches Mac certificates if true. (Ignored if
|
246
|
+
# @param mac [Bool] Fetches Mac certificates if true. (Ignored if called from a subclass)
|
247
247
|
# @return (Array) Returns all certificates of this account.
|
248
248
|
# If this is called from a subclass of Certificate, this will
|
249
249
|
# only include certificates matching the current type.
|
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.79.0.beta.
|
4
|
+
version: 2.79.0.beta.20180124010003
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Holtz
|
@@ -25,7 +25,7 @@ authors:
|
|
25
25
|
autorequire:
|
26
26
|
bindir: bin
|
27
27
|
cert_chain: []
|
28
|
-
date: 2018-01-
|
28
|
+
date: 2018-01-24 00:00:00.000000000 Z
|
29
29
|
dependencies:
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: slack-notifier
|
@@ -1613,24 +1613,24 @@ metadata:
|
|
1613
1613
|
post_install_message:
|
1614
1614
|
rdoc_options: []
|
1615
1615
|
require_paths:
|
1616
|
-
- supply/lib
|
1617
|
-
- screengrab/lib
|
1618
|
-
- match/lib
|
1619
|
-
- precheck/lib
|
1620
|
-
- sigh/lib
|
1621
|
-
- produce/lib
|
1622
1616
|
- scan/lib
|
1617
|
+
- spaceship/lib
|
1623
1618
|
- gym/lib
|
1624
|
-
-
|
1625
|
-
-
|
1626
|
-
- fastlane/lib
|
1627
|
-
- cert/lib
|
1619
|
+
- precheck/lib
|
1620
|
+
- produce/lib
|
1628
1621
|
- pilot/lib
|
1629
|
-
-
|
1622
|
+
- fastlane/lib
|
1623
|
+
- supply/lib
|
1630
1624
|
- credentials_manager/lib
|
1625
|
+
- pem/lib
|
1631
1626
|
- deliver/lib
|
1627
|
+
- screengrab/lib
|
1628
|
+
- frameit/lib
|
1629
|
+
- match/lib
|
1632
1630
|
- fastlane_core/lib
|
1633
|
-
-
|
1631
|
+
- sigh/lib
|
1632
|
+
- snapshot/lib
|
1633
|
+
- cert/lib
|
1634
1634
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1635
1635
|
requirements:
|
1636
1636
|
- - ">="
|