slinky 0.4.0 → 0.4.1
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/Gemfile +1 -0
- data/bin/slinky +2 -2
- data/lib/slinky/manifest.rb +6 -6
- data/lib/slinky/runner.rb +10 -1
- data/lib/slinky/server.rb +2 -2
- data/lib/slinky.rb +13 -0
- data/slinky.gemspec +2 -2
- data/spec/slinky_spec.rb +1 -4
- metadata +3 -3
    
        data/Gemfile
    CHANGED
    
    
    
        data/bin/slinky
    CHANGED
    
    
    
        data/lib/slinky/manifest.rb
    CHANGED
    
    | @@ -4,9 +4,9 @@ require 'pathname' | |
| 4 4 | 
             
            module Slinky
         | 
| 5 5 | 
             
              # extensions of files that can contain build directives
         | 
| 6 6 | 
             
              DIRECTIVE_FILES = %w{js css html haml sass scss coffee}
         | 
| 7 | 
            -
              REQUIRE_DIRECTIVE =  | 
| 8 | 
            -
              SCRIPTS_DIRECTIVE =  | 
| 9 | 
            -
              STYLES_DIRECTIVE  =  | 
| 7 | 
            +
              REQUIRE_DIRECTIVE = /^[^\n\w]*(slinky_require)\((".*"|'.+'|)\)[^\n\w]*$/
         | 
| 8 | 
            +
              SCRIPTS_DIRECTIVE = /^[^\n\w]*(slinky_scripts)[^\n\w]*$/
         | 
| 9 | 
            +
              STYLES_DIRECTIVE  = /^[^\n\w]*(slinky_styles)[^\n\w]*$/
         | 
| 10 10 | 
             
              BUILD_DIRECTIVES = Regexp.union(REQUIRE_DIRECTIVE, SCRIPTS_DIRECTIVE, STYLES_DIRECTIVE)
         | 
| 11 11 | 
             
              CSS_URL_MATCHER = /url\(['"]?([^'"\/][^\s)]+\.[a-z]+)(\?\d+)?['"]?\)/
         | 
| 12 12 |  | 
| @@ -57,7 +57,7 @@ module Slinky | |
| 57 57 | 
             
                      %Q\<script type="text/javascript" src="#{d.relative_output_path}"></script>\
         | 
| 58 58 | 
             
                    }.join("")
         | 
| 59 59 | 
             
                  else
         | 
| 60 | 
            -
                    '<script type="text/ | 
| 60 | 
            +
                    '<script type="text/javascript" src="/scripts.js"></script>'
         | 
| 61 61 | 
             
                  end
         | 
| 62 62 | 
             
                end
         | 
| 63 63 |  | 
| @@ -68,9 +68,9 @@ module Slinky | |
| 68 68 | 
             
                    f = File.open(s.build_to.to_s, 'rb'){|f| f.read}
         | 
| 69 69 | 
             
                    (block_given?) ? (yield s, f) : f
         | 
| 70 70 | 
             
                  }.join("\n")
         | 
| 71 | 
            -
             | 
| 71 | 
            +
             | 
| 72 72 | 
             
                  File.open(output, "w+"){|f|
         | 
| 73 | 
            -
                    f.write(compressor.compress(s))
         | 
| 73 | 
            +
                    f.write(compressor.compress(s)) 
         | 
| 74 74 | 
             
                  }
         | 
| 75 75 | 
             
                  scripts.collect{|s| FileUtils.rm(s.build_to)}
         | 
| 76 76 | 
             
                end
         | 
    
        data/lib/slinky/runner.rb
    CHANGED
    
    | @@ -13,6 +13,9 @@ module Slinky | |
| 13 13 | 
             
                  parser.parse! @argv
         | 
| 14 14 | 
             
                  @command = @argv.shift
         | 
| 15 15 | 
             
                  @arguments = @argv
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  config_path = "#{@options[:src_dir]}/slinky.yaml"
         | 
| 18 | 
            +
                  @config = ConfigReader.from_file(config_path) if File.exist?(config_path)
         | 
| 16 19 | 
             
                end
         | 
| 17 20 |  | 
| 18 21 | 
             
                def version
         | 
| @@ -30,6 +33,7 @@ module Slinky | |
| 30 33 | 
             
                    opts.on("-o DIR", "--build-dir DIR", "Directory to which the site will be built.", "Use in conjunction with the 'build' command."){|dir| @options[:build_dir] = File.expand_path(dir)}
         | 
| 31 34 | 
             
                    opts.on("-p PORT", "--port PORT", "Port to run on (default: #{@options[:port]})"){|p| @options[:port] = p.to_i}
         | 
| 32 35 | 
             
                    opts.on("-s DIR", "--src-dir DIR", "Directory containing project source"){|p| @options[:src_dir] = p}
         | 
| 36 | 
            +
                    opts.on("-n", "--no-proxy", "Don't set up proxy server"){ @options[:no_proxy] = true }
         | 
