usmu 0.3.4-java → 0.4.0-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fd837a0bd2268a8c59adea7a23b73a98bcc63cc6
4
- data.tar.gz: dcd4850e8638d73f485fd9201d7f7041bcf85be5
3
+ metadata.gz: 736e52d9dd2dbf1b4887ebfcf2b18e87c0cd3fc5
4
+ data.tar.gz: 95c4b21ba16f9a240449c9e17a0aeb28985390cf
5
5
  SHA512:
6
- metadata.gz: dc9b2c0be7428ba30b892db0321fa80763016e5e6d7b18633048ca12f83959ade1193f2382b0eecf2880241993744a57428335afe5083fa3f14b91179533df25
7
- data.tar.gz: ee271e9654c2ade75d048def639c71e98b722ab8221eed83a9e8509832489fe8193958126b5d2e4417246217c83596f3e17e09692b8b4cc5330a99d618f27e7d
6
+ metadata.gz: ecf996f522a04839ff079909e0b92240ffe7519ab242995164247712cc667f50c97f6c416266743452f700971258c7621bc24513a64f8660094d726563ff8553
7
+ data.tar.gz: a71ee92f2fb6c51be007df21de215819430a7a2987ccad1388460d394273e8e7808a5c6f89f883df480fa2e55338c8805665734f0d2c9f8982d6405648e97201
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Usmu Change Log
2
2
 
3
+ ## 0.4.0
4
+
5
+ Matthew Scharley <matt.scharley@gmail.com>
6
+
7
+ * Bump to 0.4.0.dev for further dev (32596fe063dfb0452098b0bcac7d97f57ee772a5)
8
+ * Ensure that loggers have the right functions available (df1c685c9ee7f3e4070351700d0ec28d999bc345)
9
+ * [#25] Include a Rack app for viewing site dynamically (964486386bfa6325f191a44be0eb301ce5d200be)
10
+
3
11
  ## 0.3.4
4
12
 
5
13
  Matthew Scharley <matt.scharley@gmail.com>
data/lib/usmu.rb CHANGED
@@ -70,6 +70,18 @@ module Usmu
70
70
  def self.plugins
71
71
  @plugins ||= Usmu::Plugin.new
72
72
  end
73
+
74
+ def self.load_lazy_tilt_modules
75
+ # There be magic here. Not nice, but gets the job done. Tilt's data structure here is a little unusual.
76
+ Tilt.default_mapping.lazy_map.map {|pair| pair[1]}.map {|i| i.map {|j| j[1]}}.flatten.uniq.each do |f|
77
+ begin
78
+ require f
79
+ @log.debug("Loaded #{f}")
80
+ rescue LoadError => e
81
+ @log.debug("Failed to load #{f}: #{e.inspect}")
82
+ end
83
+ end
84
+ end
73
85
  end
74
86
 
75
87
  %W{
@@ -28,6 +28,12 @@ module Usmu
28
28
  command.description = 'Initialise a new website in the given path, or the current directory if none given.'
29
29
  command.action &method(:command_init)
30
30
  end
31
+
32
+ c.command(:serve) do |command|
33
+ command.syntax = 'usmu server'
34
+ command.description = 'Serve files processed files directly. This won\'t update files on disk, but you will be able to view your website as rendered.'
35
+ command.action &method(:command_serve)
36
+ end
31
37
  end
32
38
 
33
39
  # Command to generate a website.
@@ -59,6 +65,17 @@ module Usmu
59
65
  Dir["#{from}/**/{*,.??*}"].each {|f| init_copy_file(from, path, f) }
60
66
  end
61
67
 
68
+ def command_serve(args, options)
69
+ configuration = @ui.configuration
70
+ @log.info('Starting webserver...')
71
+ require 'rack'
72
+ require 'usmu/ui/rack_server'
73
+
74
+ Rack::Handler::WEBrick.run Ui::RackServer.new(configuration),
75
+ host: configuration['serve', 'host', default: '0.0.0.0'],
76
+ port: configuration['serve', 'port', default: 8080]
77
+ end
78
+
62
79
  private
63
80
 
64
81
  # Helper to copy a file.
@@ -21,6 +21,7 @@ module Usmu
21
21
  def initialize(args)
22
22
  @log = Logging.logger[self]
23
23
  initialize_logging args
24
+ Usmu.load_lazy_tilt_modules
24
25
  @commander = initialize_commander(args)
25
26
 
26
27
  Usmu.plugins.load_plugins
@@ -0,0 +1,41 @@
1
+
2
+ module Usmu
3
+ module Ui
4
+ class RackServer
5
+ def initialize(configuration)
6
+ @log = Logging.logger[self]
7
+ @generator = SiteGenerator.new(configuration)
8
+ @configuration = configuration
9
+ @index = configuration['serve', 'index', default: 'index.html']
10
+ end
11
+
12
+ def call(env)
13
+ path = env['PATH_INFO'][1...env['PATH_INFO'].length]
14
+ @log.info "Received a request for: #{path}"
15
+ path = File.join(path, @index) if File.directory? File.join(@configuration.source_path, path)
16
+ path = path[1...path.length] if path[0] == '/'
17
+ @log.info "Serving: #{path}"
18
+
19
+ valid = @generator.renderables.select {|r| r.output_filename == path }
20
+
21
+ if valid.length > 0
22
+ page = valid[0]
23
+ type = case page.output_filename[page.output_filename.rindex('.')...page.output_filename.length]
24
+ when '.html', '.php'
25
+ 'text/html'
26
+ when '.css'
27
+ 'text/css'
28
+ when '.js'
29
+ 'text/javascript'
30
+ else
31
+ 'text/plain'
32
+ end
33
+
34
+ ['200', {'Content-Type' => type}, [page.render]]
35
+ else
36
+ ['404', {'Content-Type' => 'text/html'}, ['<!DOCTYPE html><h1>File not found.</h1>']]
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
data/lib/usmu/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
2
  module Usmu
3
3
  # The current version string for the gem
4
- VERSION = '0.3.4'
4
+ VERSION = '0.4.0'
5
5
  end
data/spec/spec_helper.rb CHANGED
@@ -8,6 +8,8 @@ require 'logging'
8
8
  require 'rspec/logging_helper'
9
9
  require 'timeout'
10
10
 
11
+ Logging.init :debug, :info, :success, :warn, :error, :fatal
12
+
11
13
  # This file was generated by the `rspec --init` command. Conventionally, all
12
14
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
13
15
  # The generated `.rspec` file contains `--require spec_helper` which will cause this
data/usmu.gemspec CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.add_dependency 'slim', '~> 3.0'
27
27
  spec.add_dependency 'tilt', '~> 2.0'
28
+ spec.add_dependency 'rack', '~> 1.6'
28
29
  spec.add_dependency 'deep_merge', '~> 1.0'
29
30
  spec.add_dependency 'commander', '~> 4.2'
30
31
  spec.add_dependency 'logging', '~> 1.8'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usmu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.4.0
5
5
  platform: java
6
6
  authors:
7
7
  - Matthew Scharley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-17 00:00:00.000000000 Z
11
+ date: 2015-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slim
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rack
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.6'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.6'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: deep_merge
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -259,6 +273,7 @@ files:
259
273
  - lib/usmu/template/static_file.rb
260
274
  - lib/usmu/ui.rb
261
275
  - lib/usmu/ui/console.rb
276
+ - lib/usmu/ui/rack_server.rb
262
277
  - lib/usmu/version.rb
263
278
  - share/init-site/.gitignore
264
279
  - share/init-site/Gemfile