nanoc 3.7.4 → 3.7.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +19 -18
- data/LICENSE +1 -1
- data/NEWS.md +14 -0
- data/Rakefile +1 -1
- data/doc/yardoc_handlers/identifier.rb +1 -5
- data/lib/nanoc.rb +1 -3
- data/lib/nanoc/base.rb +1 -4
- data/lib/nanoc/base/checksummer.rb +10 -12
- data/lib/nanoc/base/compilation/checksum_store.rb +0 -4
- data/lib/nanoc/base/compilation/compiled_content_cache.rb +0 -4
- data/lib/nanoc/base/compilation/compiler.rb +27 -31
- data/lib/nanoc/base/compilation/compiler_dsl.rb +3 -7
- data/lib/nanoc/base/compilation/dependency_tracker.rb +2 -6
- data/lib/nanoc/base/compilation/filter.rb +1 -7
- data/lib/nanoc/base/compilation/item_rep_proxy.rb +0 -4
- data/lib/nanoc/base/compilation/item_rep_recorder_proxy.rb +0 -4
- data/lib/nanoc/base/compilation/outdatedness_checker.rb +0 -4
- data/lib/nanoc/base/compilation/outdatedness_reasons.rb +0 -6
- data/lib/nanoc/base/compilation/rule.rb +1 -5
- data/lib/nanoc/base/compilation/rule_context.rb +7 -11
- data/lib/nanoc/base/compilation/rule_memory_calculator.rb +0 -4
- data/lib/nanoc/base/compilation/rule_memory_store.rb +0 -4
- data/lib/nanoc/base/compilation/rules_collection.rb +5 -9
- data/lib/nanoc/base/context.rb +0 -3
- data/lib/nanoc/base/core_ext.rb +0 -1
- data/lib/nanoc/base/core_ext/array.rb +0 -2
- data/lib/nanoc/base/core_ext/hash.rb +0 -2
- data/lib/nanoc/base/core_ext/pathname.rb +0 -2
- data/lib/nanoc/base/core_ext/string.rb +0 -2
- data/lib/nanoc/base/directed_graph.rb +0 -4
- data/lib/nanoc/base/errors.rb +1 -39
- data/lib/nanoc/base/memoization.rb +0 -4
- data/lib/nanoc/base/notification_center.rb +1 -7
- data/lib/nanoc/base/plugin_registry.rb +4 -10
- data/lib/nanoc/base/result_data/item_rep.rb +8 -16
- data/lib/nanoc/base/source_data/code_snippet.rb +1 -5
- data/lib/nanoc/base/source_data/configuration.rb +0 -4
- data/lib/nanoc/base/source_data/data_source.rb +2 -5
- data/lib/nanoc/base/source_data/item.rb +3 -7
- data/lib/nanoc/base/source_data/item_array.rb +1 -5
- data/lib/nanoc/base/source_data/layout.rb +2 -6
- data/lib/nanoc/base/source_data/site.rb +20 -23
- data/lib/nanoc/base/store.rb +1 -5
- data/lib/nanoc/base/temp_filename_factory.rb +0 -4
- data/lib/nanoc/cli.rb +3 -5
- data/lib/nanoc/cli/ansi_string_colorizer.rb +6 -10
- data/lib/nanoc/cli/cleaning_stream.rb +2 -6
- data/lib/nanoc/cli/command_runner.rb +1 -5
- data/lib/nanoc/cli/commands/autocompile.rb +2 -6
- data/lib/nanoc/cli/commands/check.rb +0 -4
- data/lib/nanoc/cli/commands/compile.rb +12 -27
- data/lib/nanoc/cli/commands/create-item.rb +1 -5
- data/lib/nanoc/cli/commands/create-layout.rb +0 -4
- data/lib/nanoc/cli/commands/create-site.rb +2 -8
- data/lib/nanoc/cli/commands/deploy.rb +3 -7
- data/lib/nanoc/cli/commands/prune.rb +2 -6
- data/lib/nanoc/cli/commands/shell.rb +4 -8
- data/lib/nanoc/cli/commands/show-data.rb +3 -7
- data/lib/nanoc/cli/commands/show-plugins.rb +3 -7
- data/lib/nanoc/cli/commands/show-rules.rb +11 -15
- data/lib/nanoc/cli/commands/sync.rb +0 -4
- data/lib/nanoc/cli/commands/update.rb +1 -7
- data/lib/nanoc/cli/commands/validate-css.rb +0 -4
- data/lib/nanoc/cli/commands/validate-html.rb +0 -4
- data/lib/nanoc/cli/commands/validate-links.rb +0 -4
- data/lib/nanoc/cli/commands/view.rb +3 -7
- data/lib/nanoc/cli/commands/watch.rb +4 -10
- data/lib/nanoc/cli/error_handler.rb +9 -13
- data/lib/nanoc/cli/logger.rb +8 -12
- data/lib/nanoc/cli/stream_cleaners.rb +0 -4
- data/lib/nanoc/cli/stream_cleaners/abstract.rb +1 -5
- data/lib/nanoc/cli/stream_cleaners/ansi_colors.rb +0 -4
- data/lib/nanoc/cli/stream_cleaners/utf8.rb +1 -5
- data/lib/nanoc/data_sources.rb +2 -4
- data/lib/nanoc/data_sources/deprecated/delicious.rb +6 -10
- data/lib/nanoc/data_sources/deprecated/last_fm.rb +7 -11
- data/lib/nanoc/data_sources/deprecated/twitter.rb +2 -6
- data/lib/nanoc/data_sources/filesystem.rb +10 -13
- data/lib/nanoc/data_sources/filesystem_unified.rb +0 -4
- data/lib/nanoc/data_sources/filesystem_verbose.rb +0 -4
- data/lib/nanoc/data_sources/static.rb +4 -8
- data/lib/nanoc/extra.rb +2 -4
- data/lib/nanoc/extra/auto_compiler.rb +2 -6
- data/lib/nanoc/extra/checking.rb +0 -4
- data/lib/nanoc/extra/checking/check.rb +0 -4
- data/lib/nanoc/extra/checking/checks.rb +0 -2
- data/lib/nanoc/extra/checking/checks/css.rb +6 -6
- data/lib/nanoc/extra/checking/checks/external_links.rb +3 -11
- data/lib/nanoc/extra/checking/checks/html.rb +6 -6
- data/lib/nanoc/extra/checking/checks/internal_links.rb +3 -7
- data/lib/nanoc/extra/checking/checks/stale.rb +3 -7
- data/lib/nanoc/extra/checking/dsl.rb +0 -4
- data/lib/nanoc/extra/checking/issue.rb +0 -4
- data/lib/nanoc/extra/checking/runner.rb +4 -7
- data/lib/nanoc/extra/chick.rb +7 -17
- data/lib/nanoc/extra/core_ext.rb +0 -1
- data/lib/nanoc/extra/core_ext/pathname.rb +0 -4
- data/lib/nanoc/extra/core_ext/time.rb +0 -2
- data/lib/nanoc/extra/deployer.rb +0 -4
- data/lib/nanoc/extra/deployers.rb +0 -4
- data/lib/nanoc/extra/deployers/fog.rb +7 -11
- data/lib/nanoc/extra/deployers/rsync.rb +1 -5
- data/lib/nanoc/extra/file_proxy.rb +1 -5
- data/lib/nanoc/extra/filesystem_tools.rb +37 -12
- data/lib/nanoc/extra/jruby_nokogiri_warner.rb +0 -4
- data/lib/nanoc/extra/link_collector.rb +3 -7
- data/lib/nanoc/extra/piper.rb +0 -6
- data/lib/nanoc/extra/pruner.rb +1 -7
- data/lib/nanoc/extra/validators.rb +0 -4
- data/lib/nanoc/extra/validators/links.rb +0 -4
- data/lib/nanoc/extra/validators/w3c.rb +0 -4
- data/lib/nanoc/extra/vcs.rb +3 -7
- data/lib/nanoc/extra/vcses.rb +0 -2
- data/lib/nanoc/extra/vcses/bazaar.rb +0 -4
- data/lib/nanoc/extra/vcses/dummy.rb +0 -4
- data/lib/nanoc/extra/vcses/git.rb +0 -4
- data/lib/nanoc/extra/vcses/mercurial.rb +0 -4
- data/lib/nanoc/extra/vcses/subversion.rb +0 -4
- data/lib/nanoc/filters.rb +0 -2
- data/lib/nanoc/filters/asciidoc.rb +1 -5
- data/lib/nanoc/filters/bluecloth.rb +0 -2
- data/lib/nanoc/filters/coderay.rb +0 -2
- data/lib/nanoc/filters/coffeescript.rb +0 -4
- data/lib/nanoc/filters/colorize_syntax.rb +17 -15
- data/lib/nanoc/filters/erb.rb +1 -3
- data/lib/nanoc/filters/erubis.rb +2 -4
- data/lib/nanoc/filters/haml.rb +2 -4
- data/lib/nanoc/filters/handlebars.rb +0 -4
- data/lib/nanoc/filters/kramdown.rb +7 -4
- data/lib/nanoc/filters/less.rb +1 -3
- data/lib/nanoc/filters/markaby.rb +0 -2
- data/lib/nanoc/filters/maruku.rb +0 -2
- data/lib/nanoc/filters/mustache.rb +1 -5
- data/lib/nanoc/filters/pandoc.rb +0 -2
- data/lib/nanoc/filters/rainpress.rb +0 -2
- data/lib/nanoc/filters/rdiscount.rb +0 -2
- data/lib/nanoc/filters/rdoc.rb +0 -2
- data/lib/nanoc/filters/redcarpet.rb +0 -4
- data/lib/nanoc/filters/redcloth.rb +0 -2
- data/lib/nanoc/filters/relativize_paths.rb +2 -4
- data/lib/nanoc/filters/rubypants.rb +0 -2
- data/lib/nanoc/filters/sass.rb +2 -4
- data/lib/nanoc/filters/sass/sass_filesystem_importer.rb +0 -2
- data/lib/nanoc/filters/slim.rb +2 -6
- data/lib/nanoc/filters/typogruby.rb +0 -4
- data/lib/nanoc/filters/uglify_js.rb +0 -2
- data/lib/nanoc/filters/xsl.rb +1 -5
- data/lib/nanoc/filters/yui_compressor.rb +0 -4
- data/lib/nanoc/helpers.rb +0 -2
- data/lib/nanoc/helpers/blogging.rb +12 -20
- data/lib/nanoc/helpers/breadcrumbs.rb +0 -4
- data/lib/nanoc/helpers/capturing.rb +2 -10
- data/lib/nanoc/helpers/filtering.rb +0 -4
- data/lib/nanoc/helpers/html_escape.rb +3 -7
- data/lib/nanoc/helpers/link_to.rb +0 -4
- data/lib/nanoc/helpers/rendering.rb +8 -12
- data/lib/nanoc/helpers/tagging.rb +0 -4
- data/lib/nanoc/helpers/text.rb +1 -5
- data/lib/nanoc/helpers/xml_sitemap.rb +3 -7
- data/lib/nanoc/tasks/clean.rb +1 -7
- data/lib/nanoc/tasks/deploy/rsync.rake +0 -2
- data/lib/nanoc/tasks/validate.rake +0 -4
- data/lib/nanoc/version.rb +1 -3
- data/nanoc.gemspec +12 -9
- data/tasks/rubocop.rake +1 -1
- data/tasks/test.rake +6 -7
- data/test/base/checksummer_spec.rb +28 -44
- data/test/base/core_ext/array_spec.rb +1 -9
- data/test/base/core_ext/hash_spec.rb +7 -19
- data/test/base/core_ext/pathname_spec.rb +2 -4
- data/test/base/core_ext/string_spec.rb +0 -4
- data/test/base/temp_filename_factory_spec.rb +0 -8
- data/test/base/test_checksum_store.rb +0 -2
- data/test/base/test_code_snippet.rb +0 -2
- data/test/base/test_compiler.rb +15 -17
- data/test/base/test_compiler_dsl.rb +7 -9
- data/test/base/test_context.rb +2 -4
- data/test/base/test_data_source.rb +0 -2
- data/test/base/test_dependency_tracker.rb +0 -2
- data/test/base/test_directed_graph.rb +2 -4
- data/test/base/test_filter.rb +5 -7
- data/test/base/test_item.rb +17 -13
- data/test/base/test_item_array.rb +2 -4
- data/test/base/test_item_rep.rb +79 -73
- data/test/base/test_layout.rb +3 -5
- data/test/base/test_memoization.rb +13 -21
- data/test/base/test_notification_center.rb +0 -2
- data/test/base/test_outdatedness_checker.rb +34 -36
- data/test/base/test_plugin.rb +0 -2
- data/test/base/test_rule.rb +3 -5
- data/test/base/test_rule_context.rb +4 -6
- data/test/base/test_site.rb +9 -17
- data/test/base/test_store.rb +2 -6
- data/test/cli/commands/test_check.rb +1 -3
- data/test/cli/commands/test_compile.rb +24 -15
- data/test/cli/commands/test_create_item.rb +1 -3
- data/test/cli/commands/test_create_layout.rb +0 -2
- data/test/cli/commands/test_create_site.rb +0 -3
- data/test/cli/commands/test_deploy.rb +9 -11
- data/test/cli/commands/test_help.rb +0 -2
- data/test/cli/commands/test_info.rb +0 -2
- data/test/cli/commands/test_prune.rb +6 -8
- data/test/cli/commands/test_sync.rb +0 -2
- data/test/cli/commands/test_update.rb +0 -2
- data/test/cli/commands/test_watch.rb +4 -6
- data/test/cli/test_cleaning_stream.rb +4 -6
- data/test/cli/test_cli.rb +9 -5
- data/test/cli/test_error_handler.rb +9 -7
- data/test/cli/test_logger.rb +0 -2
- data/test/data_sources/test_filesystem.rb +8 -10
- data/test/data_sources/test_filesystem_unified.rb +35 -34
- data/test/data_sources/test_filesystem_verbose.rb +31 -33
- data/test/data_sources/test_static.rb +20 -21
- data/test/extra/checking/checks/test_css.rb +23 -2
- data/test/extra/checking/checks/test_external_links.rb +2 -4
- data/test/extra/checking/checks/test_html.rb +4 -3
- data/test/extra/checking/checks/test_internal_links.rb +1 -3
- data/test/extra/checking/checks/test_stale.rb +4 -6
- data/test/extra/checking/test_check.rb +0 -2
- data/test/extra/checking/test_dsl.rb +1 -3
- data/test/extra/checking/test_runner.rb +0 -2
- data/test/extra/core_ext/test_pathname.rb +0 -3
- data/test/extra/core_ext/test_time.rb +0 -2
- data/test/extra/deployers/test_fog.rb +13 -15
- data/test/extra/deployers/test_rsync.rb +4 -6
- data/test/extra/test_auto_compiler.rb +47 -25
- data/test/extra/test_file_proxy.rb +1 -3
- data/test/extra/test_filesystem_tools.rb +47 -7
- data/test/extra/test_link_collector.rb +0 -2
- data/test/extra/test_piper.rb +3 -5
- data/test/extra/test_vcs.rb +0 -2
- data/test/extra/validators/test_links.rb +0 -1
- data/test/extra/validators/test_w3c.rb +2 -4
- data/test/filters/test_asciidoc.rb +0 -2
- data/test/filters/test_bluecloth.rb +0 -2
- data/test/filters/test_coderay.rb +2 -4
- data/test/filters/test_coffeescript.rb +0 -2
- data/test/filters/test_colorize_syntax.rb +16 -18
- data/test/filters/test_erb.rb +12 -14
- data/test/filters/test_erubis.rb +4 -6
- data/test/filters/test_haml.rb +7 -9
- data/test/filters/test_handlebars.rb +10 -12
- data/test/filters/test_kramdown.rb +13 -1
- data/test/filters/test_less.rb +9 -11
- data/test/filters/test_markaby.rb +0 -2
- data/test/filters/test_maruku.rb +0 -2
- data/test/filters/test_mustache.rb +4 -6
- data/test/filters/test_pandoc.rb +1 -3
- data/test/filters/test_rainpress.rb +1 -3
- data/test/filters/test_rdiscount.rb +1 -3
- data/test/filters/test_rdoc.rb +0 -2
- data/test/filters/test_redcarpet.rb +6 -8
- data/test/filters/test_redcloth.rb +1 -3
- data/test/filters/test_relativize_paths.rb +29 -34
- data/test/filters/test_rubypants.rb +0 -2
- data/test/filters/test_sass.rb +8 -10
- data/test/filters/test_slim.rb +2 -4
- data/test/filters/test_typogruby.rb +0 -3
- data/test/filters/test_uglify_js.rb +2 -4
- data/test/filters/test_xsl.rb +16 -18
- data/test/filters/test_yui_compressor.rb +3 -5
- data/test/fixtures/vcr_cassettes/css_run_parse_error.yml +65 -0
- data/test/gem_loader.rb +1 -1
- data/test/helper.rb +11 -15
- data/test/helpers/test_blogging.rb +61 -63
- data/test/helpers/test_breadcrumbs.rb +0 -2
- data/test/helpers/test_capturing.rb +4 -6
- data/test/helpers/test_filtering.rb +2 -4
- data/test/helpers/test_html_escape.rb +0 -2
- data/test/helpers/test_link_to.rb +5 -6
- data/test/helpers/test_rendering.rb +2 -4
- data/test/helpers/test_tagging.rb +9 -11
- data/test/helpers/test_text.rb +6 -8
- data/test/helpers/test_xml_sitemap.rb +11 -13
- data/test/tasks/test_clean.rb +0 -2
- data/test/test_gem.rb +1 -3
- metadata +15 -14
- data/Gemfile.lock +0 -252
- data/lib/nanoc/base/core_ext/date.rb +0 -29
- data/lib/nanoc/base/ordered_hash.rb +0 -228
- data/lib/nanoc/extra/core_ext/enumerable.rb +0 -33
- data/test/base/core_ext/date_spec.rb +0 -15
- data/test/extra/core_ext/test_enumerable.rb +0 -28
@@ -1,15 +1,11 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra
|
4
|
-
|
5
4
|
module Deployers
|
6
|
-
|
7
5
|
autoload 'Fog', 'nanoc/extra/deployers/fog'
|
8
6
|
autoload 'Rsync', 'nanoc/extra/deployers/rsync'
|
9
7
|
|
10
8
|
Nanoc::Extra::Deployer.register '::Nanoc::Extra::Deployers::Fog', :fog
|
11
9
|
Nanoc::Extra::Deployer.register '::Nanoc::Extra::Deployers::Rsync', :rsync
|
12
|
-
|
13
10
|
end
|
14
|
-
|
15
11
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra::Deployers
|
4
|
-
|
5
4
|
# A deployer that deploys a site using [fog](https://github.com/geemus/fog).
|
6
5
|
#
|
7
6
|
# @example A deployment configuration with public and staging configurations
|
@@ -18,7 +17,6 @@ module Nanoc::Extra::Deployers
|
|
18
17
|
# local_root: ~/myCloud
|
19
18
|
# bucket: nanoc-site-staging
|
20
19
|
class Fog < ::Nanoc::Extra::Deployer
|
21
|
-
|
22
20
|
# @see Nanoc::Extra::Deployer#run
|
23
21
|
def run
|
24
22
|
require 'fog'
|
@@ -45,7 +43,7 @@ module Nanoc::Extra::Deployers
|
|
45
43
|
# Get bucket
|
46
44
|
puts 'Getting bucket'
|
47
45
|
begin
|
48
|
-
directory = connection.directories.get(bucket, :
|
46
|
+
directory = connection.directories.get(bucket, prefix: path)
|
49
47
|
rescue ::Excon::Errors::NotFound
|
50
48
|
should_create_bucket = true
|
51
49
|
end
|
@@ -53,18 +51,18 @@ module Nanoc::Extra::Deployers
|
|
53
51
|
|
54
52
|
# Create bucket if necessary
|
55
53
|
if should_create_bucket
|
56
|
-
directory = connection.directories.create(:
|
54
|
+
directory = connection.directories.create(key: bucket, prefix: path)
|
57
55
|
end
|
58
56
|
|
59
57
|
# Get list of remote files
|
60
58
|
files = directory.files
|
61
59
|
truncated = files.respond_to?(:is_truncated) && files.is_truncated
|
62
60
|
while truncated
|
63
|
-
set = directory.files.all(:
|
61
|
+
set = directory.files.all(marker: files.last.key)
|
64
62
|
truncated = set.is_truncated
|
65
63
|
files += set
|
66
64
|
end
|
67
|
-
keys_to_destroy = files.all.map
|
65
|
+
keys_to_destroy = files.all.map(&:key)
|
68
66
|
|
69
67
|
# Upload all the files in the output folder to the clouds
|
70
68
|
puts 'Uploading local files'
|
@@ -73,9 +71,9 @@ module Nanoc::Extra::Deployers
|
|
73
71
|
files.each do |file_path|
|
74
72
|
key = path ? File.join(path, file_path) : file_path
|
75
73
|
directory.files.create(
|
76
|
-
:
|
77
|
-
:
|
78
|
-
:
|
74
|
+
key: key,
|
75
|
+
body: File.open(file_path),
|
76
|
+
public: true)
|
79
77
|
keys_to_destroy.delete(key)
|
80
78
|
end
|
81
79
|
end
|
@@ -95,7 +93,5 @@ module Nanoc::Extra::Deployers
|
|
95
93
|
def error(msg)
|
96
94
|
raise RuntimeError.new(msg)
|
97
95
|
end
|
98
|
-
|
99
96
|
end
|
100
|
-
|
101
97
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra::Deployers
|
4
|
-
|
5
4
|
# A deployer that deploys a site using rsync.
|
6
5
|
#
|
7
6
|
# The configuration has should include a `:dst` value, a string containing
|
@@ -20,7 +19,6 @@ module Nanoc::Extra::Deployers
|
|
20
19
|
# dst: "ectype:sites/stoneship-staging/public"
|
21
20
|
# options: [ "-glpPrtvz" ]
|
22
21
|
class Rsync < ::Nanoc::Extra::Deployer
|
23
|
-
|
24
22
|
# Default rsync options
|
25
23
|
DEFAULT_OPTIONS = [
|
26
24
|
'--group',
|
@@ -60,10 +58,8 @@ module Nanoc::Extra::Deployers
|
|
60
58
|
private
|
61
59
|
|
62
60
|
def run_shell_cmd(cmd)
|
63
|
-
piper = Nanoc::Extra::Piper.new(:
|
61
|
+
piper = Nanoc::Extra::Piper.new(stdout: $stdout, stderr: $stderr)
|
64
62
|
piper.run(cmd, nil)
|
65
63
|
end
|
66
|
-
|
67
64
|
end
|
68
|
-
|
69
65
|
end
|
@@ -1,10 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra
|
4
|
-
|
5
4
|
# @deprecated Create a File instance directly and use that instead.
|
6
5
|
class FileProxy
|
7
|
-
|
8
6
|
instance_methods.each { |m| undef_method m unless m =~ /^__/ || m.to_s == 'object_id' }
|
9
7
|
|
10
8
|
@@deprecation_warning_shown = false
|
@@ -32,9 +30,7 @@ module Nanoc::Extra
|
|
32
30
|
private
|
33
31
|
|
34
32
|
def file_instance_methods
|
35
|
-
@@file_instance_methods ||= Set.new(File.instance_methods.map
|
33
|
+
@@file_instance_methods ||= Set.new(File.instance_methods.map(&:to_sym))
|
36
34
|
end
|
37
|
-
|
38
35
|
end
|
39
|
-
|
40
36
|
end
|
@@ -1,17 +1,14 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra
|
4
|
-
|
5
4
|
# Contains useful functions for managing the filesystem.
|
6
5
|
#
|
7
6
|
# @api private
|
8
7
|
module FilesystemTools
|
9
|
-
|
10
8
|
# Error that is raised when too many symlink indirections are encountered.
|
11
9
|
#
|
12
10
|
# @api private
|
13
11
|
class MaxSymlinkDepthExceededError < ::Nanoc::Errors::GenericTrivial
|
14
|
-
|
15
12
|
# @return [String] The last filename that was attempted to be
|
16
13
|
# resolved before giving up
|
17
14
|
attr_reader :filename
|
@@ -22,7 +19,6 @@ module Nanoc::Extra
|
|
22
19
|
@filename = filename
|
23
20
|
super("Too many indirections while resolving symlinks. I gave up after finding out #{filename} was yet another symlink. Sorry!")
|
24
21
|
end
|
25
|
-
|
26
22
|
end
|
27
23
|
|
28
24
|
# Error that is raised when a file of an unknown type is encountered
|
@@ -30,7 +26,6 @@ module Nanoc::Extra
|
|
30
26
|
#
|
31
27
|
# @api private
|
32
28
|
class UnsupportedFileTypeError < ::Nanoc::Errors::GenericTrivial
|
33
|
-
|
34
29
|
# @return [String] The filename of the file whose type is not supported
|
35
30
|
attr_reader :filename
|
36
31
|
|
@@ -40,7 +35,6 @@ module Nanoc::Extra
|
|
40
35
|
@filename = filename
|
41
36
|
super("The file at #{filename} is of an unsupported type (expected file, directory or link, but it is #{File.ftype(filename)}")
|
42
37
|
end
|
43
|
-
|
44
38
|
end
|
45
39
|
|
46
40
|
# Returns all files in the given directory and directories below it,
|
@@ -49,18 +43,22 @@ module Nanoc::Extra
|
|
49
43
|
# @param [String] dir_name The name of the directory whose contents to
|
50
44
|
# fetch
|
51
45
|
#
|
46
|
+
# @param [String, Array, nil] extra_files The list of extra patterns
|
47
|
+
# to extend the file search for files not found by default, example
|
48
|
+
# "**/.{htaccess,htpasswd}"
|
49
|
+
#
|
52
50
|
# @param [Integer] recursion_limit The maximum number of times to
|
53
51
|
# recurse into a symlink to a directory
|
54
52
|
#
|
55
|
-
# @return [Array<String>] A list of
|
53
|
+
# @return [Array<String>] A list of file names
|
56
54
|
#
|
57
55
|
# @raise [MaxSymlinkDepthExceededError] if too many indirections are
|
58
56
|
# encountered while resolving symlinks
|
59
57
|
#
|
60
58
|
# @raise [UnsupportedFileTypeError] if a file of an unsupported type is
|
61
59
|
# detected (something other than file, directory or link)
|
62
|
-
def all_files_in(dir_name, recursion_limit = 10)
|
63
|
-
|
60
|
+
def all_files_in(dir_name, extra_files, recursion_limit = 10)
|
61
|
+
all_files_and_dirs_in(dir_name, extra_files).map do |fn|
|
64
62
|
case File.ftype(fn)
|
65
63
|
when 'link'
|
66
64
|
if 0 == recursion_limit
|
@@ -70,7 +68,7 @@ module Nanoc::Extra
|
|
70
68
|
if File.file?(absolute_target)
|
71
69
|
fn
|
72
70
|
else
|
73
|
-
all_files_in(absolute_target, recursion_limit - 1).map do |sfn|
|
71
|
+
all_files_in(absolute_target, extra_files, recursion_limit - 1).map do |sfn|
|
74
72
|
fn + sfn[absolute_target.size..-1]
|
75
73
|
end
|
76
74
|
end
|
@@ -86,6 +84,35 @@ module Nanoc::Extra
|
|
86
84
|
end
|
87
85
|
module_function :all_files_in
|
88
86
|
|
87
|
+
# Returns all files and directories in the given directory and
|
88
|
+
# directories below it.
|
89
|
+
#
|
90
|
+
# @param [String] dir_name The name of the directory whose contents to
|
91
|
+
# fetch
|
92
|
+
#
|
93
|
+
# @param [String, Array, nil] extra_files The list of extra patterns
|
94
|
+
# to extend the file search for files not found by default, example
|
95
|
+
# "**/.{htaccess,htpasswd}"
|
96
|
+
#
|
97
|
+
# @return [Array<String>] A list of files and directories
|
98
|
+
#
|
99
|
+
# @raise [GenericTrivial] when pattern can not be handled
|
100
|
+
def all_files_and_dirs_in(dir_name, extra_files)
|
101
|
+
patterns = ["#{dir_name}/**/*"]
|
102
|
+
case extra_files
|
103
|
+
when nil
|
104
|
+
when String
|
105
|
+
patterns << "#{dir_name}/#{extra_files}"
|
106
|
+
when Array
|
107
|
+
patterns.concat(extra_files.map { |extra_file| "#{dir_name}/#{extra_file}" })
|
108
|
+
else
|
109
|
+
raise Nanoc::Errors::GenericTrivial,
|
110
|
+
"Do not know how to handle extra_files: #{extra_files.inspect}"
|
111
|
+
end
|
112
|
+
Dir.glob(patterns)
|
113
|
+
end
|
114
|
+
module_function :all_files_and_dirs_in
|
115
|
+
|
89
116
|
# Resolves the given symlink into an absolute path.
|
90
117
|
#
|
91
118
|
# @param [String] filename The filename of the symlink to resolve
|
@@ -118,7 +145,5 @@ module Nanoc::Extra
|
|
118
145
|
end
|
119
146
|
end
|
120
147
|
module_function :resolve_symlink
|
121
|
-
|
122
148
|
end
|
123
|
-
|
124
149
|
end
|
@@ -3,9 +3,7 @@
|
|
3
3
|
require 'set'
|
4
4
|
|
5
5
|
module ::Nanoc::Extra
|
6
|
-
|
7
6
|
class LinkCollector
|
8
|
-
|
9
7
|
def initialize(filenames, mode = nil)
|
10
8
|
Nanoc::Extra::JRubyNokogiriWarner.check_and_warn
|
11
9
|
|
@@ -13,11 +11,11 @@ module ::Nanoc::Extra
|
|
13
11
|
@filter =
|
14
12
|
case mode
|
15
13
|
when nil
|
16
|
-
|
14
|
+
->(_h) { true }
|
17
15
|
when :external
|
18
|
-
|
16
|
+
->(h) { external_href?(h) }
|
19
17
|
when :internal
|
20
|
-
|
18
|
+
->(h) { !external_href?(h) }
|
21
19
|
else
|
22
20
|
raise ArgumentError, 'Expected mode argument to be :internal, :external or nil'
|
23
21
|
end
|
@@ -54,7 +52,5 @@ module ::Nanoc::Extra
|
|
54
52
|
|
55
53
|
hrefs_in_file.select(&@filter)
|
56
54
|
end
|
57
|
-
|
58
55
|
end
|
59
|
-
|
60
56
|
end
|
data/lib/nanoc/extra/piper.rb
CHANGED
@@ -3,11 +3,8 @@
|
|
3
3
|
require 'open3'
|
4
4
|
|
5
5
|
module Nanoc::Extra
|
6
|
-
|
7
6
|
class Piper
|
8
|
-
|
9
7
|
class Error < ::Nanoc::Errors::Generic
|
10
|
-
|
11
8
|
def initialize(command, exit_code)
|
12
9
|
@command = command
|
13
10
|
@exit_code = exit_code
|
@@ -16,7 +13,6 @@ module Nanoc::Extra
|
|
16
13
|
def message
|
17
14
|
"command exited with a nonzero status code #{@exit_code} (command: #{@command.join(' ')})"
|
18
15
|
end
|
19
|
-
|
20
16
|
end
|
21
17
|
|
22
18
|
# @option [IO] :stdout ($stdout)
|
@@ -48,7 +44,5 @@ module Nanoc::Extra
|
|
48
44
|
end
|
49
45
|
end
|
50
46
|
end
|
51
|
-
|
52
47
|
end
|
53
|
-
|
54
48
|
end
|
data/lib/nanoc/extra/pruner.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra
|
4
|
-
|
5
4
|
# Responsible for finding and deleting files in the site’s output directory
|
6
5
|
# that are not managed by nanoc.
|
7
6
|
class Pruner
|
8
|
-
|
9
7
|
# @return [Nanoc::Site] The site this pruner belongs to
|
10
8
|
attr_reader :site
|
11
9
|
|
@@ -28,9 +26,7 @@ module Nanoc::Extra
|
|
28
26
|
|
29
27
|
# Get compiled files
|
30
28
|
all_raw_paths = site.items.map do |item|
|
31
|
-
item.reps.map
|
32
|
-
rep.raw_path
|
33
|
-
end
|
29
|
+
item.reps.map(&:raw_path)
|
34
30
|
end
|
35
31
|
compiled_files = all_raw_paths.flatten.compact.select { |f| File.file?(f) }
|
36
32
|
|
@@ -84,7 +80,5 @@ module Nanoc::Extra
|
|
84
80
|
Dir.rmdir(dir)
|
85
81
|
end
|
86
82
|
end
|
87
|
-
|
88
83
|
end
|
89
|
-
|
90
84
|
end
|
@@ -1,10 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra::Validators
|
4
|
-
|
5
4
|
# @deprecated Use the Checking API or the `check` command instead
|
6
5
|
class Links
|
7
|
-
|
8
6
|
def initialize(_dir, _index_filenames, params = {})
|
9
7
|
@include_internal = params.key?(:internal) && params[:internal]
|
10
8
|
@include_external = params.key?(:external) && params[:external]
|
@@ -16,7 +14,5 @@ module Nanoc::Extra::Validators
|
|
16
14
|
checks << 'elinks' if options[:external]
|
17
15
|
Nanoc::CLI.run ['check', checks].flatten
|
18
16
|
end
|
19
|
-
|
20
17
|
end
|
21
|
-
|
22
18
|
end
|
@@ -1,10 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra::Validators
|
4
|
-
|
5
4
|
# @deprecated Use the Checking API or the `check` command instead
|
6
5
|
class W3C
|
7
|
-
|
8
6
|
def initialize(dir, types)
|
9
7
|
@dir = dir
|
10
8
|
@types = types
|
@@ -21,7 +19,5 @@ module Nanoc::Extra::Validators
|
|
21
19
|
|
22
20
|
Nanoc::CLI.run(['check', args].flatten)
|
23
21
|
end
|
24
|
-
|
25
22
|
end
|
26
|
-
|
27
23
|
end
|
data/lib/nanoc/extra/vcs.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra
|
4
|
-
|
5
4
|
# A very simple representation of a version control system (VCS) that
|
6
5
|
# abstracts the add, remove and move operations. It does not commit. This
|
7
6
|
# class is primarily used by data sources that store data as flat files on
|
@@ -10,7 +9,6 @@ module Nanoc::Extra
|
|
10
9
|
# @abstract Subclass and override {#add}, {#remove} and {#move} to implement
|
11
10
|
# a custom VCS.
|
12
11
|
class VCS
|
13
|
-
|
14
12
|
extend Nanoc::PluginRegistry::PluginMethods
|
15
13
|
|
16
14
|
# Adds the file with the given filename to the working copy.
|
@@ -20,7 +18,7 @@ module Nanoc::Extra
|
|
20
18
|
# @return [void]
|
21
19
|
#
|
22
20
|
# @abstract
|
23
|
-
def add(
|
21
|
+
def add(filename) # rubocop:disable Lint/UnusedMethodArgument
|
24
22
|
not_implemented('add')
|
25
23
|
end
|
26
24
|
|
@@ -33,7 +31,7 @@ module Nanoc::Extra
|
|
33
31
|
# @return [void]
|
34
32
|
#
|
35
33
|
# @abstract
|
36
|
-
def remove(
|
34
|
+
def remove(filename) # rubocop:disable Lint/UnusedMethodArgument
|
37
35
|
not_implemented('remove')
|
38
36
|
end
|
39
37
|
|
@@ -48,7 +46,7 @@ module Nanoc::Extra
|
|
48
46
|
# @return [void]
|
49
47
|
#
|
50
48
|
# @abstract
|
51
|
-
def move(
|
49
|
+
def move(src, dst) # rubocop:disable Lint/UnusedMethodArgument
|
52
50
|
not_implemented('move')
|
53
51
|
end
|
54
52
|
|
@@ -60,7 +58,5 @@ module Nanoc::Extra
|
|
60
58
|
'this data source to be used.'
|
61
59
|
)
|
62
60
|
end
|
63
|
-
|
64
61
|
end
|
65
|
-
|
66
62
|
end
|