| 33 37 | 
             
                  end
         | 
| 34 38 | 
             
                end
         | 
| 35 39 |  | 
| @@ -49,7 +53,12 @@ module Slinky | |
| 49 53 |  | 
| 50 54 | 
             
                  EM::run {
         | 
| 51 55 | 
             
                    Slinky::Server.dir = @options[:src_dir]
         | 
| 52 | 
            -
                     | 
| 56 | 
            +
                    if @config && @config.proxies && !@options[:no_proxy]
         | 
| 57 | 
            +
                      server = EM::start_server "127.0.0.1", 5324, Slinky::Server
         | 
| 58 | 
            +
                      ProxyServer.run(@config.proxies, @options[:port], 5324)
         | 
| 59 | 
            +
                    else
         | 
| 60 | 
            +
                      EM::start_server "0.0.0.0", @options[:port], Slinky::Server
         | 
| 61 | 
            +
                    end
         | 
| 53 62 | 
             
                    puts "Started static file server on port #{@options[:port]}"
         | 
| 54 63 | 
             
                  }
         | 
| 55 64 | 
             
                end
         | 
    
        data/lib/slinky/server.rb
    CHANGED
    
    | @@ -34,7 +34,6 @@ module Slinky | |
| 34 34 | 
             
                  if File.exists?(path) && !File.directory?(path)
         | 
| 35 35 | 
             
                    size = File.size(path)
         | 
| 36 36 | 
             
                    _, _, extension = path.match(EXTENSION_REGEX).to_a
         | 
| 37 | 
            -
                    resp.content_type MIME::Types.type_for(path).first
         | 
| 38 37 | 
             
                    # File reading code from rack/file.rb
         | 
| 39 38 | 
             
                    File.open path do |file|
         | 
| 40 39 | 
             
                      resp.content = ""
         | 
| @@ -50,7 +49,7 @@ module Slinky | |
| 50 49 | 
             
                  end
         | 
| 51 50 | 
             
                end
         | 
| 52 51 |  | 
| 53 | 
            -
                # Returns the proper  | 
| 52 | 
            +
                # Returns the proper response for files that do not exist
         | 
| 54 53 | 
             
                def self.not_found resp
         | 
| 55 54 | 
             
                  resp.status = 404
         | 
| 56 55 | 
             
                  resp.content = "File not found"
         | 
| @@ -66,6 +65,7 @@ module Slinky | |
| 66 65 | 
             
                  if file.is_a? ManifestDir
         | 
| 67 66 | 
             
                    file = @manifest.find_by_path(path+"/index.html")
         | 
| 68 67 | 
             
                  end
         | 
| 68 | 
            +
                  resp.content_type MIME::Types.type_for(path).first
         | 
| 69 69 | 
             
                  Server.handle_file(resp, file).send_response
         | 
| 70 70 | 
             
                end
         | 
| 71 71 | 
             
              end
         | 
    
        data/lib/slinky.rb
    CHANGED
    
    | @@ -1,6 +1,9 @@ | |
| 1 1 | 
             
            ROOT = File.expand_path(File.dirname(__FILE__))
         | 
| 2 2 |  | 
| 3 | 
            +
            require 'uri'
         | 
| 4 | 
            +
            require 'yaml'
         | 
| 3 5 | 
             
            require 'eventmachine'
         | 
| 6 | 
            +
            require 'em-proxy'
         | 
| 4 7 | 
             
            require 'evma_httpserver'
         | 
| 5 8 | 
             
            require 'uri'
         | 
| 6 9 | 
             
            require 'tempfile'
         | 
| @@ -11,8 +14,10 @@ require 'yui/compressor' | |
| 11 14 |  | 
| 12 15 | 
             
            require "#{ROOT}/slinky/em-popen3"
         | 
| 13 16 | 
             
            require "#{ROOT}/slinky/compilers"
         | 
| 17 | 
            +
            require "#{ROOT}/slinky/config_reader"
         | 
| 14 18 | 
             
            require "#{ROOT}/slinky/manifest"
         | 
| 15 19 | 
             
            require "#{ROOT}/slinky/compiled_file"
         | 
| 20 | 
            +
            require "#{ROOT}/slinky/proxy_server"
         | 
| 16 21 | 
             
            require "#{ROOT}/slinky/server"
         | 
| 17 22 | 
             
            require "#{ROOT}/slinky/runner"
         | 
| 18 23 | 
             
            require "#{ROOT}/slinky/builder"
         | 
| @@ -27,3 +32,11 @@ Dir.glob("#{ROOT}/slinky/compilers/*.rb").each{|compiler| | |
| 27 32 | 
             
                puts "Failed to load #{compiler}: syntax error"
         | 
| 28 33 | 
             
              end
         | 
| 29 34 | 
             
            }
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            # Without this monkeypatch data uris in CSS cause compression to fail
         | 
