dimples 2.0.0 → 2.0.1
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 +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
|