acbaker 0.0.3 → 0.0.5
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/.gitignore +3 -1
- data/README.md +6 -0
- data/acbaker.gemspec +1 -0
- data/lib/acbaker/asset_pack.rb +17 -8
- data/lib/acbaker/commands/pack.rb +25 -2
- data/lib/acbaker/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0da3aebf60075ce0d77dbcdda8353ef87d099dd
|
4
|
+
data.tar.gz: d545f2520a8bb8ff17ac7ea78be66a0a32252d60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a7b744fbf7d7b0728bbd9a0f5f3521f9c588f35110a0b7d480d9491deb94b876ff2463e4fe9e9a7a51e85121f071bbeffc433e7f2f352e156bd1637766cb4cf5
|
7
|
+
data.tar.gz: 7ab1d19be2e6bf202b417b72edd40e041ee479b105f9de7beefe0779598bc85e37b438ff1f0fa14e58dcf051fb55a7071df903dafbf9191ed36abea3f3490842
|
data/.gitignore
CHANGED
data/README.md
CHANGED
data/acbaker.gemspec
CHANGED
@@ -16,6 +16,7 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.required_rubygems_version = '>= 1.3.6'
|
17
17
|
s.add_dependency "commander", '~> 4.1'
|
18
18
|
s.add_dependency 'json', '~> 1.8'
|
19
|
+
s.add_dependency 'rmagick', '~> 2.13'
|
19
20
|
s.add_development_dependency "rake", '~> 10.0'
|
20
21
|
s.files = `git ls-files`.split("\n")
|
21
22
|
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
data/lib/acbaker/asset_pack.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'json'
|
2
|
+
require 'rmagick'
|
2
3
|
|
3
4
|
module Acbaker
|
4
5
|
class AssetPack
|
@@ -17,7 +18,7 @@ module Acbaker
|
|
17
18
|
end
|
18
19
|
|
19
20
|
def defaults
|
20
|
-
{json: false}
|
21
|
+
{json: false, gravity: 'Center', strategy: 'cover'}
|
21
22
|
end
|
22
23
|
|
23
24
|
def process(source_image_file, target_directory, &block)
|
@@ -26,11 +27,15 @@ module Acbaker
|
|
26
27
|
json_output_file = File.join(target_directory, "Contents.json")
|
27
28
|
|
28
29
|
# Loop through images
|
29
|
-
@json_data['images'].each_with_index do |image_spec, index|
|
30
|
-
|
30
|
+
@json_data['images'].each_with_index.map do |image_spec, index|
|
31
|
+
|
32
|
+
image_size_present = image_spec['size']
|
33
|
+
image_magick = Magick::Image::read(source_image_file)[0]
|
34
|
+
image_spec['size'] = "#{image_magick.columns.to_s}x#{image_magick.rows.to_s}" unless image_size_present
|
35
|
+
|
31
36
|
# Get size
|
32
37
|
scale = image_spec['scale'].gsub('x', '').to_i
|
33
|
-
if
|
38
|
+
if image_size_present
|
34
39
|
(width_str, height_str) = image_spec['size'].split('x')
|
35
40
|
width = width_str.to_i * scale
|
36
41
|
height = height_str.to_i * scale
|
@@ -81,10 +86,14 @@ module Acbaker
|
|
81
86
|
end
|
82
87
|
|
83
88
|
# Generate image
|
84
|
-
if
|
85
|
-
|
89
|
+
if image_size_present
|
90
|
+
if @options[:strategy] == 'contain'
|
91
|
+
cmd = "convert #{source_image_file} -resize #{width}x -size #{width}x#{height} xc:#FFFFFF +swap -gravity #{@options[:gravity]} -composite #{target_directory}/#{filename}"
|
92
|
+
else
|
93
|
+
cmd = "convert #{source_image_file} -resize #{width}x#{height}^ -gravity #{@options[:gravity]} -crop #{width}x#{height}+0+0 +repage #{target_directory}/#{filename}"
|
94
|
+
end
|
86
95
|
else
|
87
|
-
cmd = "convert #{source_image_file} -gravity
|
96
|
+
cmd = "convert #{source_image_file} -gravity #{@options[:gravity]} +repage #{target_directory}/#{filename}"
|
88
97
|
end
|
89
98
|
system(cmd)
|
90
99
|
|
@@ -95,7 +104,7 @@ module Acbaker
|
|
95
104
|
image_spec['filename'] = filename
|
96
105
|
|
97
106
|
end
|
98
|
-
|
107
|
+
|
99
108
|
# Save Contents.json
|
100
109
|
File.open(json_output_file,"w") do |f|
|
101
110
|
f.write(JSON.pretty_generate(@json_data))
|
@@ -4,6 +4,8 @@ command :'pack' do |c|
|
|
4
4
|
c.description = "The type will be autodetected by filename, and can be overwritten using the --type option"
|
5
5
|
c.option '--type STRING', String, 'Specify asset pack type'
|
6
6
|
c.option '--json STRING', String, 'Specify custom json file path'
|
7
|
+
c.option '--gravity STRING', String, 'Specify gravity (NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast)'
|
8
|
+
c.option '--strategy STRING', String, 'Specify strategy (cover, contain)'
|
7
9
|
c.option '--force', String, 'Delete and recreate output directory (careful!)'
|
8
10
|
global_option '--force'
|
9
11
|
|
@@ -14,6 +16,8 @@ command :'pack' do |c|
|
|
14
16
|
@output_directory = args[1]
|
15
17
|
@type = options.type
|
16
18
|
@json = options.json
|
19
|
+
@gravity = options.gravity
|
20
|
+
@strategy = options.strategy
|
17
21
|
@force = options.force
|
18
22
|
|
19
23
|
# Validate
|
@@ -21,11 +25,16 @@ command :'pack' do |c|
|
|
21
25
|
validate_image!
|
22
26
|
validate_json!
|
23
27
|
validate_type!
|
28
|
+
validate_gravity!
|
29
|
+
validate_strategy!
|
30
|
+
|
24
31
|
validate_output_directory!
|
25
32
|
|
26
33
|
# Initialize packer
|
27
34
|
asset_pack = Acbaker::AssetPack.new(@type, {
|
28
|
-
json: JSON.parse(File.open(@json).read)
|
35
|
+
json: JSON.parse(File.open(@json).read),
|
36
|
+
gravity: @gravity,
|
37
|
+
strategy: @strategy
|
29
38
|
})
|
30
39
|
|
31
40
|
# Pack assets
|
@@ -79,9 +88,23 @@ command :'pack' do |c|
|
|
79
88
|
end
|
80
89
|
|
81
90
|
abort("error: Could not detect asset type.") if not @type
|
82
|
-
|
83
91
|
end
|
84
92
|
|
93
|
+
def validate_gravity!
|
94
|
+
if not @gravity
|
95
|
+
@gravity = "Center"
|
96
|
+
end
|
97
|
+
abort("error: Invalid gravity specified.") if not ["NorthWest", "North", "NorthEast", "West", "Center", "East", "SouthWest", "South", "SouthEast"].include?(@gravity)
|
98
|
+
end
|
99
|
+
|
100
|
+
def validate_strategy!
|
101
|
+
if not @strategy
|
102
|
+
@strategy = "cover"
|
103
|
+
end
|
104
|
+
abort("error: Invalid strategy specified.") if not ["cover", "contain"].include?(@strategy)
|
105
|
+
end
|
106
|
+
|
107
|
+
|
85
108
|
def validate_json!
|
86
109
|
if @json
|
87
110
|
abort("error: JSON file not found.") if not File.exist?(@json) or not File.file?(@json)
|
data/lib/acbaker/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acbaker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tobias Strebitzer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commander
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.8'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rmagick
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.13'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.13'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,3 +114,4 @@ signing_key:
|
|
100
114
|
specification_version: 4
|
101
115
|
summary: Convert any source images into xcode asset catalogs.
|
102
116
|
test_files: []
|
117
|
+
has_rdoc:
|