badge 0.7.1 → 0.8.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f2045ea909e4cf1c36ed2c8ea02e57184698de4a
4
- data.tar.gz: 680e442f03ae757874699aedc9c8683cec516275
3
+ metadata.gz: ff14105ef1cf3a54cf1bd6e4029aea9cf193da8f
4
+ data.tar.gz: 5a85c1c81155d8d99c731726e92b5a0e92b02a52
5
5
  SHA512:
6
- metadata.gz: 54fcc23128d5508b62ba7cb65b9d34edf62b227346b5280aa894bc345942f739a02cb73933a13ff0eb76ff5962dbeed08570c63625662a1c0647ebff3839c3b5
7
- data.tar.gz: 190439d191a43c3a26a8429deff9f72cd4a8383e63b0ecdb1b0283431cd839dd0f0edbd95442239797f51b659742cd5ffccb21808090bdd63d566dfab3d96b56
6
+ metadata.gz: b12697a64cf84ff0167b1bac0451403f6ae52f9721c3e644f82c34edea7920d62e0c9b29fb23c692f2e94d8071c0cd013280e3bc22d9c5a08ec187bec436f02e
7
+ data.tar.gz: 0dba6d198924d70f24bb0b391c9a91c10c7fc696bf262920d088818d0f335801e5190ecf41dfa109ec7257c57663fbf4e76fb6c3389959ef4d0c06592ff35d6b
data/lib/badge/base.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Badge
2
2
 
3
- VERSION = "0.7.1"
3
+ VERSION = "0.8.0"
4
4
  DESCRIPTION = "Add a badge overlay to your app icon"
5
5
 
6
6
  def self.root
data/lib/badge/options.rb CHANGED
@@ -41,10 +41,18 @@ module Badge
41
41
  type: Integer,
42
42
  optional: true),
43
43
 
44
+ FastlaneCore::ConfigItem.new(key: :shield_geometry,
45
+ description: "Position of shield on icon, relative to gravity e.g, +50+10%",
46
+ optional: true),
47
+
44
48
  FastlaneCore::ConfigItem.new(key: :shield_gravity,
45
49
  description: "Position of shield on icon. Default: North - Choices include: NorthWest, North, NorthEast, West, Center, East, South, West, South, SouthEast",
46
50
  optional: true),
47
51
 
