inert 0.3.0 → 0.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8de98e13138a538909b6d856ff7f4a4762d1a37223c75b6cfbe68b5f4bd46f5e
4
- data.tar.gz: 9100c98bbd9f506a34d6ca5ae01c2155d2d0242bb250eafb18b7480ebd8ea9e7
3
+ metadata.gz: 249dee2f97dfd03ef27c640fe86bbeb93df44d281b2de5d8ded5c42922b21761
4
+ data.tar.gz: d9459ba71fc85a5021c275267c8d12823783c0112573a1cc628051d1ea002311
5
5
  SHA512:
6
- metadata.gz: ca5acf9848a8bc84bfc1fb98d6f2ec21be80b5488f8640e033d9f42dd52d2bbe3fc2daaf95eee10368d91d3009c96461c898e60a4f9667270d9aca22c90e7ad7
7
- data.tar.gz: e3f092cf3c2cf05eaa97895de13292a4b43303cd818fc2fc4fdfb9a73052204ff91ea8ea482ba7b2f67411e841aa19bd4955557ae75099afdda0bf52e05422bb
6
+ metadata.gz: e439eddbee4a90c722670cdce5861b99cd873a8c10c5545c9c67eb84c26d37c03bc44d1511cdb2bf6a54455e66783d7be0cfc1bef50be15fe4f340ebfe83c8e7
7
+ data.tar.gz: 3f45d74a98b1d3ed566a4c116d083f5b76b0a9d92048d84520c1eaddef75b4f93a22ba858aa25fc83779863756caced4dcc8cfd64bb040bf10f89380fd76d760
data/exe/inert CHANGED
@@ -2,9 +2,7 @@
2
2
  require "inert/config"
3
3
 
4
4
  inertfile = File.join(Dir.pwd, "Inertfile")
5
- if File.exist?(inertfile)
6
- load inertfile
7
- end
5
+ Inert::Config.load(inertfile)
8
6
 
9
7
  require "inert"
10
8
  Inert::CLI.start
@@ -2,7 +2,7 @@
2
2
  require "roda"
3
3
 
4
4
  module Inert
5
- class Middleware < Roda
5
+ class App < Roda
6
6
  plugin :render,
7
7
  cache: Inert.building?,
8
8
  views: Inert.config.views
@@ -11,7 +11,15 @@ module Inert
11
11
  plugin :public, root: "static"
12
12
  plugin :content_for
13
13
 
14
- class_exec &Inert.config.app
14
+ if Inert.development?
15
+ plugin :common_logger
16
+ plugin :exception_page
17
+ plugin :error_handler do |e|
18
+ next exception_page(e)
19
+ end
20
+ end
21
+
22
+ class_exec(&Inert.config.app)
15
23
 
16
24
  route do |r|
17
25
  r.public
@@ -32,7 +40,7 @@ module Inert
32
40
  view(inline: page.body, layout: page.layout, template_class: Tilt[page.filename])
33
41
  end
34
42
 
35
- class_exec &Inert.config.helpers
43
+ class_exec(&Inert.config.helpers)
36
44
 
37
45
  def inline(file)
38
46
  File.read(File.join(Inert.view_path, file))
data/lib/inert/builder.rb CHANGED
@@ -1,19 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
  require "fileutils"
3
- require "set"
4
3
  require "oga"
5
4
  require "uri"
5
+ require "rack"
6
+ require_relative "history"
7
+ require_relative "logger"
6
8
 
7
9
  module Inert
8
10
  class Builder
9
- attr_accessor :app, :build_path
11
+ attr_accessor :app, :build_destination
10
12
  attr_reader :queue, :history
11
13
 
12
- def initialize(app)
14
+ attr_accessor :logger
15
+
16
+ def initialize(app, build_destination: "./build")
13
17
  @app = app
14
18
  @queue = []
15
- @history = Set.new
16
- @build_path = "./build"
19
+ @history = History.new
20
+ @build_destination = build_destination
21
+
22
+ Logger.configure(self)
17
23
  end
18
24
 
19
25
  def call(starting_url)
@@ -23,7 +29,7 @@ module Inert
23
29
  history.add(starting_url)
24
30
 
25
31
  while (url = queue.pop)
26
- next if already_visited?(url) || is_anchor?(url) || is_remote?(url)
32
+ next if history.include?(url) || is_anchor?(url) || is_remote?(url)
27
33
 
28
34
  save(url)
29
35
  history.add(url)
@@ -31,13 +37,13 @@ module Inert
31
37
  end
32
38
 
33
39
  def save(url)
34
- warn "Saving #{url}"
40
+ logger.info { "Saving #{url}" }
35
41
  request = Rack::MockRequest.new(app)
36
42
 
37
43
  dest = URI(url.dup).path
38
44
  dest << "index.html" if dest.end_with?("/")
39
45
  dest << ".html" unless dest =~ /\.\w+$/
