compressit 0.5.1 → 0.9.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.
- data/README.rdoc +18 -41
- data/bin/compressit +1 -1
- data/lib/compressit.rb +31 -40
- data/lib/compressit/base.rb +17 -87
- data/lib/compressit/version.rb +1 -1
- metadata +2 -5
- data/lib/compressit/railtie.rb +0 -16
- data/lib/tasks/compressit.rake +0 -20
- data/lib/tasks/compressit.thor +0 -27
data/README.rdoc
CHANGED
@@ -4,21 +4,21 @@ Compressit provides a simple way to compress your project .css and .js files to
|
|
4
4
|
|
5
5
|
== Features
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
*
|
10
|
-
* Command Line Input (CLI) (coming soon)
|
11
|
-
* Thor tasks (coming soon)
|
7
|
+
* Command Line Input (CLI)
|
8
|
+
* Rake tasks (discontinued)
|
9
|
+
* Thor tasks (discontinued)
|
12
10
|
|
13
11
|
== Install
|
14
12
|
|
15
|
-
=== Rails
|
13
|
+
=== Rails (discontinued support)
|
14
|
+
|
15
|
+
NOTE: This will still work with Rails, however I have discontinued a specific rails 'integration' due to a very similar feature being added with the release of Rails 3.1
|
16
16
|
|
17
17
|
Add this line to your Gemfile:
|
18
18
|
|
19
19
|
gem 'compressit'
|
20
20
|
|
21
|
-
Then bundle install:
|
21
|
+
Then do a bundle install:
|
22
22
|
|
23
23
|
bundle install
|
24
24
|
|
@@ -30,44 +30,21 @@ Then bundle install:
|
|
30
30
|
|
31
31
|
== Usage
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
=== Rake
|
40
|
-
|
41
|
-
==== Rails
|
42
|
-
Setup (It is not required that you run this as both the .css and .js rake tasks will run it automatically):
|
43
|
-
|
44
|
-
rake compressit:setup
|
45
|
-
|
46
|
-
* Creates 'config/initializers/compressit.rb' with the version constants 'CSS_VERSION' and 'JS_VERSION' defaulted to '1.0.0'
|
47
|
-
* Creates 'public/stylesheets/compressed/' where compressed .css file is saved
|
48
|
-
* Creates 'public/javascripts/compressed/' where the compressed file is saved
|
49
|
-
|
50
|
-
Iterates through 'public/stylesheets' and compresses all .css files placing them into 'public/stylesheets/compressed/'
|
51
|
-
|
52
|
-
rake compressit:css
|
53
|
-
|
54
|
-
Iterates through 'public/javascripts' and compresses all .js files placing them into 'public/javascripts/compressed/'
|
55
|
-
|
56
|
-
rake compressit:js
|
57
|
-
|
58
|
-
Versioning:
|
59
|
-
|
60
|
-
Use 'config/initializers/compressit.rb' to version your .css and .js files. If you do not increment the version at all the previous file will just be overwritten
|
61
|
-
|
62
|
-
==== Non-Rails
|
63
|
-
|
64
|
-
(coming soon)
|
33
|
+
Usage: compressit [option] [FOLDER] [VERSION]
|
34
|
+
|
35
|
+
-h, --help Display this screen
|
36
|
+
-v, --version Display current gem version
|
37
|
+
-c, --css FOLDER VERSION Compress css files from [FOLDER] into [FOLDER]/compressed
|
38
|
+
-j, --js FOLDER VERSION Compress javascript files from [FOLDER] into [FOLDER]/compressed
|
65
39
|
|
66
40
|
---
|
67
41
|
|
68
|
-
|
42
|
+
== TODO
|
69
43
|
|
70
|
-
|
44
|
+
* May add a better versioning system
|
45
|
+
* Initially had the ability to specify a destination folder, may add this back if requested
|
46
|
+
* Tests
|
47
|
+
* One final pass of cleanup and refactoring
|
71
48
|
|
72
49
|
== Copyright
|
73
50
|
|
data/bin/compressit
CHANGED
data/lib/compressit.rb
CHANGED
@@ -1,51 +1,42 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
require 'compressit/base'
|
4
|
-
require 'compressit/version'
|
1
|
+
Dir["#{File.dirname(__FILE__)}/compressit/*"].each {|file| require(file)}
|
5
2
|
|
6
|
-
require '
|
3
|
+
require 'optparse'
|
7
4
|
|
8
5
|
module Compressit
|
9
6
|
class << self
|
10
7
|
|
11
|
-
def run(arguments
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
8
|
+
def run(arguments)
|
9
|
+
options = Hash.new
|
10
|
+
|
11
|
+
optparser = OptionParser.new do|opts|
|
12
|
+
|
13
|
+
opts.banner = "Usage: compressit [option] [FOLDER] [VERSION]"
|
14
|
+
|
15
|
+
opts.on('-h', '--help', 'Display this help') do
|
16
|
+
puts optparser
|
17
|
+
end
|
18
|
+
opts.on('-v', '--version', 'Display current gem version') do
|
19
|
+
puts "Currently using version: #{VERSION}"
|
20
|
+
end
|
21
|
+
opts.on('-c', '--css FOLDER VERSION', 'Compress css files from [FOLDER] into [FOLDER]/compressed') do
|
22
|
+
puts "Compressing css files from '#{arguments[0]}' into '#{arguments[0]}/compressed/compressed-#{arguments[1]}.css'"
|
23
|
+
options[:folder], options[:version], options[:ext] = arguments[0], arguments[1], '.css'
|
24
|
+
Compressit::Base.compressit(options)
|
25
|
+
end
|
26
|
+
opts.on('-j', '--js FOLDER VERSION', 'Compress javascript files from [FOLDER] into [FOLDER]/compressed') do
|
27
|
+
puts "Compressing javascript files from '#{arguments[0]}' into '#{arguments[0]}/compressed/compressed-#{arguments[1]}.js'"
|
28
|
+
options[:folder], options[:version], options[:ext] = arguments[0], arguments[1], '.js'
|
29
|
+
Compressit::Base.compressit(options)
|
30
|
+
end
|
20
31
|
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def parsed_options?
|
24
|
-
oparser = OptionParser.new
|
25
|
-
oparser.on('-h', '--help') {Compressit::Base.show_usage}
|
26
|
-
oparser.on('-s', '--setup') {Compressit::Base.setup}
|
27
|
-
oparser.on('-v', '--version') {puts "#{VERSION}"}
|
28
|
-
|
29
|
-
oparser.on('-css', '--css') {Compressit::Base.css}
|
30
|
-
oparser.on('-js', '--js') {Compressit::Base.js}
|
31
32
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
true
|
33
|
+
begin optparser.parse!(arguments)
|
34
|
+
rescue OptionParser::InvalidOption => error
|
35
|
+
puts "Oops! #{error}, try this: "
|
36
|
+
puts optparser
|
37
|
+
exit 1
|
38
|
+
end
|
39
39
|
end
|
40
40
|
|
41
|
-
# Setup the arguments
|
42
|
-
def process_arguments
|
43
|
-
# TO DO - place in local vars, etc
|
44
|
-
end
|
45
|
-
|
46
|
-
def process_command
|
47
|
-
# TO DO - do whatever this app does
|
48
|
-
end
|
49
|
-
|
50
41
|
end
|
51
42
|
end
|
data/lib/compressit/base.rb
CHANGED
@@ -2,101 +2,31 @@ module Compressit
|
|
2
2
|
module Base
|
3
3
|
class << self
|
4
4
|
|
5
|
-
def
|
6
|
-
@
|
7
|
-
@yuicompressor = File.expand_path(File.dirname(__FILE__) + './../yuicompressor-2.4.6.jar')
|
5
|
+
def compressit(options)
|
6
|
+
@version, @ext, @folder = options[:version], options[:ext], options[:folder]
|
8
7
|
|
9
|
-
|
10
|
-
# install thor tasks (coming soon)
|
11
|
-
# `thor install lib/tasks/compressit.thor`
|
12
|
-
|
13
|
-
# create the rails initializer that will contain the css/js version constants
|
14
|
-
unless File.exists?("#{Rails.root}/config/initializers/compressit.rb")
|
15
|
-
File.open("#{Rails.root}/config/initializers/compressit.rb", 'w') do |file|
|
16
|
-
file.puts "CSS_VERSION = '1.0.0'"
|
17
|
-
file.puts "JS_VERSION = '1.0.0'"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
# create the folder where the compressed .css files will be saved
|
22
|
-
File.directory?("#{Rails.root}/public/stylesheets/compressed") ? true : Dir.mkdir("#{Rails.root}/public/stylesheets/compressed")
|
23
|
-
|
24
|
-
# create the folder where the compressed .js files will be saved
|
25
|
-
File.directory?("#{Rails.root}/public/javascripts/compressed") ? true : Dir.mkdir("#{Rails.root}/public/javascripts/compressed")
|
26
|
-
|
27
|
-
# after the initializer has been created it needs to be required because it cannot be accessed through rake tasks
|
28
|
-
require "#{Rails.root}/config/initializers/compressit.rb"
|
29
|
-
|
30
|
-
# set css/js instance variables from css/js constants
|
31
|
-
@css_version = CSS_VERSION
|
32
|
-
@js_version = JS_VERSION
|
33
|
-
else
|
34
|
-
# coming soon
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def css
|
39
|
-
if defined?(Rails)
|
40
|
-
@files_to_compress = Dir.glob("#{Rails.root}/public/stylesheets/**/*.css")
|
41
|
-
@destination_path = Dir.open("#{Rails.root}/public/stylesheets/compressed")
|
42
|
-
else
|
43
|
-
# coming soon
|
44
|
-
end
|
45
|
-
|
46
|
-
@ext = '.css'
|
47
|
-
@compressed = "compressed-#{@css_version}#{@ext}"
|
8
|
+
@java, @yuicompressor = '/usr/bin/java', File.expand_path(File.dirname(__FILE__) + './../yuicompressor-2.4.6.jar')
|
48
9
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
def js
|
53
|
-
if defined?(Rails)
|
54
|
-
@files_to_compress = Dir.glob("#{Rails.root}/public/javascripts/**/*.js")
|
55
|
-
@destination_path = Dir.open("#{Rails.root}/public/javascripts/compressed")
|
56
|
-
else
|
57
|
-
# coming soon
|
58
|
-
end
|
10
|
+
Dir.exists?("#{@folder}/compressed") ? true : Dir.mkdir("#{@folder}/compressed")
|
11
|
+
@destination_path = Dir.open("#{@folder}/compressed")
|
59
12
|
|
60
|
-
@
|
61
|
-
@compressed = "compressed-#{@js_version}.#{@ext}"
|
13
|
+
@files_to_compress, @compressed = Dir.glob("#{@folder}/**/*#{@ext}"), "compressed-#{@version}#{@ext}"
|
62
14
|
|
63
|
-
compressit
|
64
|
-
end
|
65
|
-
|
66
|
-
def compressit
|
67
15
|
# remove compressed file if the version hasn't been updated to avoid duplicate compression
|
68
16
|
`rm -f #{File.path(@destination_path)}/#{@compressed}` if File.exists?("#{File.path(@destination_path)}/#{@compressed}")
|
69
|
-
|
17
|
+
|
70
18
|
# compress each file in @files_to_compress and save the compressed file to @destination_path
|
71
|
-
|
72
|
-
|
73
|
-
|
19
|
+
begin
|
20
|
+
@files_to_compress.each do |file|
|
21
|
+
`#{@java} -jar #{@yuicompressor} #{file} >> #{File.path(@destination_path)}/#{@compressed}`
|
22
|
+
puts "Added: #{File.basename(file)}... \n"
|
23
|
+
end
|
24
|
+
|
25
|
+
# confirm compression and show destination path where file can be found
|
26
|
+
puts "Complete! Compressed #{@ext} file '#{@compressed}', can be found in '#{File.path(@destination_path)}'"
|
27
|
+
rescue
|
28
|
+
puts "Hmm... looks like this folder doesn't contain any #{@ext} files."
|
74
29
|
end
|
75
|
-
|
76
|
-
# confirm compression and show destination path where file can be found
|
77
|
-
puts "Complete! Compressed #{@ext} file '#{@compressed}', can be found in '#{File.path(@destination_path)}'"
|
78
|
-
end
|
79
|
-
|
80
|
-
# add the ability to see css/js version. do
|
81
|
-
|
82
|
-
def show_usage
|
83
|
-
puts %{
|
84
|
-
--- Usage ---
|
85
|
-
(--)help, -h # show this usage
|
86
|
-
(--)setup, -s # create initial .css and .js version files
|
87
|
-
(--)version, -v # show the current gem version
|
88
|
-
|
89
|
-
(--)css, -css # compress .css files with the version specified in the config file (coming soon)
|
90
|
-
(--)js, -js # compress .js files with the version specified in the config file (coming soon)
|
91
|
-
|
92
|
-
--- Rake Tasks ---
|
93
|
-
rake css # compress .css files with the version specified in the config file
|
94
|
-
rake js # compress .js files with the version specified in the config file
|
95
|
-
|
96
|
-
--- Thor Tasks ---
|
97
|
-
thor css # compress .css files with the version specified in the config file (coming soon)
|
98
|
-
thor js # compress .js files with the version specified in the config file (coming soon)
|
99
|
-
}
|
100
30
|
end
|
101
31
|
|
102
32
|
end
|
data/lib/compressit/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: compressit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.9.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- sdomino
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-08-02 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|
@@ -42,10 +42,7 @@ files:
|
|
42
42
|
- compressit.gemspec
|
43
43
|
- lib/compressit.rb
|
44
44
|
- lib/compressit/base.rb
|
45
|
-
- lib/compressit/railtie.rb
|
46
45
|
- lib/compressit/version.rb
|
47
|
-
- lib/tasks/compressit.rake
|
48
|
-
- lib/tasks/compressit.thor
|
49
46
|
- lib/yuicompressor-2.4.6.jar
|
50
47
|
- spec/compressit_spec.rb
|
51
48
|
- spec/spec_helper.rb
|
data/lib/compressit/railtie.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'rails'
|
2
|
-
|
3
|
-
module Compressit
|
4
|
-
class Railtie < Rails::Railtie
|
5
|
-
|
6
|
-
# initializer "compressit.configure_rails_initialization" do
|
7
|
-
#
|
8
|
-
# end
|
9
|
-
|
10
|
-
rake_tasks do
|
11
|
-
# load "tasks/compressit.tasks"
|
12
|
-
load "tasks/compressit.rake"
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
data/lib/tasks/compressit.rake
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'compressit'
|
2
|
-
|
3
|
-
namespace :compressit do
|
4
|
-
|
5
|
-
desc ''
|
6
|
-
task :setup do
|
7
|
-
Compressit::Base.setup
|
8
|
-
end
|
9
|
-
|
10
|
-
desc ''
|
11
|
-
task :css => :setup do
|
12
|
-
Compressit::Base.css
|
13
|
-
end
|
14
|
-
|
15
|
-
desc ''
|
16
|
-
task :js => :setup do
|
17
|
-
Compressit::Base.js
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
data/lib/tasks/compressit.thor
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
# require 'compressit'
|
2
|
-
|
3
|
-
class Compressit < Thor
|
4
|
-
|
5
|
-
desc ''
|
6
|
-
def config do
|
7
|
-
Compressit::Base.config
|
8
|
-
end
|
9
|
-
|
10
|
-
desc ''
|
11
|
-
def setup do
|
12
|
-
Compressit::Base.setup
|
13
|
-
end
|
14
|
-
|
15
|
-
desc ''
|
16
|
-
method_options :version, :default => "1.0.0"
|
17
|
-
def css do
|
18
|
-
Compressit::Base.css
|
19
|
-
end
|
20
|
-
|
21
|
-
desc ''
|
22
|
-
method_options :version, :default => "1.0.0"
|
23
|
-
def js do
|
24
|
-
Compressit::Base.js
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|