fastlane-plugin-icon_versioning 1.1.2 → 1.2.0
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf27a15124530480184b11d4e63cbd67f65ca1b0
|
4
|
+
data.tar.gz: e7afc502693ea1df9c8a0e72895d5fdad51458c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74b1aff17607afb43a670c1245f50acbaa2646525bf601fd12ad7f872a439c165268b91da5fe91b6b3bdee6b7ef22988d346703791452917a01082a99efb2d6a
|
7
|
+
data.tar.gz: 43e9188b61677dad1fc283c86e27642957aebe9fe55502b9dc7101cb2c0b5eadef623f4f118d0da3050b9539787b05f4a27fcec325bf172b7fda8c5d3821e19c
|
data/README.md
CHANGED
@@ -54,7 +54,7 @@ export FASTLANE_DISABLE_COLORS=1 # optional, to remove from the build log the AN
|
|
54
54
|
export FASTLANE_SKIP_UPDATE_CHECK=1 # optional, to make sure that the versioning finishes as fast as possible in case there is an available update
|
55
55
|
export FASTLANE_HIDE_GITHUB_ISSUES=1 # optional, to make sure that the versioning finishes as fast as possible in case the plugin crashes
|
56
56
|
|
57
|
-
bundle exec fastlane run
|
57
|
+
bundle exec fastlane run version_icon appiconset_path:'/path/to/AppIcon.appiconset' text:'1.2.3 (11.03.2018)\n[ead76f1] {Staging}\nmaster'
|
58
58
|
```
|
59
59
|
|
60
60
|
_Make sure the script is executable by running `chmod +x /scripts/icon_versioning.sh`_
|
@@ -39,6 +39,19 @@ module Fastlane
|
|
39
39
|
description: 'The text to overlay over the icon images',
|
40
40
|
type: String
|
41
41
|
),
|
42
|
+
FastlaneCore::ConfigItem.new(
|
43
|
+
key: :text_margins_percentages,
|
44
|
+
env_name: 'VERSION_ICON_TEXT_MARGINS_PERCENTAGES',
|
45
|
+
description: 'The percentages of the text margins relative to the image\'s size. The array must have all four margins: `text_margins_percentages: [top, right, bottom, left]`, two values: `text_margins_percentages: [vertical, horizontal]` or one value for all of them `text_margins: [all]`',
|
46
|
+
default_value: [0.06],
|
47
|
+
verify_block: proc do |value|
|
48
|
+
UI.user_error!('The number of margins is not equal to 1, 2 or 4') unless value.length == 1 || value.length == 2 || value.length == 4
|
49
|
+
UI.user_error!('At least one margin percentage is less than 0') if value.any? { |percentage| percentage < 0 }
|
50
|
+
UI.user_error!('At least one margin percentage is greater than 1') if value.any? { |percentage| percentage > 1 }
|
51
|
+
end,
|
52
|
+
optional: true,
|
53
|
+
type: Array
|
54
|
+
),
|
42
55
|
FastlaneCore::ConfigItem.new(
|
43
56
|
key: :band_height_percentage,
|
44
57
|
env_name: 'VERSION_ICON_BAND_HEIGHT_PERCENTAGE',
|
@@ -11,29 +11,31 @@ module Fastlane
|
|
11
11
|
module Helper
|
12
12
|
class VersionIconHelper
|
13
13
|
CACHE_FILE_NAME = 'cache.yml'.freeze
|
14
|
+
CONTENTS_JSON_FILE_NAME = 'Contents.json'.freeze
|
14
15
|
|
15
|
-
|
16
|
-
|
16
|
+
def initialize(params)
|
17
|
+
@appiconset_path = File.expand_path(params[:appiconset_path])
|
18
|
+
@text = params[:text]
|
17
19
|
|
18
|
-
|
19
|
-
attr_accessor :band_blur_radius_percentage
|
20
|
-
attr_accessor :band_blur_sigma_percentage
|
20
|
+
text_margins_percentages = params[:text_margins_percentages]
|
21
21
|
|
22
|
-
|
22
|
+
text_margins_percentages *= 4 if text_margins_percentages.length == 1
|
23
|
+
text_margins_percentages *= 2 if text_margins_percentages.length == 2
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
@text_top_margin_percentage = text_margins_percentages[0]
|
26
|
+
@text_right_margin_percentage = text_margins_percentages[1]
|
27
|
+
@text_bottom_margin_percentage = text_margins_percentages[2]
|
28
|
+
@text_left_margin_percentage = text_margins_percentages[3]
|
27
29
|
|
28
|
-
|
29
|
-
|
30
|
-
|
30
|
+
@band_height_percentage = params[:band_height_percentage]
|
31
|
+
@band_blur_radius_percentage = params[:band_blur_radius_percentage]
|
32
|
+
@band_blur_sigma_percentage = params[:band_blur_sigma_percentage]
|
31
33
|
|
32
|
-
|
34
|
+
@ignored_icons_regex = params[:ignored_icons_regex]
|
33
35
|
end
|
34
36
|
|
35
37
|
def run()
|
36
|
-
versioned_appiconset_path = self.class.get_versioned_path(
|
38
|
+
versioned_appiconset_path = self.class.get_versioned_path(@appiconset_path)
|
37
39
|
|
38
40
|
Dir.mkdir(versioned_appiconset_path) unless Dir.exist?(versioned_appiconset_path)
|
39
41
|
|
@@ -45,10 +47,12 @@ module Fastlane
|
|
45
47
|
cache = {}
|
46
48
|
end
|
47
49
|
|
48
|
-
|
50
|
+
FileUtils.copy("#{@appiconset_path}/#{CONTENTS_JSON_FILE_NAME}", "#{versioned_appiconset_path}/#{CONTENTS_JSON_FILE_NAME}")
|
51
|
+
|
52
|
+
Dir.glob("#{@appiconset_path}/*.png").each do |original_icon_path|
|
49
53
|
versioned_icon_path = self.class.get_versioned_path(original_icon_path)
|
50
54
|
|
51
|
-
text_sha = Digest::SHA2.hexdigest(
|
55
|
+
text_sha = Digest::SHA2.hexdigest(@text)
|
52
56
|
|
53
57
|
unless cache[original_icon_path].nil?
|
54
58
|
if File.exist?(versioned_icon_path)
|
@@ -61,7 +65,7 @@ module Fastlane
|
|
61
65
|
end
|
62
66
|
end
|
63
67
|
|
64
|
-
if
|
68
|
+
if @ignored_icons_regex && !(original_icon_path =~ @ignored_icons_regex).nil?
|
65
69
|
FileUtils.copy(original_icon_path, versioned_icon_path)
|
66
70
|
else
|
67
71
|
version_icon(original_icon_path, versioned_icon_path)
|
@@ -85,14 +89,19 @@ module Fastlane
|
|
85
89
|
def version_icon(original_icon_path, versioned_icon_path)
|
86
90
|
image = MiniMagick::Image.open(original_icon_path)
|
87
91
|
|
88
|
-
|
89
|
-
|
92
|
+
image_width = image[:width]
|
93
|
+
image_height = image[:height]
|
90
94
|
|
91
|
-
band_height =
|
92
|
-
band_blur_radius =
|
93
|
-
band_blur_sigma =
|
95
|
+
band_height = image_height * @band_height_percentage
|
96
|
+
band_blur_radius = image_width * @band_blur_radius_percentage
|
97
|
+
band_blur_sigma = image_width * @band_blur_sigma_percentage
|
94
98
|
|
95
|
-
band_top_position =
|
99
|
+
band_top_position = image_height - band_height
|
100
|
+
|
101
|
+
text_top_margin = image_height * @text_top_margin_percentage
|
102
|
+
text_right_margin = image_width * @text_right_margin_percentage
|
103
|
+
text_bottom_margin = image_height * @text_bottom_margin_percentage
|
104
|
+
text_left_margin = image_width * @text_left_margin_percentage
|
96
105
|
|
97
106
|
blurred_icon_path = suffix(versioned_icon_path, 'blurred')
|
98
107
|
mask_icon_path = suffix(versioned_icon_path, 'mask')
|
@@ -110,25 +119,25 @@ module Fastlane
|
|
110
119
|
convert << blurred_icon_path
|
111
120
|
convert << '-gamma' << '0'
|
112
121
|
convert << '-fill' << 'white'
|
113
|
-
convert << '-draw' << "rectangle 0, #{band_top_position}, #{
|
122
|
+
convert << '-draw' << "rectangle 0, #{band_top_position}, #{image_width}, #{image_height}"
|
114
123
|
convert << mask_icon_path
|
115
124
|
end
|
116
125
|
|
117
126
|
MiniMagick::Tool::Convert.new do |convert|
|
118
|
-
convert << '-size' << "#{
|
127
|
+
convert << '-size' << "#{image_width}x#{band_height}"
|
119
128
|
convert << 'xc:none'
|
120
129
|
convert << '-fill' << 'rgba(0, 0, 0, 0.2)'
|
121
|
-
convert << '-draw' << "rectangle 0, 0, #{
|
130
|
+
convert << '-draw' << "rectangle 0, 0, #{image_width}, #{band_height}"
|
122
131
|
convert << text_base_icon_path
|
123
132
|
end
|
124
133
|
|
125
134
|
MiniMagick::Tool::Convert.new do |convert|
|
126
135
|
convert << '-background' << 'none'
|
127
|
-
convert << '-size' << "#{
|
136
|
+
convert << '-size' << "#{image_width - (text_left_margin + text_right_margin)}x#{band_height - (text_top_margin + text_bottom_margin)}"
|
128
137
|
convert << '-fill' << 'white'
|
129
138
|
convert << '-gravity' << 'center'
|
130
139
|
# using label instead of caption prevents wrapping long lines
|
131
|
-
convert << "label:#{
|
140
|
+
convert << "label:#{@text}"
|
132
141
|
convert << text_icon_path
|
133
142
|
end
|
134
143
|
|
@@ -148,7 +157,7 @@ module Fastlane
|
|
148
157
|
convert << '-geometry' << "+0+#{band_top_position}"
|
149
158
|
convert << '-composite'
|
150
159
|
convert << text_icon_path
|
151
|
-
convert << '-geometry' << "
|
160
|
+
convert << '-geometry' << "+#{text_left_margin}+#{band_top_position + text_top_margin}"
|
152
161
|
convert << '-composite'
|
153
162
|
convert << versioned_icon_path
|
154
163
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-icon_versioning
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Iulian Onofrei
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mini_magick
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: coveralls
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: fastlane
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: pry
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
@@ -95,21 +95,21 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0
|
103
|
+
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0
|
110
|
+
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: rspec_junit_formatter
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -123,7 +123,7 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: rubocop
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - ">="
|
@@ -137,21 +137,21 @@ dependencies:
|
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: rubocop-require_tools
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
145
|
+
version: '0'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
152
|
+
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: simplecov
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ">="
|