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 |