| 37 | 
            +
            class YUI::Compressor
         | 
| 38 | 
            +
              def command
         | 
| 39 | 
            +
                @command.insert 1, "-Xss8m"
         | 
| 40 | 
            +
                @command.map { |word| Shellwords.escape(word) }.join(" ")
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
            end
         | 
    
        data/slinky.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{slinky}
         | 
| 8 | 
            -
              s.version = "0.4. | 
| 8 | 
            +
              s.version = "0.4.1"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["mwylde"]
         | 
| 12 | 
            -
              s.date = %q{2011-08- | 
| 12 | 
            +
              s.date = %q{2011-08-19}
         | 
| 13 13 | 
             
              s.default_executable = %q{slinky}
         | 
| 14 14 | 
             
              s.description = %q{A static file server for rich javascript apps that automatically compiles SASS, HAML, CoffeeScript and more}
         | 
| 15 15 | 
             
              s.email = %q{mwylde@wesleyan.edu}
         | 
    
        data/spec/slinky_spec.rb
    CHANGED
    
    | @@ -46,7 +46,7 @@ describe "Slinky" do | |
| 46 46 | 
             
                end
         | 
| 47 47 |  | 
| 48 48 | 
             
                it "should produce the correct scripts string for production" do
         | 
| 49 | 
            -
                  @mprod.scripts_string.should == '<script type="text/ | 
| 49 | 
            +
                  @mprod.scripts_string.should == '<script type="text/javascript" src="/scripts.js"></script>'
         | 
| 50 50 | 
             
                end
         | 
| 51 51 |  | 
| 52 52 | 
             
                it "should produce the correct scripts string for devel" do
         | 
| @@ -239,7 +239,6 @@ describe "Slinky" do | |
| 239 239 | 
             
                end
         | 
| 240 240 |  | 
| 241 241 | 
             
                it "should serve files" do
         | 
| 242 | 
            -
                  @resp.should_receive(:content_type).with(MIME::Types.type_for("/src/l1/test.js").first)
         | 
| 243 242 | 
             
                  Slinky::Server.serve_file @resp, "/src/l1/test.js"
         | 
| 244 243 | 
             
                  @resp.content.should == File.read("/src/l1/test.js")
         | 
| 245 244 | 
             
                end
         | 
| @@ -252,14 +251,12 @@ describe "Slinky" do | |
| 252 251 |  | 
| 253 252 | 
             
                it "should handle static files" do
         | 
| 254 253 | 
             
                  mf = Slinky::ManifestFile.new("/src/l1/l2/test.txt", nil, @mdevel)
         | 
| 255 | 
            -
                  @resp.should_receive(:content_type).with(MIME::Types.type_for("/src/l1/le/test.txt").first)
         | 
| 256 254 | 
             
                  Slinky::Server.handle_file @resp, mf
         | 
| 257 255 | 
             
                  @resp.content.should == File.read("/src/l1/l2/test.txt")
         | 
| 258 256 | 
             
                end
         | 
| 259 257 |  | 
| 260 258 | 
             
                it "should handle compiled files" do
         | 
| 261 259 | 
             
                  mf = Slinky::ManifestFile.new("/src/l1/test.sass", nil, @mdevel)
         | 
| 262 | 
            -
                  @resp.should_receive(:content_type).with(MIME::Types.type_for("test.css").first)
         | 
| 263 260 | 
             
                  $stdout.should_receive(:puts).with("Compiled /src/l1/test.sass".foreground(:green))
         | 
| 264 261 | 
             
                  Slinky::Server.handle_file @resp, mf
         | 
| 265 262 | 
             
                  @resp.content.should == Slinky::SassCompiler::compile(File.read("/src/l1/test.sass"), "")
         | 
    
        metadata
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            name: slinky
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 4 | 
             
              prerelease: 
         | 
| 5 | 
            -
              version: 0.4. | 
| 5 | 
            +
              version: 0.4.1
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors: 
         | 
| 8 8 | 
             
            - mwylde
         | 
| @@ -10,7 +10,7 @@ autorequire: | |
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 12 |  | 
| 13 | 
            -
            date: 2011-08- | 
| 13 | 
            +
            date: 2011-08-19 00:00:00 -07:00
         | 
| 14 14 | 
             
            default_executable: slinky
         | 
| 15 15 | 
             
            dependencies: 
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -225,7 +225,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 225 225 | 
             
              requirements: 
         | 
| 226 226 | 
             
              - - ">="
         | 
| 227 227 | 
             
                - !ruby/object:Gem::Version 
         | 
| 228 | 
            -
                  hash:  | 
| 228 | 
            +
                  hash: 1095209777694119011
         | 
| 229 229 | 
             
                  segments: 
         | 
| 230 230 | 
             
                  - 0
         | 
| 231 231 | 
             
                  version: "0"
         |