40
- dest = File.expand_path(dest[1..-1], build_path)
46
+ dest = File.expand_path(dest[1..-1], build_destination)
41
47
 
42
48
  FileUtils.mkdir_p(File.dirname(dest))
43
49
 
@@ -64,11 +70,7 @@ module Inert
64
70
  end
65
71
 
66
72
  def copy_static
67
- FileUtils.cp_r(app.opts[:public_root]+"/.", build_path)
68
- end
69
-
70
- def already_visited?(url)
71
- history.include?(url)
73
+ FileUtils.cp_r(app.opts[:public_root]+"/.", build_destination)
72
74
  end
73
75
 
74
76
  def is_anchor?(url)
data/lib/inert/cli.rb CHANGED
@@ -8,7 +8,6 @@ module Inert
8
8
 
9
9
  desc "build", "Build site"
10
10
  def build
11
- ENV["RACK_ENV"] = "production"
12
11
  Inert.build
13
12
  end
14
13
 
@@ -17,7 +16,6 @@ module Inert
17
16
  method_option :bind, aliases: "-b", desc: "address to listen on", type: :string, default: "localhost"
18
17
  method_option :server, aliases: "-s", desc: "server to use", type: :string
19
18
  def server
20
- ENV["RACK_ENV"] = "development"
21
19
  Inert.start(server: options.server, host: options.bind, port: options.port)
22
20
  end
23
21
  end
data/lib/inert/config.rb CHANGED
@@ -56,10 +56,15 @@ module Inert
56
56
  return @routes unless block_given?
57
57
  @routes = block
58
58
  end
59
+
60
+ def self.load(filename)
61
+ if File.exist?(filename)
62
+ Kernel.load filename
63
+ end
64
+ end
59
65
  end
60
66
 
61
- module_function
62
- def config
67
+ def self.config
63
68
  @config ||= Config.new
64
69
  yield @config if block_given?
65
70
  @config
@@ -0,0 +1,18 @@
1
+ # frozen-string-literal: true
2
+
3
+ require "set"
4
+ require "forwardable"
5
+
6
+ module Inert
7
+ class History
8
+ extend Forwardable
9
+
10
+ def initialize
11
+ @entries = Set.new
12
+ end
13
+
14
+ def_delegator :@entries, :add
15
+ def_delegator :@entries, :include?
16
+ def_delegator :@entries, :length
17
+ end
18
+ end
@@ -0,0 +1,13 @@
1
+ # frozen-string-literal: true
2
+
3
+ require "logger"
4
+
5
+ module Inert
6
+ class Logger < ::Logger
7
+ def self.configure(receiver, attr_meth = :logger)
8
+ instance = new($stdout)
9
+ receiver.public_send("#{attr_meth}=", instance)
10
+ instance
11
+ end
12
+ end
13
+ end
data/lib/inert/page.rb CHANGED
@@ -21,6 +21,15 @@ module Inert
21
21
  raise Errno::ENOENT if filename.nil?
22
22
 
23
23
  body = File.read(filename)
24
+ body, frontmatter = extract_frontmatter(body)
25
+ new(body: body, frontmatter: frontmatter, filename: filename)
26
+ end
27
+
28
+ def self.find_file(filename)
29
+ Dir[filename + ".*"].first
30
+ end
31
+
32
+ def self.extract_frontmatter(body)
24
33
  frontmatter = {}
25
34
 
26
35
  body = body.gsub(/---(.*)---/m) do |m|
@@ -28,11 +37,7 @@ module Inert
28
37
  ""
29
38
  end.lstrip
30
39
 
31
- new(body: body, frontmatter: frontmatter, filename: filename)
32
- end
33
-
34
- def self.find_file(filename)
35
- Dir[filename + ".*"].first
40
+ [body, frontmatter]
36
41
  end
37
42
  end
38
43
  end
data/lib/inert/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Inert
2
- VERSION = "0.3.0".freeze
2
+ VERSION = "0.4.0".freeze
3
3
  end
data/lib/inert.rb CHANGED
@@ -7,25 +7,25 @@ module Inert
7
7
  module_function
8
8
 
9
9
  def start(server: nil, host: nil, port: nil)
10
- app = Rack::Builder.app do
11
- if Inert.development?
12
- use Rack::ShowExceptions
13
- use Rack::CommonLogger
14
- end
10
+ ENV["RACK_ENV"] = "development"
11
+ require_relative "inert/app"
15
12
 
16
- run Inert::Middleware
17
- end
13
+ require "rackup/server"
18
14
 
