tiny_png 0.2.0 → 0.3.0.pre
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.
- data/.gitignore +4 -0
- data/CHANGELOG.md +13 -0
- data/README.md +79 -5
- data/Rakefile +1 -0
- data/lib/tiny_png.rb +2 -1
- data/lib/tiny_png/client.rb +12 -3
- data/lib/tiny_png/shrink.rb +5 -1
- data/lib/tiny_png/tasks.rb +21 -0
- data/lib/tiny_png/version.rb +3 -0
- data/sample_config.yml +3 -0
- data/tiny_png.gemspec +22 -0
- metadata +19 -10
data/.gitignore
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
0.3.0.pre - October 11, 2012
|
2
|
+
|
3
|
+
- Use of config file
|
4
|
+
- Introduce rake task to perform shrinking action on images / directories
|
5
|
+
|
6
|
+
0.2.0 - October 10, 2012
|
7
|
+
|
8
|
+
- Allow for shrinking multiple images / directories at one time
|
9
|
+
- Move from TinyPng::Shrink.new to TinyPng::Client.new
|
10
|
+
|
11
|
+
0.1.1 - October 10, 2012
|
12
|
+
|
13
|
+
- First release
|
data/README.md
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
- [What Does This Gem Do?] (#what-does-this-gem-do)
|
5
5
|
- [Installation] (#installation)
|
6
6
|
- [Usage] (#usage)
|
7
|
+
- [Using From Rake](#using-from-rake)
|
7
8
|
|
8
9
|
## What Is TinyPNG
|
9
10
|
|
@@ -37,16 +38,24 @@ gem 'tiny_png'
|
|
37
38
|
|
38
39
|
## Usage
|
39
40
|
|
40
|
-
Create an instance of the `TinyPng::Client` class
|
41
|
+
Create an instance of the `TinyPng::Client` class:
|
41
42
|
|
42
43
|
```ruby
|
43
|
-
@client = TinyPng::Client.new
|
44
|
+
@client = TinyPng::Client.new
|
44
45
|
```
|
45
46
|
|
46
|
-
|
47
|
+
Note that this will look for the configuration file in `config/tiny_png.yml`. See the [sample config](https://github.com/sturgill/tiny_png/sample_config.yml).
|
48
|
+
If you choose to not use the config file, you will need to pass in your API key in the optional hash:
|
47
49
|
|
48
50
|
```ruby
|
49
|
-
@client = TinyPng::Client.new
|
51
|
+
@client = TinyPng::Client.new :api_key => 'my_api_key'
|
52
|
+
```
|
53
|
+
|
54
|
+
If you want to work with a list of images, and want to silently suppress exceptions, change that in the config file or
|
55
|
+
pass it into the optional hash:
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
@client = TinyPng::Client.new :suppress_exceptions => true
|
50
59
|
```
|
51
60
|
|
52
61
|
Next, pass in the full paths to the images you want to shrink (you can also pass in whole directories)
|
@@ -83,4 +92,69 @@ For each image path analyzed (whether sent in directly or picked out of a folder
|
|
83
92
|
|
84
93
|
- There must be a file already at the specified path
|
85
94
|
- That file must be readable and writeable
|
86
|
-
- The file name *must* end in `.png`
|
95
|
+
- The file name *must* end in `.png`
|
96
|
+
|
97
|
+
### Using From Rake
|
98
|
+
|
99
|
+
Create a Rakefile in your app's root (or add this to an existing Rakefile):
|
100
|
+
|
101
|
+
```ruby
|
102
|
+
require 'your/app'
|
103
|
+
require 'tiny_png/tasks'
|
104
|
+
```
|
105
|
+
|
106
|
+
The `rake tiny_png:shrink` task can be called to shrink images from the command line. To use this rake task,
|
107
|
+
you must pass a environment variable called `SHRINK`. `SHRINK` should be a comma-separated list of paths you want shrunk.
|
108
|
+
As with the `@client.shrink` method, the SHRINK variable accepts both directory and specific image paths.
|
109
|
+
|
110
|
+
**NOTE:** Because this works by splitting the environment string into an array based on a comma separator, it follows
|
111
|
+
that you can't have commas in your directory or image paths.
|
112
|
+
|
113
|
+
The same constraints exist from rake as do from the method call: namely, you must supply the full path, and specific
|
114
|
+
image paths must exist, be readable, be writable, and end in `.png`.
|
115
|
+
|
116
|
+
**Examples:**
|
117
|
+
|
118
|
+
Shrink a single file:
|
119
|
+
|
120
|
+
```ruby
|
121
|
+
SHRINK=/path/to/image.png rake tiny_png:shrink
|
122
|
+
```
|
123
|
+
|
124
|
+
Shrink multiple files:
|
125
|
+
|
126
|
+
```ruby
|
127
|
+
SHRINK=/path/to/first.png,/path/to/second.png rake tiny_png:shrink
|
128
|
+
```
|
129
|
+
|
130
|
+
Shrink a whole directory:
|
131
|
+
|
132
|
+
```ruby
|
133
|
+
SHRINK=/image/directory rake tiny_png:shrink
|
134
|
+
```
|
135
|
+
|
136
|
+
Combining directories and specific image files:
|
137
|
+
|
138
|
+
```ruby
|
139
|
+
SHRINK=/image/directory,/path/to/image.png rake tiny_png:shrink
|
140
|
+
```
|
141
|
+
|
142
|
+
By default, this rake task will use the settings in config/tiny_png.yml. You can overwrite specific settings by passing
|
143
|
+
environment variables. For example, if I do not suppress exceptions in my base config, but want
|
144
|
+
to when running a rake task, all I would need to do is set the `SUPPRESS_EXCEPTIONS` environment variable to true:
|
145
|
+
|
146
|
+
```ruby
|
147
|
+
SUPPRESS_EXCEPTIONS=true SHRINK=/some/image.png rake tiny_png:shrink
|
148
|
+
```
|
149
|
+
|
150
|
+
You can pass in an api key in a similar way:
|
151
|
+
|
152
|
+
```ruby
|
153
|
+
API_KEY=my_api_key SHRINK=/some/image.png rake tiny_png:shrink
|
154
|
+
```
|
155
|
+
|
156
|
+
Naturally, these can all be combined in any fashion:
|
157
|
+
|
158
|
+
```ruby
|
159
|
+
SUPPRESS_EXCEPTIONS=true API_KEY=my_api_key SHRINK=/image/directory,/some/image.png rake tiny_png:shrink
|
160
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'rubygems'
|
data/lib/tiny_png.rb
CHANGED
data/lib/tiny_png/client.rb
CHANGED
@@ -24,9 +24,18 @@ module TinyPng
|
|
24
24
|
#
|
25
25
|
# Returns: TinyPng::Client instance
|
26
26
|
#
|
27
|
-
def initialize
|
28
|
-
|
29
|
-
|
27
|
+
def initialize options={}
|
28
|
+
if defined?(Rails) && Rails.try(:root) && Rails.try(:env)
|
29
|
+
config_path = File.join(Rails.root, 'config', 'tiny_png.yml')
|
30
|
+
config = YAML.load_file(config_path)[Rails.env] if File.exists? config_path
|
31
|
+
end
|
32
|
+
config ||= {}
|
33
|
+
|
34
|
+
@options = {
|
35
|
+
:suppress_exceptions => config['suppress_exceptions'] || false,
|
36
|
+
:api_key => config['api_key'] || '',
|
37
|
+
:username => config['api_user'] || 'api'
|
38
|
+
}.merge(options)
|
30
39
|
end
|
31
40
|
end
|
32
41
|
end
|
data/lib/tiny_png/shrink.rb
CHANGED
@@ -46,7 +46,11 @@ module TinyPng::Shrink
|
|
46
46
|
current_content = File.read image_path
|
47
47
|
|
48
48
|
# passes our quick checks, so let's fire off the request
|
49
|
-
response = self.class.post(
|
49
|
+
response = self.class.post(
|
50
|
+
'/api/shrink',
|
51
|
+
:basic_auth => { :username => @options[:username], :password => @options[:api_key] },
|
52
|
+
:body => current_content.force_encoding('BINARY')
|
53
|
+
)
|
50
54
|
|
51
55
|
# abort unless TinyPNG successfully did its thing
|
52
56
|
return raise_exception ShrinkingFailed, response.message unless response.code == 200
|
@@ -0,0 +1,21 @@
|
|
1
|
+
namespace :tiny_png do
|
2
|
+
desc 'Shrink the images/directory: the SHRINK env variable must be set (comma-separated list of all files / directories you want shrunk)'
|
3
|
+
task :shrink => :environment do
|
4
|
+
abort "set SHRINK env var, e.g., $ SHRINK=/path/to/image.png,/path/to/another.png rake tiny_png:shrink" if ENV['SHRINK'].nil?
|
5
|
+
|
6
|
+
options = {}
|
7
|
+
[:api_key, :user_name].each do |key|
|
8
|
+
env_key = key.to_s.upcase
|
9
|
+
options[key] = ENV[env_key] unless ENV[env_key].nil?
|
10
|
+
end
|
11
|
+
|
12
|
+
unless ENV['SUPPRESS_EXCEPTIONS'].nil?
|
13
|
+
unless ['true', 'false'].include?(ENV['SUPPRESS_EXCEPTIONS'].downcase)
|
14
|
+
abort "SUPPRESS_EXCEPTIONS can only be set to true or false: #{ENV['SUPPRESS_EXCEPTIONS']} is not a valid boolean value."
|
15
|
+
end
|
16
|
+
options[:suppress_exceptions] = ENV['SUPPRESS_EXCEPTIONS'].downcase == 'true'
|
17
|
+
end
|
18
|
+
|
19
|
+
TinyPng::Client.new(options).shrink ENV['SHRINK'].split(',')
|
20
|
+
end
|
21
|
+
end
|
data/sample_config.yml
ADDED
data/tiny_png.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
$LOAD_PATH.unshift 'lib'
|
2
|
+
require 'tiny_png/version'
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = 'tiny_png'
|
6
|
+
s.version = TinyPng::Version
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.rubyforge_project = 'tiny_png'
|
9
|
+
s.summary = 'Make your PNGs tiny'
|
10
|
+
s.description = "Use the TinyPNG service to minimize the size of your image files."
|
11
|
+
s.author = 'Chris Sturgill'
|
12
|
+
s.email = 'chris@thesturgills.com'
|
13
|
+
s.files = `git ls-files`.split($/)
|
14
|
+
s.homepage = 'https://github.com/sturgill/tiny_png'
|
15
|
+
s.require_paths = ['lib']
|
16
|
+
s.add_dependency 'httparty'
|
17
|
+
s.license = 'MIT'
|
18
|
+
s.post_install_message = %q{For easiest use, create a config file at config/tiny_png.yml file. Example:
|
19
|
+
https://github.com/sturgill/tiny_png/sample_config.yml
|
20
|
+
|
21
|
+
}
|
22
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tiny_png
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.0.pre
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Chris Sturgill
|
@@ -13,7 +13,7 @@ date: 2012-10-11 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
16
|
-
requirement: &
|
16
|
+
requirement: &2152185580 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,24 +21,33 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2152185580
|
25
25
|
description: Use the TinyPNG service to minimize the size of your image files.
|
26
26
|
email: chris@thesturgills.com
|
27
27
|
executables: []
|
28
28
|
extensions: []
|
29
29
|
extra_rdoc_files: []
|
30
30
|
files:
|
31
|
+
- .gitignore
|
32
|
+
- CHANGELOG.md
|
33
|
+
- LICENSE
|
34
|
+
- README.md
|
35
|
+
- Rakefile
|
36
|
+
- lib/tiny_png.rb
|
31
37
|
- lib/tiny_png/client.rb
|
32
38
|
- lib/tiny_png/exception_handling.rb
|
33
39
|
- lib/tiny_png/exceptions.rb
|
34
40
|
- lib/tiny_png/shrink.rb
|
35
|
-
- lib/tiny_png.rb
|
36
|
-
-
|
37
|
-
-
|
41
|
+
- lib/tiny_png/tasks.rb
|
42
|
+
- lib/tiny_png/version.rb
|
43
|
+
- sample_config.yml
|
44
|
+
- tiny_png.gemspec
|
38
45
|
homepage: https://github.com/sturgill/tiny_png
|
39
46
|
licenses:
|
40
47
|
- MIT
|
41
|
-
post_install_message:
|
48
|
+
post_install_message: ! "For easiest use, create a config file at config/tiny_png.yml
|
49
|
+
file. Example:\n https://github.com/sturgill/tiny_png/sample_config.yml\n \n
|
50
|
+
\ "
|
42
51
|
rdoc_options: []
|
43
52
|
require_paths:
|
44
53
|
- lib
|
@@ -51,9 +60,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
51
60
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
52
61
|
none: false
|
53
62
|
requirements:
|
54
|
-
- - ! '
|
63
|
+
- - ! '>'
|
55
64
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
65
|
+
version: 1.3.1
|
57
66
|
requirements: []
|
58
67
|
rubyforge_project: tiny_png
|
59
68
|
rubygems_version: 1.8.16
|