Renamed to Locomotive::Builder

Rodrigo Alvarez committed Dec 17, 2012
commit 52006deaea54315d2fdc0fbaf8dc230ce42aad64
Showing 24 changed files with 185 additions and 135 deletions
README.md +3 -3
@@ @@ -1,4 +1,4 @@
- # Steam
+ # Locomotive::Builder
TODO: Write a gem description
@@ @@ -6,7 +6,7 @@ TODO: Write a gem description
Add this line to your application's Gemfile:
- gem 'steam'
+ gem 'locomotive_builder'
And then execute:
@@ @@ -14,7 +14,7 @@ And then execute:
Or install it yourself as:
- $ gem install steam
+ $ gem install locomotive_builder
## Usage
bin/builder +5 -0
@@ @@ -0,0 +1,5 @@
+ #!/usr/bin/env ruby
+ require "locomotive/builder"
+ require "locomotive/builder/cli"
+
+ Locomotive::Builder::CLI.start
\ No newline at end of file
bin/steam +0 -5
@@ @@ -1,5 +0,0 @@
- #!/usr/bin/env ruby
- require "steam"
- require "steam/cli"
-
- Steam::CLI.start
\ No newline at end of file
locomotive/builder.rb b/lib/locomotive/builder.rb +13 -0
@@ @@ -0,0 +1,13 @@
+ require "locomotive/builder/version"
+ require "locomotive/mounter"
+
+ module Locomotive
+ module Builder
+ def self.import(name, site_url, email, password)
+ reader = Locomotive::Mounter::Reader::Api.instance
+ reader.run!(uri: "#{site_url.chomp('/')}/locomotive/api", email: email, password: password)
+ writer = Locomotive::Mounter::Writer::FileSystem.instance
+ writer.run!(mounting_point: reader.mounting_point, target_path: name)
+ end
+ end
+ end
\ No newline at end of file
locomotive/builder/cli.rb b/lib/locomotive/builder/cli.rb +23 -0
@@ @@ -0,0 +1,23 @@
+ require "thor"
+
+ module Locomotive
+ module Builder
+ class CLI < Thor
+
+ desc "import NAME SITE_URL EMAIL PASSWORD", "Import an existing locomotive site"
+ def import(name, site_url, email, password)
+ say("ERROR: \"#{name}\" directory already exists", :red) and return if File.exists?(name)
+ Locomotive::Builder.import(name, site_url, email, password)
+ end
+
+ desc "server PATH [PORT]", "Serve an existing site from the file system"
+ def server(path, port = 3333)
+ require "thin"
+ require "locomotive/builder/server"
+ reader = Locomotive::Mounter::Reader::FileSystem.instance
+ reader.run!(path: path)
+ Thin::Server.start('0.0.0.0', port, Locomotive::Builder::Server.new(reader))
+ end
+ end
+ end
+ end
\ No newline at end of file
locomotive/builder/server.rb b/lib/locomotive/builder/server.rb +21 -0
@@ @@ -0,0 +1,21 @@
+ require "locomotive/builder/server/middleware"
+ require "locomotive/builder/server/index"
+ require "locomotive/builder/server/not_found"
+
+ module Locomotive::Builder
+ class Server
+ def initialize(reader)
+ @reader = reader
+ @app = Rack::Builder.new do
+ use Rack::Lint
+ use Index
+ run NotFound.new
+ end
+ end
+
+ def call(env)
+ env["steam.mounting_point"] = @reader.mounting_point
+ @app.call(env)
+ end
+ end
+ end
\ No newline at end of file
locomotive/builder/server/index.rb b/lib/locomotive/builder/server/index.rb +13 -0
@@ @@ -0,0 +1,13 @@
+ module Locomotive::Builder
+ class Server
+ class Index < Middleware
+ def call(env)
+ if env['PATH_INFO'] == '/'
+ [404, {'Content-Type' => 'text/html'}, [env["steam.mounting_point"].pages["index"].source]]
+ else
+ super
+ end
+ end
+ end
+ end
+ end
\ No newline at end of file
locomotive/builder/server/middleware.rb b/lib/locomotive/builder/server/middleware.rb +15 -0
@@ @@ -0,0 +1,15 @@
+ module Locomotive::Builder
+ class Server
+ class Middleware
+ attr_accessor :app
+
+ def initialize(app)
+ @app = app
+ end
+
+ def call(env)
+ app.call(env)
+ end
+ end
+ end
+ end
\ No newline at end of file
locomotive/builder/server/not_found.rb b/lib/locomotive/builder/server/not_found.rb +9 -0
@@ @@ -0,0 +1,9 @@
+ module Locomotive::Builder
+ class Server
+ class NotFound
+ def call(env)
+ [404, {'Content-Type' => 'text/html'}, [env["steam.mounting_point"].pages["404"].source]]
+ end
+ end
+ end
+ end
\ No newline at end of file
locomotive/builder/version.rb b/lib/locomotive/builder/version.rb +5 -0
@@ @@ -0,0 +1,5 @@
+ module Locomotive
+ module Builder
+ VERSION = "0.0.1"
+ end
+ end
steam.rb b/lib/steam.rb +0 -11
@@ @@ -1,11 +0,0 @@
- require "steam/version"
- require "locomotive/mounter"
-
- module Steam
- def self.import(name, site_url, email, password)
- reader = Locomotive::Mounter::Reader::Api.instance
- reader.run!(uri: "#{site_url.chomp('/')}/locomotive/api", email: email, password: password)
- writer = Locomotive::Mounter::Writer::FileSystem.instance
- writer.run!(mounting_point: reader.mounting_point, target_path: name)
- end
- end
steam/cli.rb b/lib/steam/cli.rb +0 -21
@@ @@ -1,21 +0,0 @@
- require "thor"
-
- module Steam
- class CLI < Thor
-
- desc "import NAME SITE_URL EMAIL PASSWORD", "Import an existing locomotive site"
- def import(name, site_url, email, password)
- say("ERROR: \"#{name}\" directory already exists", :red) and return if File.exists?(name)
- Steam.import(name, site_url, email, password)
- end
-
- desc "server PATH [PORT]", "Serve an existing site from the file system"
- def server(path, port = 3333)
- require "thin"
- require "steam/server"
- reader = Locomotive::Mounter::Reader::FileSystem.instance
- reader.run!(path: path)
- Thin::Server.start('0.0.0.0', port, Steam::Server.new(reader))
- end
- end
- end
\ No newline at end of file
steam/server.rb b/lib/steam/server.rb +0 -21
@@ @@ -1,21 +0,0 @@
- require "steam/server/middleware"
- require "steam/server/index"
- require "steam/server/not_found"
-
- module Steam
- class Server
- def initialize(reader)
- @reader = reader
- @app = Rack::Builder.new do
- use Rack::Lint
- use Index
- run NotFound.new
- end
- end
-
- def call(env)
- env["steam.mounting_point"] = @reader.mounting_point
- @app.call(env)
- end
- end
- end
\ No newline at end of file
steam/server/index.rb b/lib/steam/server/index.rb +0 -13
@@ @@ -1,13 +0,0 @@
- module Steam
- class Server
- class Index < Middleware
- def call(env)
- if env['PATH_INFO'] == '/'
- [404, {'Content-Type' => 'text/html'}, [env["steam.mounting_point"].pages["index"].source]]
- else
- super
- end
- end
- end
- end
- end
\ No newline at end of file
steam/server/middleware.rb b/lib/steam/server/middleware.rb +0 -15
@@ @@ -1,15 +0,0 @@
- module Steam
- class Server
- class Middleware
- attr_accessor :app
-
- def initialize(app)
- @app = app
- end
-
- def call(env)
- app.call(env)
- end
- end
- end
- end
\ No newline at end of file
steam/server/not_found.rb b/lib/steam/server/not_found.rb +0 -9
@@ @@ -1,9 +0,0 @@
- module Steam
- class Server
- class NotFound
- def call(env)
- [404, {'Content-Type' => 'text/html'}, [env["steam.mounting_point"].pages["404"].source]]
- end
- end
- end
- end
\ No newline at end of file
steam/version.rb b/lib/steam/version.rb +0 -3
@@ @@ -1,3 +0,0 @@
- module Steam
- VERSION = "0.0.1"
- end
locomotivecms_builder.gemspec +28 -0
@@ @@ -0,0 +1,28 @@
+ # -*- encoding: utf-8 -*-
+ lib = File.expand_path('../lib', __FILE__)
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
+ require 'locomotive/builder/version'
+
+ Gem::Specification.new do |gem|
+ gem.name = "locomotivecms_builder"
+ gem.version = Locomotive::Builder::VERSION
+ gem.authors = ["Rodrigo Alvarez"]
+ gem.email = ["papipo@gmail.com"]
+ gem.description = %q{TODO: Write a gem description}
+ gem.summary = %q{TODO: Write a gem summary}
+ gem.homepage = ""
+
+ gem.files = `git ls-files`.split($/)
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
+ gem.require_paths = ["lib"]
+ gem.executables = ["builder"]
+
+ gem.add_dependency "thor"
+ gem.add_dependency "thin"
+ # gem.add_dependency "locomotivecms_mounter" # remove from Gemfile before adding it here
+ gem.add_development_dependency "rspec"
+ gem.add_development_dependency "vcr"
+ gem.add_development_dependency "fakeweb"
+ gem.add_development_dependency "rack-test"
+ end
spec/integration/cassettes/import.yml +44 -0
@@ @@ -328,4 +328,48 @@ http_interactions:
string: ! '{"token":"C3NNrE3RCZgGwiYoyJeQ"}'
http_version: '1.1'
recorded_at: Thu, 13 Dec 2012 17:49:07 GMT
+ - request:
+ method: get
+ uri: http://locomotive.engine.dev:3000/locomotive/api/pages.json?auth_token=C3NNrE3RCZgGwiYoyJeQ
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers: {}
+ response:
+ status:
+ code: 200
+ message: ! 'OK '
+ headers:
+ content-type:
+ - application/json; charset=utf-8
+ x-ua-compatible:
+ - IE=Edge
+ etag:
+ - ! '"409817111469d412c7934730dc8a5a3d"'
+ cache-control:
+ - max-age=0, private, must-revalidate
+ x-request-id:
+ - 2b48d7f47c49b4abc5fb70e3b61abbf0
+ x-runtime:
+ - '0.107125'
+ content-length:
+ - '1146'
+ server:
+ - WEBrick/1.3.1 (Ruby/1.9.3/2012-11-10)
+ date:
+ - Mon, 17 Dec 2012 08:22:07 GMT
+ connection:
+ - close
+ set-cookie:
+ - _dummy_session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRkkiJTc0OGNlYzRkODI4OWRlYjA1ZDgxYTc1OTE4MGI5ODM4BjsAVEkiJ3dhcmRlbi51c2VyLmxvY29tb3RpdmVfYWNjb3VudC5rZXkGOwBUWwhJIhhMb2NvbW90aXZlOjpBY2NvdW50BjsARlsGbzoTQlNPTjo6T2JqZWN0SWQGOgpAZGF0YVsRaVVpAclpAZ1pfWkByGkxaQHRaQBpAdNpAGkAaQhJIhlDcWlUSzJLRE5iQnlXWnVoYWJpTAY7AFQ%3D--764b326635f5102181499b4917a36250142c8a05;
+ domain=.engine.dev; path=/; HttpOnly
+ body:
+ encoding: US-ASCII
+ string: ! '[{"id":"50c99d81c82cd100d3000007","_id":"50c99d81c82cd100d3000007","created_at":"2012-12-13T10:18:58+01:00","updated_at":"2012-12-14T12:22:51+01:00","title":"Home
+ page","slug":"index","fullpath":"index","handle":null,"position":0,"raw_template":"Content
+ of the home page","published":true,"listed":true,"templatized":false,"templatized_from_parent":false,"target_klass_slug":null,"redirect":false,"redirect_url":null,"cache_strategy":"none","response_type":"text/html","template_changed":null,"editable_elements":[],"localized_fullpaths":{"en":""},"translated_in":["en"]},{"id":"50c99d82c82cd100d3000008","_id":"50c99d82c82cd100d3000008","created_at":"2012-12-13T10:18:58+01:00","updated_at":"2012-12-13T10:18:58+01:00","title":"Page
+ not found","slug":"404","fullpath":"404","handle":null,"position":1,"raw_template":"Content
+ of the 404 page","published":true,"listed":true,"templatized":false,"templatized_from_parent":false,"target_klass_slug":null,"redirect":false,"redirect_url":null,"cache_strategy":"none","response_type":"text/html","template_changed":null,"editable_elements":[],"localized_fullpaths":{"en":"404"},"translated_in":["en"]}]'
+ http_version: '1.1'
+ recorded_at: Mon, 17 Dec 2012 08:22:07 GMT
recorded_with: VCR 2.3.0
spec/integration/server_spec.rb +3 -3
@@ @@ -1,15 +1,15 @@
require File.dirname(__FILE__) + "/integration_helper"
- require "steam/server"
+ require "locomotive/builder/server"
require "rack/test"
- describe Steam::Server do
+ describe Locomotive::Builder::Server do
include Rack::Test::Methods
def app
import_site
reader = Locomotive::Mounter::Reader::FileSystem.instance
reader.run!(path: "site")
- Steam::Server.new(reader)
+ Locomotive::Builder::Server.new(reader)
end
it "shows the index page" do
spec/integration/sites_spec.rb +1 -1
@@ @@ -1,6 +1,6 @@
require File.dirname(__FILE__) + "/integration_helper"
- describe Steam do
+ describe Locomotive::Builder do
it "imports" do
File.exists?("site/config/site.yml").should be_false
import_site
spec/spec_helper.rb +1 -1
@@ @@ -1,4 +1,4 @@
- require "steam"
+ require "locomotive/builder"
require "rspec"
Dir["#{File.expand_path('../support', __FILE__)}/*.rb"].each do |file|
spec/support/helpers.rb +1 -1
@@ @@ -6,7 +6,7 @@ module Spec
def import_site
VCR.use_cassette('import') do
- Steam.import("site", "http://locomotive.engine.dev:3000", "admin@locomotivecms.com", "locomotive")
+ Locomotive::Builder.import("site", "http://locomotive.engine.dev:3000", "admin@locomotivecms.com", "locomotive")
end
end
end
steam.gemspec +0 -28
@@ @@ -1,28 +0,0 @@
- # -*- encoding: utf-8 -*-
- lib = File.expand_path('../lib', __FILE__)
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
- require 'steam/version'
-
- Gem::Specification.new do |gem|
- gem.name = "steam"
- gem.version = Steam::VERSION
- gem.authors = ["Rodrigo Alvarez"]
- gem.email = ["papipo@gmail.com"]
- gem.description = %q{TODO: Write a gem description}
- gem.summary = %q{TODO: Write a gem summary}
- gem.homepage = ""
-
- gem.files = `git ls-files`.split($/)
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
- gem.require_paths = ["lib"]
- gem.executables = ["steam"]
-
- gem.add_dependency "thor"
- gem.add_dependency "thin"
- # gem.add_dependency "locomotivecms_mounter" # remove from Gemfile before adding it here
- gem.add_development_dependency "rspec"
- gem.add_development_dependency "vcr"
- gem.add_development_dependency "fakeweb"
- gem.add_development_dependency "rack-test"
- end