19
- Rack::Server.start({
20
- app: app,
15
+ Rackup::Server.start({
16
+ app: Inert::App,
21
17
  server: server,
22
- "Host": host,
23
- "Port": port
18
+ Host: host,
19
+ Port: port,
20
+ AccessLog: []
24
21
  })
25
22
  end
26
23
 
27
24
  def build
28
- Inert::Builder.new(Inert::Middleware).call("/")
25
+ ENV["RACK_ENV"] = "production"
26
+ require_relative "inert/app"
27
+
28
+ Inert::Builder.new(Inert::App).call("/")
29
29
  end
30
30
 
31
31
  def view_path
@@ -43,4 +43,3 @@ end
43
43
 
44
44
  require_relative "inert/page"
45
45
  require_relative "inert/builder"
46
- require_relative "inert/middleware"
metadata CHANGED
@@ -1,22 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inert
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Daniels
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2019-02-23 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: ostruct
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0.5'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0.5'
26
+ - !ruby/object:Gem::Dependency
27
+ name: logger
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '1.5'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '1.5'
40
+ - !ruby/object:Gem::Dependency
41
+ name: rack
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '3.0'
47
+ - - "<"
48
+ - !ruby/object:Gem::Version
49
+ version: '4.0'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '3.0'
57
+ - - "<"
58
+ - !ruby/object:Gem::Version
59
+ version: '4.0'
60
+ - !ruby/object:Gem::Dependency
61
+ name: rackup
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "<"
65
+ - !ruby/object:Gem::Version
66
+ version: '3.0'
67
+ type: :runtime
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "<"
72
+ - !ruby/object:Gem::Version
73
+ version: '3.0'
13
74
  - !ruby/object:Gem::Dependency
14
75
  name: roda
15
76
  requirement: !ruby/object:Gem::Requirement
16
77
  requirements:
17
78
  - - ">="
18
79
  - !ruby/object:Gem::Version
19
- version: '2.0'
80
+ version: '3.13'
20
81
  - - "<"
21
82
  - !ruby/object:Gem::Version
22
83
  version: '4.0'
@@ -26,7 +87,7 @@ dependencies:
26
87
  requirements:
27
88
  - - ">="
28
89
  - !ruby/object:Gem::Version
29
- version: '2.0'
90
+ version: '3.13'
30
91
  - - "<"
31
92
  - !ruby/object:Gem::Version
32
93
  version: '4.0'
@@ -54,16 +115,22 @@ dependencies:
54
115
  name: thor
55
116
  requirement: !ruby/object:Gem::Requirement
56
117
  requirements:
57
- - - "<"
118
+ - - ">="
58
119
  - !ruby/object:Gem::Version
59
120
  version: '1.0'
121
+ - - "<"
122
+ - !ruby/object:Gem::Version
123
+ version: '3.0'
60
124
  type: :runtime
61
125
  prerelease: false
62
126
  version_requirements: !ruby/object:Gem::Requirement
63
127
  requirements:
64
- - - "<"
128
+ - - ">="
65
129
  - !ruby/object:Gem::Version
66
130
  version: '1.0'
131
+ - - "<"
132
+ - !ruby/object:Gem::Version
133
+ version: '3.0'
67
134
  - !ruby/object:Gem::Dependency
68
135
  name: oga
69
136
  requirement: !ruby/object:Gem::Requirement
@@ -84,7 +151,26 @@ dependencies:
84
151
  - - "<"
85
152
  - !ruby/object:Gem::Version
86
153
  version: '4.0'
87
- description:
154
+ - !ruby/object:Gem::Dependency
155
+ name: webrick
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '1.8'
161
+ - - "<"
162
+ - !ruby/object:Gem::Version
163
+ version: '2.0'
164
+ type: :runtime
165
+ prerelease: false
166
+ version_requirements: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ version: '1.8'
171
+ - - "<"
172
+ - !ruby/object:Gem::Version
173
+ version: '2.0'
88
174
  email: adam@mediadrive.ca
89
175
  executables:
90
176
  - inert
@@ -94,17 +180,18 @@ files:
94
180
  - README.md
95
181
  - exe/inert
96
182
  - lib/inert.rb
183
+ - lib/inert/app.rb
97
184
  - lib/inert/builder.rb
98
185
  - lib/inert/cli.rb
99
186
  - lib/inert/config.rb
100
- - lib/inert/middleware.rb
187
+ - lib/inert/history.rb
188
+ - lib/inert/logger.rb
101
189
  - lib/inert/page.rb
102
190
  - lib/inert/version.rb
103
191
  homepage: https://github.com/adam12/inert
104
192
  licenses:
105
193
  - MIT
106
194
  metadata: {}
107
- post_install_message:
108
195
  rdoc_options: []
109
196
  require_paths:
110
197
  - lib
@@ -119,8 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
206
  - !ruby/object:Gem::Version
120
207
  version: '0'
121
208
  requirements: []
122
- rubygems_version: 3.0.1
123
- signing_key:
209
+ rubygems_version: 4.0.3
124
210
  specification_version: 4
125
211
  summary: An experimental static site builder with unambitious goals
126
212
  test_files: []