fastlane 2.79.0.beta.20180123010002 → 2.79.0.beta.20180124010003
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/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
|
- - ">="
|