52
+ FastlaneCore::ConfigItem.new(key: :shield_scale,
53
+ description: "Shield image scale factor; e.g, 0.5, 2, etc. - works with --shield_no_resize",
54
+ optional: true),
55
+
48
56
  FastlaneCore::ConfigItem.new(key: :shield_no_resize,
49
57
  description: "Shield image will no longer be resized to aspect fill the full icon. Instead it will only be shrinked to not exceed the icon graphic",
50
58
  is_string: false,
data/lib/badge/runner.rb CHANGED
@@ -1,13 +1,14 @@
1
1
  require 'fastimage'
2
2
  require 'timeout'
3
3
  require 'mini_magick'
4
+ require 'curb'
4
5
 
5
6
  module Badge
6
7
  class Runner
7
8
  @@retry_count = Badge.shield_io_retries
8
9
 
9
10
  def run(path, options)
10
- check_imagemagick!
11
+ check_tools!
11
12
  glob = "/**/*.appiconset/*.{png,PNG}"
12
13
  glob = options[:glob] if options[:glob]
13
14
 
@@ -33,7 +34,7 @@ module Badge
33
34
  end
34
35
  rescue Timeout::Error
35
36
  UI.error "Error loading image from shield.io timeout reached. Skipping Shield. Use --verbose for more info".red
36
- rescue OpenURI::HTTPError => error
37
+ rescue Curl::Err::CurlError => error
37
38
  response = error.io
38
39
  UI.error "Error loading image from shield.io response Error. Skipping Shield. Use --verbose for more info".red
39
40
  UI.error response.status if $verbose
@@ -55,19 +56,19 @@ module Badge
55
56
  icon = MiniMagick::Image.new(full_path)
56
57
 
57
58
  result = MiniMagick::Image.new(full_path)
58
-
59
+
59
60
  if !options[:no_badge]
60
61
  result = add_badge(options[:custom], options[:dark], icon, options[:alpha], alpha_channel, options[:badge_gravity])
61
62
  icon_changed = true
62
63
  end
63
64
  if shield
64
- result = add_shield(icon, result, shield, alpha_channel, options[:shield_gravity], options[:shield_no_resize])
65
+ result = add_shield(icon, result, shield, alpha_channel, options[:shield_gravity], options[:shield_no_resize], options[:shield_scale], options[:shield_geometry])
65
66
  icon_changed = true
66
67
  end
67
-
68
+
68
69
  if icon_changed
69
70
  result.format "png"
70
- result.write full_path
71
+ result.write full_path
71
72
  end
72
73
  end
73
74
  if icon_changed
@@ -80,52 +81,58 @@ module Badge
80
81
  end
81
82
  end
82
83
 
83
- def add_shield(icon, result, shield, alpha_channel, shield_gravity, shield_no_resize)
84
+ def add_shield(icon, result, shield, alpha_channel, shield_gravity, shield_no_resize, shield_scale, shield_geometry)
84
85
  UI.message "'#{icon.path}'"
85
86
  UI.verbose "Adding shield.io image ontop of icon".blue
86
87
 
87
- current_shield = MiniMagick::Image.open(shield.path)
88
-
89
- if icon.width > current_shield.width && !shield_no_resize
90
- current_shield.resize "#{icon.width}x#{icon.height}<"
88
+ new_path = "#{shield.path}.png"
89
+ shield_scale = shield_scale ? shield_scale.to_f : 1.0
90
+
91
+ if shield_no_resize
92
+ `rsvg-convert #{shield.path} -z #{shield_scale} -o #{new_path}`
91
93
  else
92
- current_shield.resize "#{icon.width}x#{icon.height}>"
94
+ `rsvg-convert #{shield.path} -w #{(icon.width * shield_scale).to_i} -a -o #{new_path}`
93
95
  end
94
-
95
- result = composite(result, current_shield, alpha_channel, shield_gravity || "north")
96
+
97
+ result = composite(result, MiniMagick::Image.open(new_path), alpha_channel, shield_gravity || "north", shield_geometry)
96
98
  end
97
99
 
98
100
  def load_shield(shield_string)
99
- url = Badge.shield_base_url + Badge.shield_path + shield_string + ".png"
100
- file_name = shield_string + ".png"
101
+ url = Badge.shield_base_url + Badge.shield_path + shield_string + ".svg"
102
+ file_name = shield_string + ".svg"
101
103
 
102
104
  UI.verbose "Trying to load image from shield.io. Timeout: #{Badge.shield_io_timeout}s".blue
103
105
  UI.verbose "URL: #{url}".blue
104
106
 
105
- shield = Tempfile.new(file_name).tap do |file|
106
- file.binmode
107
- file.write(open(url).read)
108
- file.close
109
- end
107
+ Curl::Easy.download(url, file_name)
108
+
109
+ File.open(file_name)
110
110
  end
111
-
112
- def check_imagemagick!
111
+
112
+ def check_tools!
113
+ if !`which rsvg-convert`.include?('rsvg-convert')
114
+ UI.error("You have to install RSVG to use `badge`")
115
+ UI.error("")
116
+ UI.error("Install it using (RSVG):")
117
+ UI.command("brew install librsvg")
118
+ UI.user_error!("Install RSVG and start your lane again!")
119
+ end
113
120
  return if `which convert`.include?('convert')
114
121
  return if `which gm`.include?('gm')
115
122
 
116
123
  UI.error("You have to install ImageMagick or GraphicsMagick to use `badge`")
117
124
  UI.error("")
118
125
  UI.error("Install it using (ImageMagick):")
119
- UI.command("brew update && brew install imagemagick")
126
+ UI.command("brew install imagemagick")
120
127
  UI.error("")
121
128
  UI.error("Install it using (GraphicsMagick):")
122
- UI.command("brew update && brew install graphicsmagick")
129
+ UI.command("brew install graphicsmagick")
123
130
  UI.error("")
124
131
  UI.error("If you don't have homebrew, visit http://brew.sh")
125
132
 
126
133
  UI.user_error!("Install ImageMagick and start your lane again!")
127
134
  end
128
-
135
+
129
136
  def add_badge(custom_badge, dark_badge, icon, alpha_badge, alpha_channel, badge_gravity)
130
137
  UI.message "'#{icon.path}'"
131
138
  UI.verbose "Adding badge image ontop of icon".blue
@@ -143,11 +150,12 @@ module Badge
143
150
  result = composite(icon, badge, alpha_channel, badge_gravity || "SouthEast")
144
151
  end
145
152
 
146
- def composite(image, overlay, alpha_channel, gravity)
153
+ def composite(image, overlay, alpha_channel, gravity, geometry = nil)
147
154
  image.composite(overlay, 'png') do |c|
148
155
  c.compose "Over"
149
156
  c.alpha 'On' unless !alpha_channel
150
157
  c.gravity gravity
158
+ c.geometry geometry if geometry
151
159
  end
152
160
  end
153
161
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: badge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Griesser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-16 00:00:00.000000000 Z
11
+ date: 2017-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: curb
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.9'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.9'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: fastlane
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +66,7 @@ dependencies:
52
66
  - - ">="
53
67
  - !ruby/object:Gem::Version
54
68
  version: '4.5'
55
- description: 0.7.1
69
+ description: 0.8.0
56
70
  email:
57
71
  - daniel.griesser.86@gmail.com
58
72
  executables: