diff --git a/Rakefile b/Rakefile index fd35764..6eaea51 100644 --- a/Rakefile +++ b/Rakefile @@ -1,28 +1,10 @@ require 'spec/rake/spectask' -require 'spec/rake/spectask_precmd' -task :default => :'spec:all' +require 'bundler' +Bundler::GemHelper.install_tasks -namespace(:spec) do - - task :all => [:css, :js] - - Spec::Rake::SpecTask.new(:css) do |t| - t.precmd=%[CLASSPATH=#{(Dir['ext/*.jar'] * ':')}] - t.spec_opts ||= [] - t.spec_opts << "--options" << "spec/css/spec.opts" - t.spec_files = FileList['spec/css/*.rb'] - end - - Spec::Rake::SpecTask.new(:js) do |t| - t.precmd=%[CLASSPATH=#{(Dir['ext/*.jar'] * ':')}] - t.spec_opts ||= [] - t.spec_opts << "--options" << "spec/js/spec.opts" - t.spec_files = FileList['spec/js/*.rb'] - end +Spec::Rake::SpecTask.new do |t| + t.spec_opts ||= [] + t.spec_opts << "--options" << "spec/spec.opts" + t.spec_files = FileList['spec/**/*_spec.rb'] end - -task :cultivate do - system "touch Manifest.txt; rake check_manifest | grep -v \"(in \" | patch" - system "rake debug_gem | grep -v \"(in \" > `basename \\`pwd\\``.gemspec" -end \ No newline at end of file diff --git a/app.rb b/app.rb deleted file mode 100644 index 5814d3f..0000000 --- a/app.rb +++ /dev/null @@ -1,19 +0,0 @@ -require "rubygems" -require "bundler" -Bundler.setup -$: << File.join(File.dirname(__FILE__), 'lib') -require 'squeezy' -require 'sinatra' - -set :reload, false -set :environment, :production - -squeezy = Squeezy.new - -put('/js') do - squeezy.compress_js(request.env['rack.input'].read) -end - -put('/css') do - squeezy.compress_css(request.env['rack.input'].read) -end diff --git a/bin/squeezy b/bin/squeezy new file mode 100644 index 0000000..1c89e86 --- /dev/null +++ b/bin/squeezy @@ -0,0 +1,5 @@ +#!/usr/bin/env ruby + +require 'squeezy' + +Squeezy.run_service \ No newline at end of file diff --git a/ext/jargs-1.0.jar b/ext/jargs-1.0.jar deleted file mode 100644 index cdbc80b..0000000 Binary files a/ext/jargs-1.0.jar and /dev/null differ diff --git a/ext/yuicompressor-2.4.2.jar b/lib/jars/yuicompressor-2.3.6.jar similarity index 90% rename from ext/yuicompressor-2.4.2.jar rename to lib/jars/yuicompressor-2.3.6.jar index c29470b..329a873 100644 Binary files a/ext/yuicompressor-2.4.2.jar and b/lib/jars/yuicompressor-2.3.6.jar differ diff --git a/lib/squeezy.rb b/lib/squeezy.rb index 6d6a15b..5bb8a71 100644 --- a/lib/squeezy.rb +++ b/lib/squeezy.rb @@ -1,6 +1,13 @@ +require 'jars/yuicompressor-2.3.6.jar' require 'squeezy/reporter' require 'squeezy/compressor' +require 'squeezy/service' +require 'squeezy/version' class Squeezy include Java + + def self.run_service + Squeezy::Service.run! + end end diff --git a/lib/squeezy/service.rb b/lib/squeezy/service.rb new file mode 100644 index 0000000..002bb6b --- /dev/null +++ b/lib/squeezy/service.rb @@ -0,0 +1,18 @@ +require 'sinatra' + +class Squeezy + class Service < Sinatra::Base + set :reload, false + set :environment, :production + + squeezy = Squeezy.new + + put('/js') do + squeezy.compress_js(request.env['rack.input'].read) + end + + put('/css') do + squeezy.compress_css(request.env['rack.input'].read) + end + end +end \ No newline at end of file diff --git a/lib/squeezy/version.rb b/lib/squeezy/version.rb new file mode 100644 index 0000000..2209153 --- /dev/null +++ b/lib/squeezy/version.rb @@ -0,0 +1,3 @@ +class Squeezy + VERSION = '0.0.1' +end \ No newline at end of file diff --git a/spec/css/compress.rb b/spec/css/compress.rb deleted file mode 100644 index b8fd272..0000000 --- a/spec/css/compress.rb +++ /dev/null @@ -1,13 +0,0 @@ -require 'java' -require 'lib/squeezy/reporter' -require 'lib/squeezy/compressor' - -describe "A CSS Compressor" do - source = File.open("spec/fixtures/css-multiline.css").read - it "should return less than it started with" do - source.size.should > compress_css(source).size - end - it "should have no new lines" do - compress_css(source).count("\n").should == 0 - end -end \ No newline at end of file diff --git a/spec/css_spec.rb b/spec/css_spec.rb new file mode 100644 index 0000000..e5b35ed --- /dev/null +++ b/spec/css_spec.rb @@ -0,0 +1,17 @@ +require 'spec_helper' + +describe "A CSS Compressor" do + before(:each) do + @squeezy = Squeezy.new + `rm -rf /tmp/*.css` + `rm -rf /tmp/*.js` + @source = File.read("spec/fixtures/css-multiline.css") + end + + it "should return less than it started with" do + @source.size.should > @squeezy.compress_css(@source).size + end + it "should have no new lines" do + @squeezy.compress_css(@source).count("\n").should == 0 + end +end \ No newline at end of file diff --git a/spec/js/spec.opts b/spec/js/spec.opts deleted file mode 100644 index 49fd993..0000000 --- a/spec/js/spec.opts +++ /dev/null @@ -1,7 +0,0 @@ ---colour ---format -specdoc ---loadby -mtime ---reverse ---backtrace \ No newline at end of file diff --git a/spec/js/compress.rb b/spec/js_spec.rb similarity index 55% rename from spec/js/compress.rb rename to spec/js_spec.rb index 6d42367..ded0890 100644 --- a/spec/js/compress.rb +++ b/spec/js_spec.rb @@ -1,20 +1,24 @@ -require 'java' -require 'lib/squeezy/reporter' -require 'lib/squeezy/compressor' +require 'spec_helper' describe "A JS Compressor" do + before(:each) do + @squeezy = Squeezy.new + `rm -rf /tmp/*.css` + `rm -rf /tmp/*.js` + end + it "should return less than it started with" do js = IO.read("spec/fixtures/js-multiline.js") - js.size.should > compress_js(js).size + js.size.should > @squeezy.compress_js(js).size end it "should have no new lines" do js = IO.read("spec/fixtures/js-multiline.js") - compress_js(js).count("\n").should == 0 + @squeezy.compress_js(js).count("\n").should == 0 end it "should return the original file when the js is malformed" do js_malformed = IO.read("spec/fixtures/js-malformed.js") - compress_js(js_malformed).should == js_malformed + @squeezy.compress_js(js_malformed).should == js_malformed end end \ No newline at end of file diff --git a/spec/rake/spectask_precmd.rb b/spec/rake/spectask_precmd.rb deleted file mode 100644 index 90acd8f..0000000 --- a/spec/rake/spectask_precmd.rb +++ /dev/null @@ -1,61 +0,0 @@ -module Spec - module Rake - class SpecTask - attr_accessor :precmd - - def define # :nodoc: - spec_script = File.expand_path(@libs.first + '/../bin/spec') - - lib_path = libs.join(File::PATH_SEPARATOR) - actual_name = Hash === name ? name.keys.first : name - unless ::Rake.application.last_comment - desc "Run specs" + (rcov ? " using RCov" : "") - end - task name do - RakeFileUtils.verbose(verbose) do - unless spec_file_list.empty? - # ruby [ruby_opts] -Ilib -S rcov [rcov_opts] bin/spec -- examples [spec_opts] - # or - # ruby [ruby_opts] -Ilib bin/spec examples [spec_opts] - cmd_parts = [@precmd, RUBY] - cmd_parts += ruby_opts - cmd_parts << %[-I"#{lib_path}"] - cmd_parts << "-S rcov" if rcov - cmd_parts << "-w" if warning - cmd_parts << rcov_option_list - cmd_parts << %[-o "#{rcov_dir}"] if rcov - cmd_parts << %["#{spec_script}"] - cmd_parts << "--" if rcov - cmd_parts += spec_file_list.collect { |fn| %["#{fn}"] } - cmd_parts << spec_option_list - if out - cmd_parts << %[> "#{out}"] - STDERR.puts "The Spec::Rake::SpecTask#out attribute is DEPRECATED and will be removed in a future version. Use --format FORMAT:WHERE instead." - end - cmd = cmd_parts.join(" ") - puts cmd if verbose - unless system(cmd) - STDERR.puts failure_message if failure_message - raise("Command #{cmd} failed") if fail_on_error - end - end - end - end - - if rcov - desc "Remove rcov products for #{actual_name}" - task paste("clobber_", actual_name) do - rm_r rcov_dir rescue nil - end - - clobber_task = paste("clobber_", actual_name) - task :clobber => [clobber_task] - - task actual_name => clobber_task - end - self - end - - end - end -end diff --git a/spec/css/spec.opts b/spec/spec.opts similarity index 100% rename from spec/css/spec.opts rename to spec/spec.opts diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..6ca1b92 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,2 @@ +$LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib')) +require 'squeezy' \ No newline at end of file diff --git a/squeezy.gemspec b/squeezy.gemspec new file mode 100644 index 0000000..10c9962 --- /dev/null +++ b/squeezy.gemspec @@ -0,0 +1,27 @@ +# -*- encoding: utf-8 -*- +$:.push File.expand_path("../lib", __FILE__) +require "squeezy/version" + +Gem::Specification.new do |s| + s.name = "squeezy" + s.version = Squeezy::VERSION + s.platform = Gem::Platform::RUBY + s.authors = ["Joshua Hull"] + s.email = ["joshbuddy@gmail.com"] + s.homepage = "http://rubygems.org/gems/squeezy" + s.summary = %q{Asset compression service via YUI compressor} + s.description = %q{Asset compression service via YUI compressor} + + s.rubyforge_project = "squeezy" + + s.add_dependency "glassfish" + s.add_dependency "sinatra" + s.add_development_dependency "rspec" + s.add_development_dependency "rake" + s.add_development_dependency "bundler", ">= 1.0.0" + + s.files = `git ls-files`.split("\n") + s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") + s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) } + s.require_paths = ["lib"] +end