nanoc 3.7.4 → 3.7.5
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/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
|