nanoc 3.7.3 → 3.7.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +71 -46
- data/NEWS.md +14 -0
- data/lib/nanoc.rb +1 -1
- data/lib/nanoc/base/checksummer.rb +1 -1
- data/lib/nanoc/base/compilation/checksum_store.rb +1 -1
- data/lib/nanoc/base/compilation/compiled_content_cache.rb +1 -1
- data/lib/nanoc/base/compilation/compiler.rb +11 -10
- data/lib/nanoc/base/compilation/compiler_dsl.rb +4 -4
- data/lib/nanoc/base/compilation/dependency_tracker.rb +7 -7
- data/lib/nanoc/base/compilation/filter.rb +1 -1
- data/lib/nanoc/base/compilation/item_rep_proxy.rb +6 -5
- data/lib/nanoc/base/compilation/item_rep_recorder_proxy.rb +8 -7
- data/lib/nanoc/base/compilation/outdatedness_checker.rb +6 -6
- data/lib/nanoc/base/compilation/rule.rb +1 -1
- data/lib/nanoc/base/compilation/rule_memory_store.rb +1 -1
- data/lib/nanoc/base/compilation/rules_collection.rb +5 -5
- data/lib/nanoc/base/context.rb +1 -1
- data/lib/nanoc/base/core_ext/array.rb +1 -1
- data/lib/nanoc/base/core_ext/date.rb +1 -1
- data/lib/nanoc/base/core_ext/hash.rb +1 -1
- data/lib/nanoc/base/directed_graph.rb +3 -3
- data/lib/nanoc/base/memoization.rb +1 -1
- data/lib/nanoc/base/notification_center.rb +1 -1
- data/lib/nanoc/base/ordered_hash.rb +1 -1
- data/lib/nanoc/base/plugin_registry.rb +3 -3
- data/lib/nanoc/base/result_data/item_rep.rb +13 -11
- data/lib/nanoc/base/source_data/code_snippet.rb +2 -2
- data/lib/nanoc/base/source_data/data_source.rb +3 -3
- data/lib/nanoc/base/source_data/item.rb +8 -8
- data/lib/nanoc/base/source_data/item_array.rb +1 -1
- data/lib/nanoc/base/source_data/layout.rb +1 -1
- data/lib/nanoc/base/source_data/site.rb +27 -18
- data/lib/nanoc/base/store.rb +3 -3
- data/lib/nanoc/base/temp_filename_factory.rb +2 -2
- data/lib/nanoc/cli.rb +6 -6
- data/lib/nanoc/cli/cleaning_stream.rb +1 -1
- data/lib/nanoc/cli/command_runner.rb +4 -3
- data/lib/nanoc/cli/commands/autocompile.rb +3 -3
- data/lib/nanoc/cli/commands/check.rb +3 -3
- data/lib/nanoc/cli/commands/compile.rb +23 -23
- data/lib/nanoc/cli/commands/create-item.rb +5 -5
- data/lib/nanoc/cli/commands/create-layout.rb +14 -14
- data/lib/nanoc/cli/commands/create-site.rb +6 -6
- data/lib/nanoc/cli/commands/deploy.rb +8 -8
- data/lib/nanoc/cli/commands/nanoc.rb +3 -3
- data/lib/nanoc/cli/commands/prune.rb +3 -3
- data/lib/nanoc/cli/commands/shell.rb +4 -4
- data/lib/nanoc/cli/commands/show-data.rb +5 -5
- data/lib/nanoc/cli/commands/show-plugins.rb +5 -5
- data/lib/nanoc/cli/commands/show-rules.rb +4 -4
- data/lib/nanoc/cli/commands/sync.rb +1 -1
- data/lib/nanoc/cli/commands/update.rb +13 -13
- data/lib/nanoc/cli/commands/validate-css.rb +3 -3
- data/lib/nanoc/cli/commands/validate-html.rb +3 -3
- data/lib/nanoc/cli/commands/validate-links.rb +6 -6
- data/lib/nanoc/cli/commands/view.rb +4 -4
- data/lib/nanoc/cli/commands/watch.rb +11 -11
- data/lib/nanoc/cli/error_handler.rb +10 -10
- data/lib/nanoc/cli/logger.rb +1 -1
- data/lib/nanoc/cli/stream_cleaners/abstract.rb +1 -1
- data/lib/nanoc/data_sources/deprecated/last_fm.rb +5 -5
- data/lib/nanoc/data_sources/deprecated/twitter.rb +1 -1
- data/lib/nanoc/data_sources/filesystem.rb +16 -16
- data/lib/nanoc/data_sources/filesystem_unified.rb +1 -1
- data/lib/nanoc/data_sources/filesystem_verbose.rb +1 -1
- data/lib/nanoc/data_sources/static.rb +1 -1
- data/lib/nanoc/extra/auto_compiler.rb +2 -2
- data/lib/nanoc/extra/checking/check.rb +11 -1
- data/lib/nanoc/extra/checking/checks/external_links.rb +15 -7
- data/lib/nanoc/extra/checking/checks/internal_links.rb +3 -3
- data/lib/nanoc/extra/checking/checks/stale.rb +6 -6
- data/lib/nanoc/extra/checking/runner.rb +10 -9
- data/lib/nanoc/extra/chick.rb +2 -2
- data/lib/nanoc/extra/core_ext/enumerable.rb +1 -1
- data/lib/nanoc/extra/deployers/fog.rb +2 -2
- data/lib/nanoc/extra/deployers/rsync.rb +3 -3
- data/lib/nanoc/extra/file_proxy.rb +3 -3
- data/lib/nanoc/extra/jruby_nokogiri_warner.rb +1 -1
- data/lib/nanoc/extra/link_collector.rb +3 -3
- data/lib/nanoc/extra/piper.rb +2 -2
- data/lib/nanoc/extra/pruner.rb +4 -3
- data/lib/nanoc/extra/validators/links.rb +2 -2
- data/lib/nanoc/extra/validators/w3c.rb +1 -1
- data/lib/nanoc/extra/vcs.rb +5 -5
- data/lib/nanoc/extra/vcses/dummy.rb +1 -1
- data/lib/nanoc/filters/asciidoc.rb +1 -1
- data/lib/nanoc/filters/bluecloth.rb +1 -1
- data/lib/nanoc/filters/coffeescript.rb +1 -1
- data/lib/nanoc/filters/colorize_syntax.rb +19 -21
- data/lib/nanoc/filters/erubis.rb +1 -1
- data/lib/nanoc/filters/handlebars.rb +1 -1
- data/lib/nanoc/filters/less.rb +2 -2
- data/lib/nanoc/filters/markaby.rb +1 -1
- data/lib/nanoc/filters/mustache.rb +1 -1
- data/lib/nanoc/filters/rdoc.rb +1 -1
- data/lib/nanoc/filters/relativize_paths.rb +5 -5
- data/lib/nanoc/filters/rubypants.rb +1 -1
- data/lib/nanoc/filters/sass/sass_filesystem_importer.rb +1 -1
- data/lib/nanoc/filters/typogruby.rb +1 -1
- data/lib/nanoc/filters/xsl.rb +1 -1
- data/lib/nanoc/helpers/blogging.rb +12 -12
- data/lib/nanoc/helpers/capturing.rb +3 -3
- data/lib/nanoc/helpers/html_escape.rb +6 -6
- data/lib/nanoc/helpers/tagging.rb +1 -1
- data/lib/nanoc/helpers/xml_sitemap.rb +4 -4
- data/lib/nanoc/tasks/clean.rake +1 -1
- data/lib/nanoc/tasks/clean.rb +1 -1
- data/lib/nanoc/tasks/deploy/rsync.rake +2 -2
- data/lib/nanoc/version.rb +1 -1
- data/tasks/rubocop.rake +1 -0
- data/test/base/core_ext/array_spec.rb +7 -7
- data/test/base/core_ext/hash_spec.rb +1 -1
- data/test/base/test_checksum_store.rb +1 -1
- data/test/base/test_compiler.rb +14 -14
- data/test/base/test_compiler_dsl.rb +13 -13
- data/test/base/test_context.rb +2 -2
- data/test/base/test_dependency_tracker.rb +42 -42
- data/test/base/test_directed_graph.rb +102 -102
- data/test/base/test_item.rb +21 -21
- data/test/base/test_item_array.rb +19 -19
- data/test/base/test_item_rep.rb +50 -50
- data/test/base/test_layout.rb +6 -6
- data/test/base/test_outdatedness_checker.rb +2 -2
- data/test/base/test_rule_context.rb +2 -2
- data/test/base/test_site.rb +5 -5
- data/test/cli/commands/test_compile.rb +7 -7
- data/test/cli/commands/test_create_site.rb +2 -2
- data/test/cli/commands/test_deploy.rb +10 -10
- data/test/cli/commands/test_prune.rb +2 -2
- data/test/cli/commands/test_sync.rb +1 -1
- data/test/cli/commands/test_watch.rb +7 -7
- data/test/cli/test_cleaning_stream.rb +4 -4
- data/test/cli/test_cli.rb +3 -3
- data/test/cli/test_error_handler.rb +3 -3
- data/test/data_sources/test_filesystem.rb +19 -19
- data/test/data_sources/test_filesystem_unified.rb +30 -30
- data/test/data_sources/test_filesystem_verbose.rb +3 -3
- data/test/data_sources/test_static.rb +9 -9
- data/test/extra/checking/checks/test_stale.rb +8 -8
- data/test/extra/checking/test_check.rb +11 -1
- data/test/extra/checking/test_dsl.rb +1 -1
- data/test/extra/core_ext/test_enumerable.rb +2 -2
- data/test/extra/deployers/test_fog.rb +10 -10
- data/test/extra/deployers/test_rsync.rb +2 -2
- data/test/extra/test_auto_compiler.rb +28 -28
- data/test/extra/test_filesystem_tools.rb +3 -3
- data/test/extra/test_link_collector.rb +39 -20
- data/test/extra/validators/test_w3c.rb +5 -5
- data/test/filters/test_asciidoc.rb +2 -2
- data/test/filters/test_bluecloth.rb +1 -1
- data/test/filters/test_coffeescript.rb +1 -1
- data/test/filters/test_colorize_syntax.rb +20 -13
- data/test/filters/test_erb.rb +1 -1
- data/test/filters/test_kramdown.rb +1 -1
- data/test/filters/test_less.rb +10 -10
- data/test/filters/test_markaby.rb +2 -2
- data/test/filters/test_maruku.rb +2 -2
- data/test/filters/test_pandoc.rb +3 -3
- data/test/filters/test_rainpress.rb +4 -4
- data/test/filters/test_rdiscount.rb +2 -2
- data/test/filters/test_rdoc.rb +1 -1
- data/test/filters/test_redcarpet.rb +5 -5
- data/test/filters/test_redcloth.rb +5 -5
- data/test/filters/test_relativize_paths.rb +33 -31
- data/test/filters/test_rubypants.rb +2 -2
- data/test/filters/test_sass.rb +8 -8
- data/test/filters/test_slim.rb +3 -3
- data/test/filters/test_uglify_js.rb +1 -1
- data/test/filters/test_yui_compressor.rb +3 -3
- data/test/gem_loader.rb +1 -1
- data/test/helper.rb +14 -16
- data/test/helpers/test_blogging.rb +28 -28
- data/test/helpers/test_breadcrumbs.rb +12 -12
- data/test/helpers/test_capturing.rb +7 -7
- data/test/helpers/test_filtering.rb +16 -16
- data/test/helpers/test_link_to.rb +3 -3
- data/test/helpers/test_rendering.rb +1 -1
- data/test/helpers/test_tagging.rb +11 -11
- data/test/helpers/test_xml_sitemap.rb +18 -18
- data/test/tasks/test_clean.rb +8 -8
- metadata +2 -2
@@ -35,10 +35,10 @@ module Nanoc
|
|
35
35
|
:text_extensions => %w( css erb haml htm html js less markdown md php rb sass scss txt xhtml xml coffee hb handlebars mustache ms slim ).sort,
|
36
36
|
:lib_dirs => %w( lib ),
|
37
37
|
:output_dir => 'output',
|
38
|
-
:data_sources => [
|
39
|
-
:index_filenames => [
|
38
|
+
:data_sources => [{}],
|
39
|
+
:index_filenames => ['index.html'],
|
40
40
|
:enable_output_diff => false,
|
41
|
-
:prune => { :auto_prune => false, :exclude => [
|
41
|
+
:prune => { :auto_prune => false, :exclude => ['.git', '.hg', '.svn', 'CVS'] }
|
42
42
|
}
|
43
43
|
|
44
44
|
# Creates a site object for the site specified by the given
|
@@ -189,14 +189,14 @@ module Nanoc
|
|
189
189
|
|
190
190
|
@items.each do |item|
|
191
191
|
parent_id_end = item.identifier.rindex('/', -2)
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
192
|
+
next unless parent_id_end
|
193
|
+
|
194
|
+
parent_id = item.identifier[0..parent_id_end]
|
195
|
+
parent = item_map[parent_id]
|
196
|
+
next unless parent
|
197
|
+
|
198
|
+
item.parent = parent
|
199
|
+
parent.children << item
|
200
200
|
end
|
201
201
|
end
|
202
202
|
|
@@ -224,7 +224,7 @@ module Nanoc
|
|
224
224
|
|
225
225
|
# @deprecated It is no longer necessary to explicitly load site data. It
|
226
226
|
# is safe to remove all {#load_data} calls.
|
227
|
-
def load_data(
|
227
|
+
def load_data(_force = false)
|
228
228
|
warn 'It is no longer necessary to call Nanoc::Site#load_data. This method no longer has any effect. All calls to this method can be safely removed.'
|
229
229
|
end
|
230
230
|
|
@@ -240,10 +240,10 @@ module Nanoc
|
|
240
240
|
|
241
241
|
# Load all data
|
242
242
|
load_code_snippets
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
243
|
+
with_datasources do
|
244
|
+
load_items
|
245
|
+
load_layouts
|
246
|
+
end
|
247
247
|
setup_child_parent_links
|
248
248
|
|
249
249
|
# Ensure unique
|
@@ -297,7 +297,16 @@ module Nanoc
|
|
297
297
|
filenames.find { |f| File.file?(f) }
|
298
298
|
end
|
299
299
|
|
300
|
-
|
300
|
+
private
|
301
|
+
|
302
|
+
# Executes the given block, making sure that the datasources are
|
303
|
+
# available for the duration of the block
|
304
|
+
def with_datasources(&block)
|
305
|
+
data_sources.each { |ds| ds.use }
|
306
|
+
yield
|
307
|
+
ensure
|
308
|
+
data_sources.each { |ds| ds.unuse }
|
309
|
+
end
|
301
310
|
|
302
311
|
# Loads this site’s code and executes it.
|
303
312
|
def load_code_snippets
|
@@ -365,7 +374,7 @@ module Nanoc
|
|
365
374
|
if parent_config_file
|
366
375
|
config.delete(:parent_config_file)
|
367
376
|
config_path = File.absolute_path(parent_config_file, File.dirname(config_paths.last))
|
368
|
-
|
377
|
+
unless File.file?(config_path)
|
369
378
|
raise Nanoc::Errors::GenericTrivial, "Could not find parent configuration file '#{parent_config_file}'"
|
370
379
|
end
|
371
380
|
if config_paths.include?(config_path)
|
data/lib/nanoc/base/store.rb
CHANGED
@@ -52,7 +52,7 @@ module Nanoc
|
|
52
52
|
# @abstract This method must be implemented by the subclass.
|
53
53
|
#
|
54
54
|
# @return [void]
|
55
|
-
def data=(
|
55
|
+
def data=(_new_data)
|
56
56
|
raise NotImplementedError.new('Nanoc::Store subclasses must implement #data and #data=')
|
57
57
|
end
|
58
58
|
|
@@ -67,7 +67,7 @@ module Nanoc
|
|
67
67
|
end
|
68
68
|
|
69
69
|
# Check file existance
|
70
|
-
|
70
|
+
unless File.file?(filename)
|
71
71
|
no_data_found
|
72
72
|
@loaded = true
|
73
73
|
return
|
@@ -129,7 +129,7 @@ module Nanoc
|
|
129
129
|
def version_mismatch_detected
|
130
130
|
end
|
131
131
|
|
132
|
-
|
132
|
+
private
|
133
133
|
|
134
134
|
def pstore
|
135
135
|
@pstore ||= PStore.new(filename)
|
@@ -42,13 +42,13 @@ module Nanoc
|
|
42
42
|
def cleanup(prefix)
|
43
43
|
path = File.join(@root_dir, prefix)
|
44
44
|
if File.exist?(path)
|
45
|
-
FileUtils.
|
45
|
+
FileUtils.rm_rf(path)
|
46
46
|
end
|
47
47
|
|
48
48
|
@counts.delete(prefix)
|
49
49
|
|
50
50
|
if @counts.empty? && File.directory?(@root_dir)
|
51
|
-
FileUtils.
|
51
|
+
FileUtils.rm_rf(@root_dir)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
data/lib/nanoc/cli.rb
CHANGED
@@ -79,10 +79,10 @@ module Nanoc::CLI
|
|
79
79
|
# @return [void]
|
80
80
|
def self.after_setup(&block)
|
81
81
|
# TODO decide what should happen if the CLI is already set up
|
82
|
-
|
82
|
+
add_after_setup_proc(block)
|
83
83
|
end
|
84
84
|
|
85
|
-
protected
|
85
|
+
protected
|
86
86
|
|
87
87
|
# Makes the commandline interface ready for use.
|
88
88
|
#
|
@@ -177,11 +177,11 @@ protected
|
|
177
177
|
def self.wrap_in_cleaning_stream(io)
|
178
178
|
cio = ::Nanoc::CLI::CleaningStream.new(io)
|
179
179
|
|
180
|
-
|
180
|
+
unless self.enable_utf8?(io)
|
181
181
|
cio.add_stream_cleaner(Nanoc::CLI::StreamCleaners::UTF8)
|
182
182
|
end
|
183
183
|
|
184
|
-
|
184
|
+
unless self.enable_ansi_colors?(io)
|
185
185
|
cio.add_stream_cleaner(Nanoc::CLI::StreamCleaners::ANSIColors)
|
186
186
|
end
|
187
187
|
|
@@ -198,14 +198,14 @@ protected
|
|
198
198
|
|
199
199
|
# @return [Boolean] true if UTF-8 support is present, false if not
|
200
200
|
def self.enable_utf8?(io)
|
201
|
-
return true
|
201
|
+
return true unless io.tty?
|
202
202
|
|
203
203
|
%w( LC_ALL LC_CTYPE LANG ).any? { |e| ENV[e] =~ /UTF/i }
|
204
204
|
end
|
205
205
|
|
206
206
|
# @return [Boolean] true if color support is present, false if not
|
207
207
|
def self.enable_ansi_colors?(io)
|
208
|
-
|
208
|
+
unless io.tty?
|
209
209
|
return false
|
210
210
|
end
|
211
211
|
|
@@ -38,9 +38,10 @@ module Nanoc::CLI
|
|
38
38
|
|
39
39
|
# @return [Boolean] true if the current working directory is a nanoc site
|
40
40
|
# directory, false otherwise
|
41
|
-
def
|
41
|
+
def in_site_dir?
|
42
42
|
Nanoc::Site.cwd_is_nanoc_site?
|
43
43
|
end
|
44
|
+
alias_method :is_in_site_dir?, :in_site_dir?
|
44
45
|
|
45
46
|
# Asserts that the current working directory contains a site
|
46
47
|
# ({Nanoc::Site} instance). If no site is present, prints an error
|
@@ -71,7 +72,7 @@ module Nanoc::CLI
|
|
71
72
|
Nanoc::CLI.debug?
|
72
73
|
end
|
73
74
|
|
74
|
-
|
75
|
+
protected
|
75
76
|
|
76
77
|
# Sets the data source's VCS to the VCS with the given name. Does nothing
|
77
78
|
# when the site's data source does not support VCSes (i.e. does not
|
@@ -92,7 +93,7 @@ module Nanoc::CLI
|
|
92
93
|
|
93
94
|
site.data_sources.each do |data_source|
|
94
95
|
# Skip if not possible
|
95
|
-
next
|
96
|
+
next unless data_source.respond_to?(:vcs=)
|
96
97
|
|
97
98
|
# Set VCS
|
98
99
|
data_source.vcs = vcs_class.new
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
usage
|
4
|
-
summary
|
3
|
+
usage 'autocompile [options]'
|
4
|
+
summary 'start the autocompiler'
|
5
5
|
be_hidden
|
6
|
-
aliases
|
6
|
+
aliases :aco
|
7
7
|
description <<-EOS
|
8
8
|
Start the autocompiler web server. Unless overridden with commandline options
|
9
9
|
or configuration entries, the web server will run on port 3000 and listen on all
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
usage
|
4
|
-
summary
|
3
|
+
usage 'check [options] [names]'
|
4
|
+
summary 'run issue checks'
|
5
5
|
description "
|
6
6
|
Run issue checks on the current site. If the `--all` option is passed, all available issue checks will be run. If the `--deploy` option is passed, the issue checks marked for deployment will be run.
|
7
7
|
"
|
@@ -39,7 +39,7 @@ module Nanoc::CLI::Commands
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
|
42
|
+
protected
|
43
43
|
|
44
44
|
def validate_options_and_arguments
|
45
45
|
if arguments.empty? && !options[:all] && !options[:deploy] && !options[:list]
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
usage
|
4
|
-
summary
|
3
|
+
usage 'compile [options]'
|
4
|
+
summary 'compile items of this site'
|
5
5
|
description <<-EOS
|
6
6
|
Compile all items of the current site.
|
7
7
|
|
@@ -33,7 +33,7 @@ module Nanoc::CLI::Commands
|
|
33
33
|
# @abstract Subclasses must override {#start} and may override {#stop}.
|
34
34
|
class Listener
|
35
35
|
|
36
|
-
def initialize(
|
36
|
+
def initialize(_params = {})
|
37
37
|
end
|
38
38
|
|
39
39
|
# @param [Nanoc::CLI::CommandRunner] command_runner The command runner for this listener
|
@@ -41,7 +41,7 @@ module Nanoc::CLI::Commands
|
|
41
41
|
# @return [Boolean] true if this listener should be enabled for the given command runner, false otherwise
|
42
42
|
#
|
43
43
|
# @abstract Returns `true` by default, but subclasses may override this.
|
44
|
-
def self.enable_for?(
|
44
|
+
def self.enable_for?(_command_runner)
|
45
45
|
true
|
46
46
|
end
|
47
47
|
|
@@ -79,8 +79,8 @@ module Nanoc::CLI::Commands
|
|
79
79
|
path = rep.raw_path(:snapshot => snapshot)
|
80
80
|
old_contents[rep] = File.file?(path) ? File.read(path) : nil
|
81
81
|
end
|
82
|
-
Nanoc::NotificationCenter.on(:rep_written) do |rep, path,
|
83
|
-
|
82
|
+
Nanoc::NotificationCenter.on(:rep_written) do |rep, path, _is_created, _is_modified|
|
83
|
+
unless rep.binary?
|
84
84
|
new_contents = File.file?(path) ? File.read(path) : nil
|
85
85
|
if old_contents[rep] && new_contents
|
86
86
|
generate_diff_for(rep, old_contents[rep], new_contents)
|
@@ -96,7 +96,7 @@ module Nanoc::CLI::Commands
|
|
96
96
|
teardown_diffs
|
97
97
|
end
|
98
98
|
|
99
|
-
|
99
|
+
protected
|
100
100
|
|
101
101
|
def setup_diffs
|
102
102
|
@diff_lock = Mutex.new
|
@@ -137,8 +137,8 @@ module Nanoc::CLI::Commands
|
|
137
137
|
new_file.flush
|
138
138
|
|
139
139
|
# Diff
|
140
|
-
cmd = [
|
141
|
-
Open3.popen3(*cmd) do |
|
140
|
+
cmd = ['diff', '-u', old_file.path, new_file.path]
|
141
|
+
Open3.popen3(*cmd) do |_stdin, stdout, _stderr|
|
142
142
|
result = stdout.read
|
143
143
|
return (result == '' ? nil : result)
|
144
144
|
end
|
@@ -169,11 +169,11 @@ module Nanoc::CLI::Commands
|
|
169
169
|
|
170
170
|
# @see Listener#start
|
171
171
|
def start
|
172
|
-
Nanoc::NotificationCenter.on(:filtering_started) do |
|
172
|
+
Nanoc::NotificationCenter.on(:filtering_started) do |_rep, filter_name|
|
173
173
|
@times[filter_name] ||= []
|
174
174
|
@times[filter_name] << { :start => Time.now }
|
175
175
|
end
|
176
|
-
Nanoc::NotificationCenter.on(:filtering_ended) do |
|
176
|
+
Nanoc::NotificationCenter.on(:filtering_ended) do |_rep, filter_name|
|
177
177
|
@times[filter_name].last[:stop] = Time.now
|
178
178
|
end
|
179
179
|
end
|
@@ -184,7 +184,7 @@ module Nanoc::CLI::Commands
|
|
184
184
|
super
|
185
185
|
end
|
186
186
|
|
187
|
-
|
187
|
+
protected
|
188
188
|
|
189
189
|
def print_profiling_feedback
|
190
190
|
# Get max filter length
|
@@ -194,7 +194,7 @@ module Nanoc::CLI::Commands
|
|
194
194
|
# Print warning if necessary
|
195
195
|
if @reps.any? { |r| !r.compiled? }
|
196
196
|
$stderr.puts
|
197
|
-
$stderr.puts 'Warning: profiling information may not be accurate because '
|
197
|
+
$stderr.puts 'Warning: profiling information may not be accurate because ' \
|
198
198
|
'some items were not compiled.'
|
199
199
|
end
|
200
200
|
|
@@ -260,17 +260,17 @@ module Nanoc::CLI::Commands
|
|
260
260
|
class GCController < Listener
|
261
261
|
|
262
262
|
# @see Listener#enable_for?
|
263
|
-
def self.enable_for?(
|
263
|
+
def self.enable_for?(_command_runner)
|
264
264
|
!ENV.key?('TRAVIS')
|
265
265
|
end
|
266
266
|
|
267
|
-
def initialize(
|
267
|
+
def initialize(_params = {})
|
268
268
|
@gc_count = 0
|
269
269
|
end
|
270
270
|
|
271
271
|
# @see Listener#start
|
272
272
|
def start
|
273
|
-
Nanoc::NotificationCenter.on(:compilation_started) do |
|
273
|
+
Nanoc::NotificationCenter.on(:compilation_started) do |_rep|
|
274
274
|
if @gc_count % 20 == 0
|
275
275
|
GC.enable
|
276
276
|
GC.start
|
@@ -345,7 +345,7 @@ module Nanoc::CLI::Commands
|
|
345
345
|
Nanoc::NotificationCenter.on(:compilation_started) do |rep|
|
346
346
|
@start_times[rep.raw_path] = Time.now
|
347
347
|
end
|
348
|
-
Nanoc::NotificationCenter.on(:rep_written) do |
|
348
|
+
Nanoc::NotificationCenter.on(:rep_written) do |_rep, path, is_created, is_modified|
|
349
349
|
duration = path && @start_times[path] ? Time.now - @start_times[path] : nil
|
350
350
|
action =
|
351
351
|
case
|
@@ -367,13 +367,13 @@ module Nanoc::CLI::Commands
|
|
367
367
|
def stop
|
368
368
|
super
|
369
369
|
@reps.select { |r| !r.compiled? }.each do |rep|
|
370
|
-
rep.raw_paths.each do |
|
370
|
+
rep.raw_paths.each do |_snapshot_name, raw_path|
|
371
371
|
log(:low, :skip, raw_path, nil)
|
372
372
|
end
|
373
373
|
end
|
374
374
|
end
|
375
375
|
|
376
|
-
|
376
|
+
private
|
377
377
|
|
378
378
|
def log(level, action, path, duration)
|
379
379
|
Nanoc::CLI::Logger.instance.file(level, action, path, duration)
|
@@ -403,7 +403,7 @@ module Nanoc::CLI::Commands
|
|
403
403
|
puts "Site compiled in #{format('%.2f', time_after - time_before)}s."
|
404
404
|
end
|
405
405
|
|
406
|
-
|
406
|
+
protected
|
407
407
|
|
408
408
|
def prune
|
409
409
|
if site.config[:prune][:auto_prune]
|
@@ -422,9 +422,9 @@ module Nanoc::CLI::Commands
|
|
422
422
|
end
|
423
423
|
|
424
424
|
def setup_listeners
|
425
|
-
@listeners = @listener_classes
|
426
|
-
select { |klass| klass.enable_for?(self) }
|
427
|
-
map { |klass| klass.new(:reps => reps) }
|
425
|
+
@listeners = @listener_classes
|
426
|
+
.select { |klass| klass.enable_for?(self) }
|
427
|
+
.map { |klass| klass.new(:reps => reps) }
|
428
428
|
|
429
429
|
@listeners.each { |s| s.start }
|
430
430
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
usage
|
4
|
-
aliases
|
5
|
-
summary
|
3
|
+
usage 'create-item [options] identifier'
|
4
|
+
aliases :create_item, :ci
|
5
|
+
summary 'create an item'
|
6
6
|
description <<-EOS
|
7
7
|
Create a new item in the current site. The first data source in the site
|
8
8
|
configuration will be used.
|
@@ -30,9 +30,9 @@ module Nanoc::CLI::Commands
|
|
30
30
|
set_vcs(options[:vcs])
|
31
31
|
|
32
32
|
# Check whether item is unique
|
33
|
-
|
33
|
+
unless site.items.find { |i| i.identifier == identifier }.nil?
|
34
34
|
raise Nanoc::Errors::GenericTrivial,
|
35
|
-
"An item already exists at #{identifier}. Please "
|
35
|
+
"An item already exists at #{identifier}. Please " \
|
36
36
|
'pick a unique name for the item you are creating.'
|
37
37
|
end
|
38
38
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
usage
|
4
|
-
aliases
|
5
|
-
summary
|
3
|
+
usage 'create-layout [options] identifier'
|
4
|
+
aliases :create_layout, :cl
|
5
|
+
summary 'create a layout'
|
6
6
|
description <<-EOS
|
7
7
|
Create a new layout in the current site. The first data source in the site
|
8
8
|
configuration will be used.
|
@@ -28,16 +28,16 @@ module Nanoc::CLI::Commands
|
|
28
28
|
set_vcs(options[:vcs])
|
29
29
|
|
30
30
|
# Check whether layout is unique
|
31
|
-
|
31
|
+
unless site.layouts.find { |l| l.identifier == identifier }.nil?
|
32
32
|
raise Nanoc::Errors::GenericTrivial,
|
33
|
-
"A layout already exists at #{identifier}. Please "
|
33
|
+
"A layout already exists at #{identifier}. Please " \
|
34
34
|
'pick a unique name for the layout you are creating.'
|
35
35
|
end
|
36
36
|
|
37
37
|
# Check whether layout is not at /
|
38
38
|
if identifier == '/'
|
39
39
|
raise Nanoc::Errors::GenericTrivial,
|
40
|
-
"There cannot be a layout with the identifier '/'; "
|
40
|
+
"There cannot be a layout with the identifier '/'; " \
|
41
41
|
'please pick a different identifier for this layout.'
|
42
42
|
end
|
43
43
|
|
@@ -49,14 +49,14 @@ module Nanoc::CLI::Commands
|
|
49
49
|
# Create layout
|
50
50
|
data_source = site.data_sources[0]
|
51
51
|
data_source.create_layout(
|
52
|
-
"<html>\n"
|
53
|
-
" <head>\n"
|
54
|
-
" <title><%= @item[:title] %></title>\n"
|
55
|
-
" </head>\n"
|
56
|
-
" <body>\n"
|
57
|
-
" <p>Hi, I'm a new layout. Please customize me!</p>\n"
|
58
|
-
"<%= yield %>\n"
|
59
|
-
" </body>\n"
|
52
|
+
"<html>\n" \
|
53
|
+
" <head>\n" \
|
54
|
+
" <title><%= @item[:title] %></title>\n" \
|
55
|
+
" </head>\n" \
|
56
|
+
" <body>\n" \
|
57
|
+
" <p>Hi, I'm a new layout. Please customize me!</p>\n" \
|
58
|
+
"<%= yield %>\n" \
|
59
|
+
" </body>\n" \
|
60
60
|
"</html>\n",
|
61
61
|
{},
|
62
62
|
identifier
|