dimples 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/dimples +4 -2
- data/lib/dimples.rb +12 -1
- data/lib/dimples/configuration.rb +3 -1
- data/lib/dimples/logger.rb +22 -0
- data/lib/dimples/site.rb +36 -8
- data/lib/dimples/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b735e5c1923e5031dcf45fcb806258bf9f54edcd
|
4
|
+
data.tar.gz: 8b82d836b87a8d3cab0a4c2c44b64bd37782670f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04b49469ca3ec690671015dcc885553be7d2f728f48b3a14da141e81f40b60cdf0441c423c3369608e2a6369b563a4a6be21942fdaeddf68fefc21f8e4e42ad3
|
7
|
+
data.tar.gz: 9fac79f506828681abb38006beb7efaaf1cf71554499c8670348a27327ef09e14b0ce3f9c87d9fe08e44986fafb5eba7e702cffa6457170885bc1d8395c1d507
|
data/bin/dimples
CHANGED
@@ -12,12 +12,13 @@ options = Trollop::options do
|
|
12
12
|
A very, very simple static site generator.
|
13
13
|
|
14
14
|
Usage:
|
15
|
-
dimples
|
15
|
+
dimples <#{valid_commands.join('|')}> [options]
|
16
16
|
|
17
17
|
Options:
|
18
18
|
EOS
|
19
19
|
opt :config, "Config file path", default: File.join('config', 'site.yml')
|
20
20
|
opt :lib, "Library file path", default: 'lib'
|
21
|
+
opt :verbose, "Verbose mode", default: false
|
21
22
|
end
|
22
23
|
|
23
24
|
Trollop::educate if ARGV.empty?
|
@@ -42,6 +43,8 @@ end
|
|
42
43
|
|
43
44
|
begin
|
44
45
|
config_hash = YAML.load_file(config_path)
|
46
|
+
config_hash['verbose_logging'] = true if options[:verbose]
|
47
|
+
|
45
48
|
config = Dimples::Configuration.new(config_hash)
|
46
49
|
rescue
|
47
50
|
Trollop::die "Invalid or malformed YAML config file"
|
@@ -52,6 +55,5 @@ site = site_klass.new(config)
|
|
52
55
|
|
53
56
|
case command.to_sym
|
54
57
|
when :build
|
55
|
-
puts "Generating site at #{site.output_paths[:site]}"
|
56
58
|
site.generate
|
57
59
|
end
|
data/lib/dimples.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
$LOAD_PATH.unshift(__dir__)
|
2
2
|
|
3
|
+
require 'benchmark'
|
3
4
|
require 'fileutils'
|
4
|
-
require '
|
5
|
+
require 'logger'
|
5
6
|
require 'tilt'
|
7
|
+
require 'yaml'
|
6
8
|
|
7
9
|
require 'dimples/errors'
|
10
|
+
require 'dimples/logger'
|
8
11
|
|
9
12
|
require 'dimples/frontable'
|
10
13
|
require 'dimples/writeable'
|
@@ -15,3 +18,11 @@ require 'dimples/page'
|
|
15
18
|
require 'dimples/post'
|
16
19
|
require 'dimples/site'
|
17
20
|
require 'dimples/template'
|
21
|
+
|
22
|
+
module Dimples
|
23
|
+
class << self
|
24
|
+
def logger
|
25
|
+
@logger ||= Dimples::Logger.new(STDOUT)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -27,6 +27,7 @@ module Dimples
|
|
27
27
|
{
|
28
28
|
'source_path' => current_path,
|
29
29
|
'destination_path' => File.join(current_path, 'site'),
|
30
|
+
'verbose_logging' => false,
|
30
31
|
'class_overrides' => { site: nil, post: nil, page: nil },
|
31
32
|
'rendering' => {},
|
32
33
|
'category_names' => {},
|
@@ -80,7 +81,8 @@ module Dimples
|
|
80
81
|
def self.default_file_extensions
|
81
82
|
{
|
82
83
|
'pages' => 'html',
|
83
|
-
'posts' => 'html'
|
84
|
+
'posts' => 'html',
|
85
|
+
'feeds' => 'atom'
|
84
86
|
}
|
85
87
|
end
|
86
88
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Dimples
|
2
|
+
class Logger < Logger
|
3
|
+
def initialize(*)
|
4
|
+
super
|
5
|
+
@formatter = LogFormatter
|
6
|
+
end
|
7
|
+
|
8
|
+
def debug_generation(type, count)
|
9
|
+
message = "Generating #{type} (#{count} item"
|
10
|
+
message += 's' if count != 1
|
11
|
+
message += ')...'
|
12
|
+
|
13
|
+
debug(message)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class LogFormatter < Logger::Formatter
|
18
|
+
def self.call(severity, time, program_name, message)
|
19
|
+
"#{time.strftime('%r')}: #{'- ' if severity == 'DEBUG'}#{message}\n"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/dimples/site.rb
CHANGED
@@ -43,16 +43,30 @@ module Dimples
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def generate
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
46
|
+
Dimples.logger.info("Building site at #{@output_paths[:site]}...")
|
47
|
+
|
48
|
+
result = Benchmark.measure do
|
49
|
+
prepare_output_directory
|
50
|
+
scan_files
|
51
|
+
generate_files
|
52
|
+
copy_assets
|
53
|
+
end
|
54
|
+
|
55
|
+
generation_time = result.real.round(2)
|
56
|
+
|
57
|
+
message = "Done! Site built in #{generation_time} second"
|
58
|
+
message += 's' if generation_time != 1
|
59
|
+
message += '.'
|
60
|
+
|
61
|
+
Dimples.logger.info(message)
|
50
62
|
rescue Errors::RenderingError => e
|
51
|
-
|
63
|
+
Dimples.logger.error("Failed to render #{e.file}: #{e.message}")
|
52
64
|
rescue Errors::PublishingError => e
|
53
|
-
|
65
|
+
Dimples.logger.error("Failed to publish #{e.file}: #{e.message}")
|
54
66
|
end
|
55
67
|
|
68
|
+
private
|
69
|
+
|
56
70
|
def prepare_output_directory
|
57
71
|
if Dir.exist?(@output_paths[:site])
|
58
72
|
FileUtils.remove_dir(@output_paths[:site])
|
@@ -148,6 +162,8 @@ module Dimples
|
|
148
162
|
end
|
149
163
|
|
150
164
|
def generate_posts
|
165
|
+
Dimples.logger.debug_generation('posts', @posts.length) if @config['verbose_logging']
|
166
|
+
|
151
167
|
@posts.each do |post|
|
152
168
|
generate_post(post)
|
153
169
|
end
|
@@ -165,6 +181,8 @@ module Dimples
|
|
165
181
|
end
|
166
182
|
|
167
183
|
def generate_pages
|
184
|
+
Dimples.logger.debug_generation('pages', @pages.length) if @config['verbose_logging']
|
185
|
+
|
168
186
|
@pages.each do |page|
|
169
187
|
generate_page(page)
|
170
188
|
end
|
@@ -175,6 +193,8 @@ module Dimples
|
|
175
193
|
end
|
176
194
|
|
177
195
|
def generate_categories
|
196
|
+
Dimples.logger.debug_generation('category pages', @categories.length) if @config['verbose_logging']
|
197
|
+
|
178
198
|
@categories.each do |slug, posts|
|
179
199
|
generate_category(slug, posts)
|
180
200
|
end
|
@@ -192,9 +212,15 @@ module Dimples
|
|
192
212
|
def generate_archives
|
193
213
|
%w(year month day).each do |date_type|
|
194
214
|
if @config['generation']["#{date_type}_archives"]
|
215
|
+
date_type_sym = date_type.to_sym
|
216
|
+
|
217
|
+
if @config['verbose_logging']
|
218
|
+
Dimples.logger.debug_generation("#{date_type} archives", @archives[date_type_sym].count)
|
219
|
+
end
|
220
|
+
|
195
221
|
layout = @config['layouts']["#{date_type}_archives"]
|
196
222
|
|
197
|
-
@archives[
|
223
|
+
@archives[date_type_sym].each_value do |posts|
|
198
224
|
title = posts[0].date.strftime(@config['date_formats'][date_type])
|
199
225
|
paths = [@output_paths[:archives], posts[0].year]
|
200
226
|
dates = { year: posts[0].year }
|
@@ -218,7 +244,7 @@ module Dimples
|
|
218
244
|
feed = @page_class.new(self)
|
219
245
|
|
220
246
|
feed.filename = 'feed'
|
221
|
-
feed.extension = '
|
247
|
+
feed.extension = @config['file_extensions']['feeds']
|
222
248
|
feed.layout = 'feed'
|
223
249
|
|
224
250
|
feed.write(feed.output_path(path), options)
|
@@ -240,6 +266,8 @@ module Dimples
|
|
240
266
|
|
241
267
|
def copy_assets
|
242
268
|
if Dir.exist?(@source_paths[:public])
|
269
|
+
Dimples.logger.debug("Copying assets...") if @config['verbose_logging']
|
270
|
+
|
243
271
|
path = File.join(@source_paths[:public], '.')
|
244
272
|
FileUtils.cp_r(path, @output_paths[:site])
|
245
273
|
end
|
data/lib/dimples/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dimples
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Bogan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tilt
|
@@ -121,6 +121,7 @@ files:
|
|
121
121
|
- lib/dimples/configuration.rb
|
122
122
|
- lib/dimples/errors.rb
|
123
123
|
- lib/dimples/frontable.rb
|
124
|
+
- lib/dimples/logger.rb
|
124
125
|
- lib/dimples/page.rb
|
125
126
|
- lib/dimples/post.rb
|
126
127
|
- lib/dimples/renderable.rb
|