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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 599a6a8994d426abd49eb843006e6a06b79cbf6b
4
- data.tar.gz: f758d58fdcc9e4e32fd6d7263792ce01dee2ef72
3
+ metadata.gz: 579b61a800e044e85c68ad8e8f2e530f0b134c0a
4
+ data.tar.gz: fc82399a894d4d8f3cb0bbe8c56a7dc6991e251e
5
5
  SHA512:
6
- metadata.gz: 3eac737ce72a2ba7f316f532095d481495747a740d39438b1d988ff873008313d5f4e906dc86135f32f77a28fb5f9ac5a7bf5a5e3449feedb9daa2f929a69fe5
7
- data.tar.gz: 6529b844211fc5ba6e1d9bda4b90eb807e14463b1fd53d8ed1bbf3ab41d80f904160462a761cc361695429e8f8875931dc0352cf7aeaadb790f893d4e61a792d
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}#{search_query}&page=#{page}"
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.20180123010002'.freeze
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("~", ".fastlane"))
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 = (width + (keyword_padding + horizontal_frame_padding) * 2) / image.width.to_f
223
+ ratio = width / (image.width.to_f - horizontal_frame_padding * 2)
224
224
  if ratio > 1.0
225
225
  # too large - resizing now
226
- smaller = (1.0 / ratio)
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
- title_width = title.width
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 - title_width / 2.0).round
245
- keyword_left_space = (background.width / 2.0 - keyword_width / 2.0).round
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
- # Then, put the title on top of the screenshot next to the keyword
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
- # Resize the 2 labels if necessary
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
- UI.verbose("Text for image #{self.screenshot.path} is quite long, reducing font size by #{(ratio - 1.0).round(2)}")
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
- title.resize("#{(smaller * title.width).round}x")
290
- keyword.resize("#{(smaller * keyword.width).round}x") if keyword
291
- sum_width *= smaller
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 * smaller)
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 trimbox, this is the top offset + height:
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 images based on top_vertical_trim_offset and bottom_vertical_trim_offset to maintain text baseline:
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
- # Determine the trim area by maintaining the same vertical top offset based on the smallest value from all trim boxes (top_vertical_trim_offset).
399
- # When the vertical top offset is larger than the smallest vertical top offset, the trim box needs to be adjusted:
400
- if trim_box.offset_y > top_vertical_trim_offset
401
- # Increase the height of the trim box with the difference in vertical top offset:
402
- trim_box.height += trim_box.offset_y - top_vertical_trim_offset
403
- # Change the vertical top offset to match that of the others:
404
- trim_box.offset_y = top_vertical_trim_offset
405
-
406
- UI.verbose("Trim box for key \"#{key}\" is adjusted to align top: #{trim_box}\n")
407
- end
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
- # Check if the height needs to be adjusted to reach the bottom offset:
410
- if (trim_box.offset_y + trim_box.height) < bottom_vertical_trim_offset
411
- # Set the height of the trim box to the difference between vertical bottom and top offset:
412
- trim_box.height = bottom_vertical_trim_offset - trim_box.offset_y
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
- UI.verbose("Trim box for key \"#{key}\" is adjusted to align bottom: #{trim_box}\n")
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
@@ -6,7 +6,8 @@ module PEM
6
6
  attr_accessor :config
7
7
  end
8
8
 
9
- TMP_FOLDER = "/tmp/PEM/"
9
+ tmp_dir = Dir.tmpdir
10
+ TMP_FOLDER = "#{tmp_dir}/fastlane/PEM/"
10
11
  FileUtils.mkdir_p(TMP_FOLDER)
11
12
 
12
13
  ENV['FASTLANE_TEAM_ID'] ||= ENV["PEM_TEAM_ID"]
@@ -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 callsed from a subclass)
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.20180123010002
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-23 00:00:00.000000000 Z
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
- - snapshot/lib
1625
- - frameit/lib
1626
- - fastlane/lib
1627
- - cert/lib
1619
+ - precheck/lib
1620
+ - produce/lib
1628
1621
  - pilot/lib
1629
- - spaceship/lib
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
- - pem/lib
1631
+ - sigh/lib
1632
+ - snapshot/lib
1633
+ - cert/lib
1634
1634
  required_ruby_version: !ruby/object:Gem::Requirement
1635
1635
  requirements:
1636
1636
  - - ">="