ios_icon_generator 0.1.2 → 0.1.3
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/lib/ios_icon_generator/cli/commands/generate.rb +1 -7
- data/lib/ios_icon_generator/cli/commands/mask.rb +0 -2
- data/lib/ios_icon_generator/cli/commands/stub.rb +0 -2
- data/lib/ios_icon_generator/helpers/check_dependencies.rb +3 -2
- data/lib/ios_icon_generator/helpers/generate_icon.rb +10 -6
- data/lib/ios_icon_generator/helpers/mask_icon.rb +3 -0
- data/lib/ios_icon_generator/version.rb +1 -1
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d633ae350c09c576e31bd3e65b175496d1cd017f
|
4
|
+
data.tar.gz: 242575b699097b858353e9022c287910b9022d1f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1ae670eed65e4ebe753c4380faacdae7bf1680d837ea70ac97a20ed84bb064f489c784db49d8e3c38cf6447850269ece94745c25d880947e21eb964974d0c79
|
7
|
+
data.tar.gz: 2709e7e77982fd356d24f8a59433a43875fcc866e337191a15c6d36cfe107e3540fddc3de185650043108ff417c884ecef8da1c4dfa1ebb3a1d51de40bf66192
|
@@ -18,7 +18,6 @@ require 'colored2'
|
|
18
18
|
require 'parallel'
|
19
19
|
require 'ruby-progressbar'
|
20
20
|
require 'ios_icon_generator/helpers/generate_icon'
|
21
|
-
require 'ios_icon_generator/helpers/check_dependencies'
|
22
21
|
require 'hanami/cli'
|
23
22
|
|
24
23
|
module IOSIconGenerator
|
@@ -26,18 +25,13 @@ module IOSIconGenerator
|
|
26
25
|
module Commands
|
27
26
|
class Generate < Hanami::CLI::Command
|
28
27
|
desc 'Generate app icons'
|
29
|
-
argument :icon_path, required: true, desc: 'The unmasked
|
28
|
+
argument :icon_path, required: true, desc: 'The unmasked icon of any image file type. The icon must be at least 1024x1024.'
|
30
29
|
argument :xcasset_folder, default: '.', desc: "The path to your .xcassets folder. \
|
31
30
|
If not specified, the appiconsets will be generated in the current folder and can be draged\'n\'dropped there in xcode"
|
32
31
|
option :type, type: :array, default: %w[iphone], desc: 'Which target to generate the icons for. Can be "iphone", "ipad", "watch", "mac" or "carplay" or a combination of any of them, or "imessage"'
|
33
32
|
option :parallel_processes, type: :integer, default: -1, desc: 'Number of processes to use to process the files. Defaults to -1, meaning the number of cores the machine. \
|
34
33
|
Set to 0 to disable parallel processing.'
|
35
34
|
def call(icon_path:, xcasset_folder:, type:, **options)
|
36
|
-
Helpers.check_dependencies
|
37
|
-
|
38
|
-
raise "#{'ImageMagick'.blue.bold} is required. It can be installed via #{'homebrew'.bold.underlined} using #{'brew install imagemagick'.blue.bold.underlined}" unless Helpers.which('magick')
|
39
|
-
raise "#{'GhostScript'.blue.bold} is required. It can be installed via #{'homebrew'.bold.underlined} using #{'brew install ghostscript'.blue.bold.underlined}" unless Helpers.which('gs')
|
40
|
-
|
41
35
|
types = type.map(&:to_sym)
|
42
36
|
|
43
37
|
progress_bar = ProgressBar.create(total: nil)
|
@@ -49,8 +49,6 @@ module IOSIconGenerator
|
|
49
49
|
option :parallel_processes, type: :integer, default: -1, desc: 'Number of processes to use to process the files. Defaults to -1, meaning the number of cores the machine. \
|
50
50
|
Set to 0 to disable parallel processing.'
|
51
51
|
def call(appiconset_path:, output_path:, **options)
|
52
|
-
Helpers.check_dependencies
|
53
|
-
|
54
52
|
raise 'There is no App icon set at the path specified.' unless Dir.exist?(appiconset_path)
|
55
53
|
|
56
54
|
progress_bar = ProgressBar.create(total: nil)
|
@@ -42,8 +42,6 @@ module IOSIconGenerator
|
|
42
42
|
option :parallel_processes, type: :integer, default: -1, desc: 'Number of processes to use to process the files. Defaults to -1, meaning the number of cores the machine. \
|
43
43
|
Set to 0 to disable parallel processing.'
|
44
44
|
def call(text:, xcasset_folder:, type:, **options)
|
45
|
-
Helpers.check_dependencies
|
46
|
-
|
47
45
|
types = type.map(&:to_sym)
|
48
46
|
|
49
47
|
progress_bar = ProgressBar.create(total: nil)
|
@@ -18,9 +18,10 @@ require 'ios_icon_generator/helpers/which'
|
|
18
18
|
|
19
19
|
module IOSIconGenerator
|
20
20
|
module Helpers
|
21
|
-
def self.check_dependencies
|
21
|
+
def self.check_dependencies(requires_ghostscript: false)
|
22
22
|
raise "#{'ImageMagick'.blue.bold} is required. It can be installed via #{'homebrew'.bold.underlined} using #{'brew install imagemagick'.blue.bold.underlined}" unless Helpers.which('magick')
|
23
|
-
raise "#{'GhostScript'.blue.bold} is required. It can be installed via #{'homebrew'.bold.underlined} using #{'brew install ghostscript'.blue.bold.underlined}"
|
23
|
+
raise "#{'GhostScript'.blue.bold} is required. It can be installed via #{'homebrew'.bold.underlined} using #{'brew install ghostscript'.blue.bold.underlined}" \
|
24
|
+
if requires_ghostscript && !Helpers.which('gs')
|
24
25
|
end
|
25
26
|
end
|
26
27
|
end
|
@@ -17,6 +17,7 @@
|
|
17
17
|
require 'json'
|
18
18
|
require 'fileutils'
|
19
19
|
require 'ios_icon_generator/helpers/image_sets_definition'
|
20
|
+
require 'ios_icon_generator/helpers/check_dependencies'
|
20
21
|
|
21
22
|
module IOSIconGenerator
|
22
23
|
module Helpers
|
@@ -26,7 +27,7 @@ module IOSIconGenerator
|
|
26
27
|
# If +icon_path+ is set to +nil+, the function expects +generate_icon+ to be set or the function will raise.
|
27
28
|
#
|
28
29
|
# @param [String, #read] icon_path The path to the icon to use as the base icon.
|
29
|
-
# If specified, it must point to a valid
|
30
|
+
# If specified, it must point to a valid image file, with a resolution over 1024x1024 when applicable.
|
30
31
|
# If not specified, +generate_icon+ must be specified.
|
31
32
|
# @param [String, #read] output_folder The folder to create the app icon set in.
|
32
33
|
# @param [Array<Symbol>, #read] types The types to generate the sets of images for. Each type must be one of +:iphone+, +:ipad+, +:watch+, +mac+ or +carplay+, or it can be an array of just +:imessage+.
|
@@ -47,21 +48,24 @@ module IOSIconGenerator
|
|
47
48
|
#
|
48
49
|
# @return [String] Return the path to the generated app icon set.
|
49
50
|
def self.generate_icon(icon_path:, output_folder:, types:, parallel_processes: nil, generate_icon: nil, progress: nil)
|
51
|
+
is_pdf = icon_path && File.extname(icon_path) == '.pdf'
|
52
|
+
|
53
|
+
Helpers.check_dependencies(requires_ghostscript: is_pdf)
|
54
|
+
|
50
55
|
if icon_path
|
51
56
|
raise "There is no icon at #{icon_path}." unless File.exist?(icon_path)
|
52
57
|
|
53
|
-
raise 'The icon specified must be .pdf.' if File.extname(icon_path) != '.pdf'
|
54
|
-
|
55
58
|
matches = /(\d+)x(\d+)/.match(`magick identify "#{icon_path}"`)
|
56
|
-
raise 'Unable to verify icon. Please make sure it\'s a valid
|
59
|
+
raise 'Unable to verify icon. Please make sure it\'s a valid image file and try again.' if matches.nil?
|
57
60
|
|
58
61
|
width, height = matches.captures
|
59
|
-
raise 'Invalid
|
62
|
+
raise 'Invalid image specified.' if width.nil? || height.nil?
|
60
63
|
|
61
64
|
raise "The icon must at least be 1024x1024, it currently is #{width}x#{height}." unless width.to_i >= 1024 && height.to_i >= 1024
|
62
65
|
elsif generate_icon.nil?
|
63
66
|
raise 'icon_path has been set to nil, generate_icon must be specified'
|
64
67
|
end
|
68
|
+
|
65
69
|
appiconset_path = File.join(output_folder, "#{types.include?(:imessage) ? 'iMessage App Icon' : 'AppIcon'}.#{types.include?(:imessage) ? 'stickersiconset' : 'appiconset'}")
|
66
70
|
|
67
71
|
FileUtils.mkdir_p(appiconset_path)
|
@@ -128,7 +132,7 @@ module IOSIconGenerator
|
|
128
132
|
progress&.call(nil, total)
|
129
133
|
|
130
134
|
max_size = smaller_sizes.flatten.max
|
131
|
-
temp_icon_path = File.join(output_folder,
|
135
|
+
temp_icon_path = File.join(output_folder, ".temp_icon#{is_pdf ? '.pdf' : '.png'}")
|
132
136
|
begin
|
133
137
|
system('magick', 'convert', '-density', '400', icon_path, '-colorspace', 'sRGB', '-type', 'truecolor', '-scale', "#{max_size}x#{max_size}", temp_icon_path) if icon_path
|
134
138
|
progress&.call(1, total)
|
@@ -17,6 +17,7 @@
|
|
17
17
|
require 'json'
|
18
18
|
require 'base64'
|
19
19
|
require 'fileutils'
|
20
|
+
require 'ios_icon_generator/helpers/check_dependencies'
|
20
21
|
|
21
22
|
module IOSIconGenerator
|
22
23
|
module Helpers
|
@@ -74,6 +75,8 @@ module IOSIconGenerator
|
|
74
75
|
parallel_processes: nil,
|
75
76
|
progress: nil
|
76
77
|
)
|
78
|
+
Helpers.check_dependencies
|
79
|
+
|
77
80
|
extension = File.extname(appiconset_path)
|
78
81
|
output_folder = File.join(output_folder, "#{File.basename(appiconset_path, extension)}-#{mask[:suffix]}#{extension}")
|
79
82
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ios_icon_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stéphane Copin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colored2
|
@@ -140,16 +140,16 @@ dependencies:
|
|
140
140
|
name: debase
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- -
|
143
|
+
- - '='
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
145
|
+
version: 0.2.2
|
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.2.2
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: phashion
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -224,16 +224,16 @@ dependencies:
|
|
224
224
|
name: ruby-debug-ide
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
226
226
|
requirements:
|
227
|
-
- -
|
227
|
+
- - '='
|
228
228
|
- !ruby/object:Gem::Version
|
229
|
-
version:
|
229
|
+
version: 0.6.1
|
230
230
|
type: :development
|
231
231
|
prerelease: false
|
232
232
|
version_requirements: !ruby/object:Gem::Requirement
|
233
233
|
requirements:
|
234
|
-
- -
|
234
|
+
- - '='
|
235
235
|
- !ruby/object:Gem::Version
|
236
|
-
version:
|
236
|
+
version: 0.6.1
|
237
237
|
- !ruby/object:Gem::Dependency
|
238
238
|
name: simplecov
|
239
239
|
requirement: !ruby/object:Gem::Requirement
|