fastlane 2.106.0 → 2.106.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +62 -62
- data/bin/fastlane +0 -20
- data/deliver/lib/deliver/upload_assets.rb +2 -4
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +2 -2
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane_core/lib/fastlane_core/device_manager.rb +5 -4
- data/frameit/lib/frameit/config_parser.rb +15 -4
- data/frameit/lib/frameit/editor.rb +49 -21
- data/sigh/lib/assets/resign.sh +1 -1
- metadata +16 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20c1d9cdf81fb3028f468bc98f8c32e92a38ea62
|
4
|
+
data.tar.gz: 002c15aa8ff8bd52bc8a97c06da5134c84d7c015
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f668abf3192ebaba514277dcfa6240aae7f07244d4aaee4f7ffe859357a6c24e00bdb87a3f94e0514b4b5673e9b98f67f0d584dffd5277309631a739e9d46776
|
7
|
+
data.tar.gz: 52f3763e76deb852ffb981218aef346d8290596244160c9486a375d2517d3189348ba9826a809d2b49669e868bef0098b277838cd3431aa1624bc7052bb3d5da
|
data/README.md
CHANGED
@@ -33,43 +33,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
33
33
|
<!-- This table is regenerated and resorted on each release -->
|
34
34
|
<table id='team'>
|
35
35
|
<tr>
|
36
|
-
<td id='
|
37
|
-
<a href='https://github.com/
|
38
|
-
<img src='https://github.com/
|
39
|
-
</a>
|
40
|
-
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
41
|
-
</td>
|
42
|
-
<td id='aaron-brager'>
|
43
|
-
<a href='https://github.com/getaaron'>
|
44
|
-
<img src='https://github.com/getaaron.png?size=140'>
|
45
|
-
</a>
|
46
|
-
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
47
|
-
</td>
|
48
|
-
<td id='fumiya-nakamura'>
|
49
|
-
<a href='https://github.com/nafu'>
|
50
|
-
<img src='https://github.com/nafu.png?size=140'>
|
51
|
-
</a>
|
52
|
-
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
53
|
-
</td>
|
54
|
-
<td id='stefan-natchev'>
|
55
|
-
<a href='https://github.com/snatchev'>
|
56
|
-
<img src='https://github.com/snatchev.png?size=140'>
|
57
|
-
</a>
|
58
|
-
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
59
|
-
</td>
|
60
|
-
<td id='jorge-revuelta-h'>
|
61
|
-
<a href='https://github.com/minuscorp'>
|
62
|
-
<img src='https://github.com/minuscorp.png?size=140'>
|
36
|
+
<td id='danielle-tomlinson'>
|
37
|
+
<a href='https://github.com/DanToml'>
|
38
|
+
<img src='https://github.com/DanToml.png?size=140'>
|
63
39
|
</a>
|
64
|
-
<h4 align='center'><a href='https://twitter.com/
|
40
|
+
<h4 align='center'><a href='https://twitter.com/DanToml'>Danielle Tomlinson</a></h4>
|
65
41
|
</td>
|
66
|
-
|
67
|
-
<
|
68
|
-
<
|
69
|
-
<a href='https://github.com/mgrebenets'>
|
70
|
-
<img src='https://github.com/mgrebenets.png?size=140'>
|
42
|
+
<td id='felix-krause'>
|
43
|
+
<a href='https://github.com/KrauseFx'>
|
44
|
+
<img src='https://github.com/KrauseFx.png?size=140'>
|
71
45
|
</a>
|
72
|
-
<h4 align='center'><a href='https://twitter.com/
|
46
|
+
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
73
47
|
</td>
|
74
48
|
<td id='andrew-mcburney'>
|
75
49
|
<a href='https://github.com/AndrewMcBurney'>
|
@@ -83,18 +57,44 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
83
57
|
</a>
|
84
58
|
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
85
59
|
</td>
|
86
|
-
<td id='
|
87
|
-
<a href='https://github.com/
|
88
|
-
<img src='https://github.com/
|
60
|
+
<td id='jimmy-dee'>
|
61
|
+
<a href='https://github.com/jdee'>
|
62
|
+
<img src='https://github.com/jdee.png?size=140'>
|
89
63
|
</a>
|
90
|
-
<h4 align='center'
|
64
|
+
<h4 align='center'>Jimmy Dee</h4>
|
91
65
|
</td>
|
66
|
+
</tr>
|
67
|
+
<tr>
|
92
68
|
<td id='iulian-onofrei'>
|
93
69
|
<a href='https://github.com/revolter'>
|
94
70
|
<img src='https://github.com/revolter.png?size=140'>
|
95
71
|
</a>
|
96
72
|
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
97
73
|
</td>
|
74
|
+
<td id='aaron-brager'>
|
75
|
+
<a href='https://github.com/getaaron'>
|
76
|
+
<img src='https://github.com/getaaron.png?size=140'>
|
77
|
+
</a>
|
78
|
+
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
79
|
+
</td>
|
80
|
+
<td id='helmut-januschka'>
|
81
|
+
<a href='https://github.com/hjanuschka'>
|
82
|
+
<img src='https://github.com/hjanuschka.png?size=140'>
|
83
|
+
</a>
|
84
|
+
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
85
|
+
</td>
|
86
|
+
<td id='jan-piotrowski'>
|
87
|
+
<a href='https://github.com/janpio'>
|
88
|
+
<img src='https://github.com/janpio.png?size=140'>
|
89
|
+
</a>
|
90
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
91
|
+
</td>
|
92
|
+
<td id='luka-mirosevic'>
|
93
|
+
<a href='https://github.com/lmirosevic'>
|
94
|
+
<img src='https://github.com/lmirosevic.png?size=140'>
|
95
|
+
</a>
|
96
|
+
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
97
|
+
</td>
|
98
98
|
</tr>
|
99
99
|
<tr>
|
100
100
|
<td id='olivier-halligon'>
|
@@ -103,49 +103,49 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
103
103
|
</a>
|
104
104
|
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
105
105
|
</td>
|
106
|
+
<td id='maksym-grebenets'>
|
107
|
+
<a href='https://github.com/mgrebenets'>
|
108
|
+
<img src='https://github.com/mgrebenets.png?size=140'>
|
109
|
+
</a>
|
110
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
111
|
+
</td>
|
112
|
+
<td id='jorge-revuelta-h'>
|
113
|
+
<a href='https://github.com/minuscorp'>
|
114
|
+
<img src='https://github.com/minuscorp.png?size=140'>
|
115
|
+
</a>
|
116
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
117
|
+
</td>
|
106
118
|
<td id='josh-holtz'>
|
107
119
|
<a href='https://github.com/joshdholtz'>
|
108
120
|
<img src='https://github.com/joshdholtz.png?size=140'>
|
109
121
|
</a>
|
110
122
|
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
111
123
|
</td>
|
112
|
-
<td id='jan-piotrowski'>
|
113
|
-
<a href='https://github.com/janpio'>
|
114
|
-
<img src='https://github.com/janpio.png?size=140'>
|
115
|
-
</a>
|
116
|
-
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
117
|
-
</td>
|
118
124
|
<td id='joshua-liebowitz'>
|
119
125
|
<a href='https://github.com/taquitos'>
|
120
126
|
<img src='https://github.com/taquitos.png?size=140'>
|
121
127
|
</a>
|
122
128
|
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
123
129
|
</td>
|
124
|
-
<td id='felix-krause'>
|
125
|
-
<a href='https://github.com/KrauseFx'>
|
126
|
-
<img src='https://github.com/KrauseFx.png?size=140'>
|
127
|
-
</a>
|
128
|
-
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
129
|
-
</td>
|
130
130
|
</tr>
|
131
131
|
<tr>
|
132
|
-
<td id='
|
133
|
-
<a href='https://github.com/
|
134
|
-
<img src='https://github.com/
|
132
|
+
<td id='jérôme-lacoste'>
|
133
|
+
<a href='https://github.com/lacostej'>
|
134
|
+
<img src='https://github.com/lacostej.png?size=140'>
|
135
135
|
</a>
|
136
|
-
<h4 align='center'><a href='https://twitter.com/
|
136
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
137
137
|
</td>
|
138
|
-
<td id='
|
139
|
-
<a href='https://github.com/
|
140
|
-
<img src='https://github.com/
|
138
|
+
<td id='stefan-natchev'>
|
139
|
+
<a href='https://github.com/snatchev'>
|
140
|
+
<img src='https://github.com/snatchev.png?size=140'>
|
141
141
|
</a>
|
142
|
-
<h4 align='center'><a href='https://twitter.com/
|
142
|
+
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
143
143
|
</td>
|
144
|
-
<td id='
|
145
|
-
<a href='https://github.com/
|
146
|
-
<img src='https://github.com/
|
144
|
+
<td id='fumiya-nakamura'>
|
145
|
+
<a href='https://github.com/nafu'>
|
146
|
+
<img src='https://github.com/nafu.png?size=140'>
|
147
147
|
</a>
|
148
|
-
<h4 align='center'>
|
148
|
+
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
149
149
|
</td>
|
150
150
|
<td id='kohki-miki'>
|
151
151
|
<a href='https://github.com/giginet'>
|
data/bin/fastlane
CHANGED
@@ -9,26 +9,6 @@ def self.windows?
|
|
9
9
|
(/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
|
10
10
|
end
|
11
11
|
|
12
|
-
if ENV["FASTLANE_OPTIMIZE_BOOT"]
|
13
|
-
require 'bootsnap'
|
14
|
-
require 'tmpdir'
|
15
|
-
require 'fileutils'
|
16
|
-
require_relative "../fastlane/lib/fastlane/version.rb"
|
17
|
-
cache_dir = "#{Dir.tmpdir}/fastlane/bootsnap-cache/" + Fastlane::VERSION
|
18
|
-
unless File.directory?(cache_dir)
|
19
|
-
FileUtils.mkdir_p(cache_dir)
|
20
|
-
end
|
21
|
-
Bootsnap.setup(
|
22
|
-
cache_dir: cache_dir, # Path to your cache
|
23
|
-
development_mode: false, # Current working environment
|
24
|
-
load_path_cache: true, # Optimize the LOAD_PATH with a cache
|
25
|
-
autoload_paths_cache: false, # Not relevant for fastlane (Optimize ActiveSupport autoloads with cache)
|
26
|
-
disable_trace: true, # (Alpha) Set `RubyVM::InstructionSequence.compile_option = { trace_instruction: false }`
|
27
|
-
compile_cache_iseq: !self.windows?, # Compile Ruby code into ISeq cache, breaks coverage reporting.
|
28
|
-
compile_cache_yaml: true # Compile YAML into a cache
|
29
|
-
)
|
30
|
-
end
|
31
|
-
|
32
12
|
require "fastlane/cli_tools_distributor"
|
33
13
|
|
34
14
|
if Fastlane::CLIToolsDistributor.running_version_command?
|
@@ -4,9 +4,9 @@ module Deliver
|
|
4
4
|
class UploadAssets
|
5
5
|
SUPPORTED_ICON_EXTENSIONS = [".png", ".jpg", ".jpeg"]
|
6
6
|
def upload(options)
|
7
|
+
return unless options[:app_icon] || options[:apple_watch_app_icon]
|
7
8
|
return if options[:edit_live]
|
8
9
|
app = options[:app]
|
9
|
-
app_modified = false
|
10
10
|
|
11
11
|
v = app.edit_version(platform: options[:platform])
|
12
12
|
UI.user_error!("Could not find a version to edit for app '#{app.name}'") unless v
|
@@ -14,16 +14,14 @@ module Deliver
|
|
14
14
|
if options[:app_icon]
|
15
15
|
UI.message("Uploading app icon...")
|
16
16
|
v.upload_large_icon!(options[:app_icon])
|
17
|
-
app_modified = true
|
18
17
|
end
|
19
18
|
|
20
19
|
if options[:apple_watch_app_icon]
|
21
20
|
UI.message("Uploading apple watchapp icon...")
|
22
21
|
v.upload_watch_icon!(options[:apple_watch_app_icon])
|
23
|
-
app_modified = true
|
24
22
|
end
|
25
23
|
|
26
|
-
v.save!
|
24
|
+
v.save!
|
27
25
|
end
|
28
26
|
end
|
29
27
|
end
|
@@ -137,7 +137,7 @@ These are defined in the `data` key. This is an array with the following keys fo
|
|
137
137
|
|
138
138
|
| Key | Description |
|
139
139
|
|-----|-------------|
|
140
|
-
| `filter` | This is mandatory to link the individual configuration to the screenshot, based on part of the file name. <p>Example:<br>If a screenshot is named `iPhone 8-Brainstorming.png` you can use value `Brainstorming` for `filter`. All other keys from that array element will only be applied on this specific screenshot. |
|
140
|
+
| `filter` | This is mandatory to link the individual configuration to the screenshot, based on part of the file name. <p>Example:<br>If a screenshot is named `iPhone 8-Brainstorming.png` you can use value `Brainstorming` for `filter`. If there are more than one `filter` matching an entry, they will all be applied in order (which means that the last one has the highest precedence). All other keys from that array element will only be applied on this specific screenshot. |
|
141
141
|
| `keyword` | Similar use as in `default`, except that parameter `text` can be used here because it is screenshot specific. |
|
142
142
|
| `title` | Similar use as in `default`, except that parameter `text` can be used here because it is screenshot specific. |
|
143
143
|
|
@@ -4001,7 +4001,7 @@ func xcov(workspace: String? = nil,
|
|
4001
4001
|
coverallsServiceJobId: String? = nil,
|
4002
4002
|
coverallsRepoToken: String? = nil,
|
4003
4003
|
xcconfig: String? = nil,
|
4004
|
-
ideFoundationPath: String = "/Applications/Xcode.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
4004
|
+
ideFoundationPath: String = "/Applications/Xcode-10.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
|
4005
4005
|
legacySupport: Bool = false) {
|
4006
4006
|
let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
|
4007
4007
|
RubyCommand.Argument(name: "project", value: project),
|
@@ -4109,4 +4109,4 @@ let screengrabfile: Screengrabfile = Screengrabfile()
|
|
4109
4109
|
let snapshotfile: Snapshotfile = Snapshotfile()
|
4110
4110
|
// Please don't remove the lines below
|
4111
4111
|
// They are used to detect outdated files
|
4112
|
-
// FastlaneRunnerAPIVersion [0.9.
|
4112
|
+
// FastlaneRunnerAPIVersion [0.9.31]
|
@@ -98,8 +98,8 @@ module FastlaneCore
|
|
98
98
|
|
99
99
|
instruments_devices_output.split(/\n/).each do |instruments_device|
|
100
100
|
device_uuids.each do |device_uuid|
|
101
|
-
match = instruments_device.match(/(.+) \(([0-9.]+)\) \[(
|
102
|
-
if match && match[3] == device_uuid
|
101
|
+
match = instruments_device.match(/(.+) \(([0-9.]+)\) \[(\h{40}|\h{8}-\h{16})\]?/)
|
102
|
+
if match && match[3].delete("-") == device_uuid
|
103
103
|
devices << Device.new(name: match[1], udid: match[3], os_type: requested_os_type, os_version: match[2], state: "Booted", is_simulator: false)
|
104
104
|
UI.verbose("USB Device Found - \"" + match[1] + "\" (" + match[2] + ") UUID:" + match[3])
|
105
105
|
end
|
@@ -118,10 +118,11 @@ module FastlaneCore
|
|
118
118
|
end
|
119
119
|
|
120
120
|
is_supported_device = device_types.any? { |device_type| usb_item['_name'] == device_type }
|
121
|
-
|
121
|
+
serial_num = usb_item['serial_num'] || ''
|
122
|
+
has_serial_number = serial_num.length == 40 || serial_num.length == 24
|
122
123
|
|
123
124
|
if is_supported_device && has_serial_number
|
124
|
-
discovered_device_udids <<
|
125
|
+
discovered_device_udids << serial_num
|
125
126
|
end
|
126
127
|
end
|
127
128
|
|
@@ -26,11 +26,14 @@ module Frameit
|
|
26
26
|
# Fetches the finished configuration for a given path. This will try to look for a specific value
|
27
27
|
# and fallback to a default value if nothing was found
|
28
28
|
def fetch_value(path)
|
29
|
-
|
29
|
+
specifics = @data['data'].select { |a| path.include?(a['filter']) }
|
30
30
|
|
31
31
|
default = @data['default']
|
32
32
|
|
33
|
-
values = default.
|
33
|
+
values = default.clone
|
34
|
+
specifics.each do |specific|
|
35
|
+
values = values.fastlane_deep_merge(specific)
|
36
|
+
end
|
34
37
|
|
35
38
|
change_paths_to_absolutes!(values)
|
36
39
|
validate_values(values)
|
@@ -82,8 +85,12 @@ module Frameit
|
|
82
85
|
when 'color'
|
83
86
|
UI.user_error!("Invalid color '#{value}'. Must be valid Hex #123123") unless value.include?("#")
|
84
87
|
when 'padding'
|
85
|
-
unless value
|
86
|
-
UI.user_error!("padding must be
|
88
|
+
unless integer_or_percentage(value) || value.split('x').length == 2
|
89
|
+
UI.user_error!("padding must be an integer, or pair of integers of format 'AxB', or a percentage of screen size")
|
90
|
+
end
|
91
|
+
when 'title_min_height'
|
92
|
+
unless integer_or_percentage(value)
|
93
|
+
UI.user_error!("padding must be an integer, or a percentage of screen size")
|
87
94
|
end
|
88
95
|
when 'show_complete_frame', 'title_below_image'
|
89
96
|
UI.user_error!("'#{key}' must be a Boolean") unless [true, false].include?(value)
|
@@ -93,5 +100,9 @@ module Frameit
|
|
93
100
|
end
|
94
101
|
end
|
95
102
|
end
|
103
|
+
|
104
|
+
def integer_or_percentage(value)
|
105
|
+
value.kind_of?(Integer) || (value.end_with?('%') && value.to_f > 0)
|
106
|
+
end
|
96
107
|
end
|
97
108
|
end
|
@@ -132,7 +132,7 @@ module Frameit
|
|
132
132
|
|
133
133
|
# Decrease the size of the framed screenshot to fit into the defined padding + background
|
134
134
|
frame_width = background.width - horizontal_frame_padding * 2
|
135
|
-
frame_height = background.height -
|
135
|
+
frame_height = background.height - effective_text_height - vertical_frame_padding
|
136
136
|
|
137
137
|
if fetch_config['show_complete_frame']
|
138
138
|
# calculate the final size of the screenshot to resize in one go
|
@@ -172,6 +172,17 @@ module Frameit
|
|
172
172
|
return scale_padding(padding)
|
173
173
|
end
|
174
174
|
|
175
|
+
# Minimum height for the title
|
176
|
+
def title_min_height
|
177
|
+
@title_min_height ||= begin
|
178
|
+
height = fetch_config['title_min_height'] || 0
|
179
|
+
if height.kind_of?(String) && height.end_with?('%')
|
180
|
+
height = ([image.width, image.height].min * height.to_f * 0.01).ceil
|
181
|
+
end
|
182
|
+
height
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
175
186
|
def scale_padding(padding)
|
176
187
|
if padding.kind_of?(String) && padding.end_with?('%')
|
177
188
|
padding = ([image.width, image.height].min * padding.to_f * 0.01).ceil
|
@@ -181,6 +192,24 @@ module Frameit
|
|
181
192
|
return padding * multi
|
182
193
|
end
|
183
194
|
|
195
|
+
def effective_text_height
|
196
|
+
[space_to_device, title_min_height].max
|
197
|
+
end
|
198
|
+
|
199
|
+
def device_top(background)
|
200
|
+
@device_top ||= begin
|
201
|
+
if title_below_image
|
202
|
+
background.height - effective_text_height - image.height
|
203
|
+
else
|
204
|
+
effective_text_height
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
def title_below_image
|
210
|
+
@title_below_image ||= fetch_config['title_below_image']
|
211
|
+
end
|
212
|
+
|
184
213
|
# Returns a correctly sized background image
|
185
214
|
def generate_background
|
186
215
|
background = MiniMagick::Image.open(fetch_config['background'])
|
@@ -194,17 +223,10 @@ module Frameit
|
|
194
223
|
|
195
224
|
def put_device_into_background(background)
|
196
225
|
left_space = (background.width / 2.0 - image.width / 2.0).round
|
197
|
-
title_below_image = fetch_config['title_below_image']
|
198
226
|
|
199
227
|
@image = background.composite(image, "png") do |c|
|
200
228
|
c.compose("Over")
|
201
|
-
|
202
|
-
show_complete_frame = fetch_config['show_complete_frame']
|
203
|
-
c.geometry("+#{left_space}+#{background.height - image.height - space_to_device}") unless show_complete_frame
|
204
|
-
c.geometry("+#{left_space}+#{vertical_frame_padding}") if show_complete_frame
|
205
|
-
else
|
206
|
-
c.geometry("+#{left_space}+#{space_to_device}")
|
207
|
-
end
|
229
|
+
c.geometry("+#{left_space}+#{device_top(background)}")
|
208
230
|
end
|
209
231
|
|
210
232
|
return image
|
@@ -235,25 +257,28 @@ module Frameit
|
|
235
257
|
resize_text(keyword)
|
236
258
|
|
237
259
|
vertical_padding = vertical_frame_padding # assign padding to variable
|
238
|
-
keyword_top_space = vertical_padding
|
239
260
|
spacing_between_title_and_keyword = (actual_font_size / 2)
|
240
|
-
title_top_space = vertical_padding + keyword.height + spacing_between_title_and_keyword
|
241
261
|
title_left_space = (background.width / 2.0 - title.width / 2.0).round
|
242
262
|
keyword_left_space = (background.width / 2.0 - keyword.width / 2.0).round
|
243
263
|
|
244
264
|
self.space_to_device += title.height + keyword.height + spacing_between_title_and_keyword + vertical_padding
|
245
|
-
|
265
|
+
|
266
|
+
if title_below_image
|
267
|
+
keyword_top = background.height - effective_text_height / 2 - (keyword.height + spacing_between_title_and_keyword + title.height) / 2
|
268
|
+
else
|
269
|
+
keyword_top = device_top(background) / 2 - spacing_between_title_and_keyword / 2 - keyword.height
|
270
|
+
end
|
271
|
+
title_top = keyword_top + keyword.height + spacing_between_title_and_keyword
|
272
|
+
|
246
273
|
# keyword
|
247
274
|
background = background.composite(keyword, "png") do |c|
|
248
275
|
c.compose("Over")
|
249
|
-
c.geometry("+#{keyword_left_space}+#{
|
250
|
-
c.geometry("+#{keyword_left_space}+#{background.height - space_to_device + keyword_top_space}") if title_below_image
|
276
|
+
c.geometry("+#{keyword_left_space}+#{keyword_top}")
|
251
277
|
end
|
252
278
|
# Place the title below the keyword
|
253
279
|
background = background.composite(title, "png") do |c|
|
254
280
|
c.compose("Over")
|
255
|
-
c.geometry("+#{title_left_space}+#{
|
256
|
-
c.geometry("+#{title_left_space}+#{background.height - space_to_device + title_top_space}") if title_below_image
|
281
|
+
c.geometry("+#{title_left_space}+#{title_top}")
|
257
282
|
end
|
258
283
|
background
|
259
284
|
end
|
@@ -291,17 +316,21 @@ module Frameit
|
|
291
316
|
end
|
292
317
|
|
293
318
|
vertical_padding = vertical_frame_padding # assign padding to variable
|
294
|
-
top_space = vertical_padding + (actual_font_size - title.height) / 2
|
295
319
|
left_space = (background.width / 2.0 - sum_width / 2.0).round
|
296
320
|
|
297
321
|
self.space_to_device += actual_font_size + vertical_padding
|
298
322
|
|
323
|
+
if title_below_image
|
324
|
+
title_top = background.height - effective_text_height / 2 - title.height / 2
|
325
|
+
else
|
326
|
+
title_top = device_top(background) / 2 - title.height / 2
|
327
|
+
end
|
328
|
+
|
299
329
|
# First, put the keyword on top of the screenshot, if we have one
|
300
330
|
if keyword
|
301
331
|
background = background.composite(keyword, "png") do |c|
|
302
332
|
c.compose("Over")
|
303
|
-
c.geometry("+#{left_space}+#{
|
304
|
-
c.geometry("+#{left_space}+#{background.height - space_to_device + top_space}") if title_below_image
|
333
|
+
c.geometry("+#{left_space}+#{title_top}")
|
305
334
|
end
|
306
335
|
|
307
336
|
left_space += keyword.width + (keyword_padding * image_scale_factor)
|
@@ -310,8 +339,7 @@ module Frameit
|
|
310
339
|
# Then, put the title on top of the screenshot next to the keyword
|
311
340
|
background = background.composite(title, "png") do |c|
|
312
341
|
c.compose("Over")
|
313
|
-
c.geometry("+#{left_space}+#{
|
314
|
-
c.geometry("+#{left_space}+#{background.height - space_to_device + top_space}") if title_below_image
|
342
|
+
c.geometry("+#{left_space}+#{title_top}")
|
315
343
|
end
|
316
344
|
background
|
317
345
|
end
|
data/sigh/lib/assets/resign.sh
CHANGED
@@ -841,7 +841,7 @@ function resign {
|
|
841
841
|
rm -f "$APP_ENTITLEMENTS"
|
842
842
|
rm -f "$PATCHED_ENTITLEMENTS"
|
843
843
|
rm -f "$PATCHED_ENTITLEMENTS.bak"
|
844
|
-
rm -
|
844
|
+
rm -f "$TEMP_DIR/old-embedded-profile.plist"
|
845
845
|
rm -f "$TEMP_DIR/profile.plist"
|
846
846
|
rm -f "$TEMP_DIR/old-embedded.mobileprovision"
|
847
847
|
rm -f "$TEMP_DIR/oldInfo.plist"
|
metadata
CHANGED
@@ -1,33 +1,33 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.106.
|
4
|
+
version: 2.106.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
-
|
9
|
-
-
|
10
|
-
- Danielle Tomlinson
|
11
|
-
- Fumiya Nakamura
|
7
|
+
- Jimmy Dee
|
8
|
+
- Helmut Januschka
|
9
|
+
- Andrew McBurney
|
12
10
|
- Maksym Grebenets
|
13
|
-
- Luka Mirosevic
|
14
|
-
- Iulian Onofrei
|
15
|
-
- Jérôme Lacoste
|
16
|
-
- Kohki Miki
|
17
|
-
- Jorge Revuelta H
|
18
11
|
- Stefan Natchev
|
19
|
-
-
|
12
|
+
- Matthew Ellis
|
13
|
+
- Fumiya Nakamura
|
20
14
|
- Aaron Brager
|
21
|
-
-
|
22
|
-
-
|
15
|
+
- Jérôme Lacoste
|
16
|
+
- Felix Krause
|
17
|
+
- Luka Mirosevic
|
23
18
|
- Josh Holtz
|
19
|
+
- Danielle Tomlinson
|
20
|
+
- Manu Wallner
|
21
|
+
- Iulian Onofrei
|
24
22
|
- Joshua Liebowitz
|
23
|
+
- Jorge Revuelta H
|
25
24
|
- Jan Piotrowski
|
26
|
-
-
|
25
|
+
- Kohki Miki
|
26
|
+
- Olivier Halligon
|
27
27
|
autorequire:
|
28
28
|
bindir: bin
|
29
29
|
cert_chain: []
|
30
|
-
date: 2018-10-
|
30
|
+
date: 2018-10-12 00:00:00.000000000 Z
|
31
31
|
dependencies:
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: slack-notifier
|
@@ -633,26 +633,6 @@ dependencies:
|
|
633
633
|
- - "~>"
|
634
634
|
- !ruby/object:Gem::Version
|
635
635
|
version: '0.1'
|
636
|
-
- !ruby/object:Gem::Dependency
|
637
|
-
name: bootsnap
|
638
|
-
requirement: !ruby/object:Gem::Requirement
|
639
|
-
requirements:
|
640
|
-
- - ">="
|
641
|
-
- !ruby/object:Gem::Version
|
642
|
-
version: 1.3.1
|
643
|
-
- - "<"
|
644
|
-
- !ruby/object:Gem::Version
|
645
|
-
version: 1.4.0
|
646
|
-
type: :runtime
|
647
|
-
prerelease: false
|
648
|
-
version_requirements: !ruby/object:Gem::Requirement
|
649
|
-
requirements:
|
650
|
-
- - ">="
|
651
|
-
- !ruby/object:Gem::Version
|
652
|
-
version: 1.3.1
|
653
|
-
- - "<"
|
654
|
-
- !ruby/object:Gem::Version
|
655
|
-
version: 1.4.0
|
656
636
|
- !ruby/object:Gem::Dependency
|
657
637
|
name: rake
|
658
638
|
requirement: !ruby/object:Gem::Requirement
|