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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2f30fbd75e775cf280a833ceb82d300e49a50d9a
4
- data.tar.gz: afe74aa069759f960a01dc4aac48ceb562123964
3
+ metadata.gz: b735e5c1923e5031dcf45fcb806258bf9f54edcd
4
+ data.tar.gz: 8b82d836b87a8d3cab0a4c2c44b64bd37782670f
5
5
  SHA512:
6
- metadata.gz: 70a4771af0e75ee3fa7cca7eaaded26f5a3fe22869dc76e5d58e6310f47838d8db3f2d8437fd44ba56ec0c41a466d9a4a7af9d43979366d7263fd97831e9a83a
7
- data.tar.gz: dfdfebedfb6e403a86f58d6cd3b76d47a55933ac6579318b480de6a1f1eca46577fcaf16d3c13ded38283cc9a5594d253456c11ea91cd109ea736fa43dda1e0d
6
+ metadata.gz: 04b49469ca3ec690671015dcc885553be7d2f728f48b3a14da141e81f40b60cdf0441c423c3369608e2a6369b563a4a6be21942fdaeddf68fefc21f8e4e42ad3
7
+ data.tar.gz: 9fac79f506828681abb38006beb7efaaf1cf71554499c8670348a27327ef09e14b0ce3f9c87d9fe08e44986fafb5eba7e702cffa6457170885bc1d8395c1d507
@@ -12,12 +12,13 @@ options = Trollop::options do
12
12
  A very, very simple static site generator.
13
13
 
14
14
  Usage:
15
- dimples [#{valid_commands.join('|')}] [options]
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
@@ -1,10 +1,13 @@
1
1
  $LOAD_PATH.unshift(__dir__)
2
2
 
3
+ require 'benchmark'
3
4
  require 'fileutils'
4
- require 'yaml'
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
@@ -43,16 +43,30 @@ module Dimples
43
43
  end
44
44
 
45
45
  def generate
46
- prepare_output_directory
47
- scan_files
48
- generate_files
49
- copy_assets
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
- puts "Error: Failed to render #{e.file}: #{e.message}"
63
+ Dimples.logger.error("Failed to render #{e.file}: #{e.message}")
52
64
  rescue Errors::PublishingError => e
53
- puts "Error: Failed to publish #{e.file}: #{e.message}"
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[date_type.to_sym].each_value do |posts|
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 = 'atom'
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
@@ -1,3 +1,3 @@
1
1
  module Dimples
2
- VERSION = '2.0.0'.freeze
2
+ VERSION = '2.0.1'.freeze
3
3
  end
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.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-21 00:00:00.000000000 Z
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