nanoc 3.7.4 → 3.7.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (284) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +19 -18
  3. data/LICENSE +1 -1
  4. data/NEWS.md +14 -0
  5. data/Rakefile +1 -1
  6. data/doc/yardoc_handlers/identifier.rb +1 -5
  7. data/lib/nanoc.rb +1 -3
  8. data/lib/nanoc/base.rb +1 -4
  9. data/lib/nanoc/base/checksummer.rb +10 -12
  10. data/lib/nanoc/base/compilation/checksum_store.rb +0 -4
  11. data/lib/nanoc/base/compilation/compiled_content_cache.rb +0 -4
  12. data/lib/nanoc/base/compilation/compiler.rb +27 -31
  13. data/lib/nanoc/base/compilation/compiler_dsl.rb +3 -7
  14. data/lib/nanoc/base/compilation/dependency_tracker.rb +2 -6
  15. data/lib/nanoc/base/compilation/filter.rb +1 -7
  16. data/lib/nanoc/base/compilation/item_rep_proxy.rb +0 -4
  17. data/lib/nanoc/base/compilation/item_rep_recorder_proxy.rb +0 -4
  18. data/lib/nanoc/base/compilation/outdatedness_checker.rb +0 -4
  19. data/lib/nanoc/base/compilation/outdatedness_reasons.rb +0 -6
  20. data/lib/nanoc/base/compilation/rule.rb +1 -5
  21. data/lib/nanoc/base/compilation/rule_context.rb +7 -11
  22. data/lib/nanoc/base/compilation/rule_memory_calculator.rb +0 -4
  23. data/lib/nanoc/base/compilation/rule_memory_store.rb +0 -4
  24. data/lib/nanoc/base/compilation/rules_collection.rb +5 -9
  25. data/lib/nanoc/base/context.rb +0 -3
  26. data/lib/nanoc/base/core_ext.rb +0 -1
  27. data/lib/nanoc/base/core_ext/array.rb +0 -2
  28. data/lib/nanoc/base/core_ext/hash.rb +0 -2
  29. data/lib/nanoc/base/core_ext/pathname.rb +0 -2
  30. data/lib/nanoc/base/core_ext/string.rb +0 -2
  31. data/lib/nanoc/base/directed_graph.rb +0 -4
  32. data/lib/nanoc/base/errors.rb +1 -39
  33. data/lib/nanoc/base/memoization.rb +0 -4
  34. data/lib/nanoc/base/notification_center.rb +1 -7
  35. data/lib/nanoc/base/plugin_registry.rb +4 -10
  36. data/lib/nanoc/base/result_data/item_rep.rb +8 -16
  37. data/lib/nanoc/base/source_data/code_snippet.rb +1 -5
  38. data/lib/nanoc/base/source_data/configuration.rb +0 -4
  39. data/lib/nanoc/base/source_data/data_source.rb +2 -5
  40. data/lib/nanoc/base/source_data/item.rb +3 -7
  41. data/lib/nanoc/base/source_data/item_array.rb +1 -5
  42. data/lib/nanoc/base/source_data/layout.rb +2 -6
  43. data/lib/nanoc/base/source_data/site.rb +20 -23
  44. data/lib/nanoc/base/store.rb +1 -5
  45. data/lib/nanoc/base/temp_filename_factory.rb +0 -4
  46. data/lib/nanoc/cli.rb +3 -5
  47. data/lib/nanoc/cli/ansi_string_colorizer.rb +6 -10
  48. data/lib/nanoc/cli/cleaning_stream.rb +2 -6
  49. data/lib/nanoc/cli/command_runner.rb +1 -5
  50. data/lib/nanoc/cli/commands/autocompile.rb +2 -6
  51. data/lib/nanoc/cli/commands/check.rb +0 -4
  52. data/lib/nanoc/cli/commands/compile.rb +12 -27
  53. data/lib/nanoc/cli/commands/create-item.rb +1 -5
  54. data/lib/nanoc/cli/commands/create-layout.rb +0 -4
  55. data/lib/nanoc/cli/commands/create-site.rb +2 -8
  56. data/lib/nanoc/cli/commands/deploy.rb +3 -7
  57. data/lib/nanoc/cli/commands/prune.rb +2 -6
  58. data/lib/nanoc/cli/commands/shell.rb +4 -8
  59. data/lib/nanoc/cli/commands/show-data.rb +3 -7
  60. data/lib/nanoc/cli/commands/show-plugins.rb +3 -7
  61. data/lib/nanoc/cli/commands/show-rules.rb +11 -15
  62. data/lib/nanoc/cli/commands/sync.rb +0 -4
  63. data/lib/nanoc/cli/commands/update.rb +1 -7
  64. data/lib/nanoc/cli/commands/validate-css.rb +0 -4
  65. data/lib/nanoc/cli/commands/validate-html.rb +0 -4
  66. data/lib/nanoc/cli/commands/validate-links.rb +0 -4
  67. data/lib/nanoc/cli/commands/view.rb +3 -7
  68. data/lib/nanoc/cli/commands/watch.rb +4 -10
  69. data/lib/nanoc/cli/error_handler.rb +9 -13
  70. data/lib/nanoc/cli/logger.rb +8 -12
  71. data/lib/nanoc/cli/stream_cleaners.rb +0 -4
  72. data/lib/nanoc/cli/stream_cleaners/abstract.rb +1 -5
  73. data/lib/nanoc/cli/stream_cleaners/ansi_colors.rb +0 -4
  74. data/lib/nanoc/cli/stream_cleaners/utf8.rb +1 -5
  75. data/lib/nanoc/data_sources.rb +2 -4
  76. data/lib/nanoc/data_sources/deprecated/delicious.rb +6 -10
  77. data/lib/nanoc/data_sources/deprecated/last_fm.rb +7 -11
  78. data/lib/nanoc/data_sources/deprecated/twitter.rb +2 -6
  79. data/lib/nanoc/data_sources/filesystem.rb +10 -13
  80. data/lib/nanoc/data_sources/filesystem_unified.rb +0 -4
  81. data/lib/nanoc/data_sources/filesystem_verbose.rb +0 -4
  82. data/lib/nanoc/data_sources/static.rb +4 -8
  83. data/lib/nanoc/extra.rb +2 -4
  84. data/lib/nanoc/extra/auto_compiler.rb +2 -6
  85. data/lib/nanoc/extra/checking.rb +0 -4
  86. data/lib/nanoc/extra/checking/check.rb +0 -4
  87. data/lib/nanoc/extra/checking/checks.rb +0 -2
  88. data/lib/nanoc/extra/checking/checks/css.rb +6 -6
  89. data/lib/nanoc/extra/checking/checks/external_links.rb +3 -11
  90. data/lib/nanoc/extra/checking/checks/html.rb +6 -6
  91. data/lib/nanoc/extra/checking/checks/internal_links.rb +3 -7
  92. data/lib/nanoc/extra/checking/checks/stale.rb +3 -7
  93. data/lib/nanoc/extra/checking/dsl.rb +0 -4
  94. data/lib/nanoc/extra/checking/issue.rb +0 -4
  95. data/lib/nanoc/extra/checking/runner.rb +4 -7
  96. data/lib/nanoc/extra/chick.rb +7 -17
  97. data/lib/nanoc/extra/core_ext.rb +0 -1
  98. data/lib/nanoc/extra/core_ext/pathname.rb +0 -4
  99. data/lib/nanoc/extra/core_ext/time.rb +0 -2
  100. data/lib/nanoc/extra/deployer.rb +0 -4
  101. data/lib/nanoc/extra/deployers.rb +0 -4
  102. data/lib/nanoc/extra/deployers/fog.rb +7 -11
  103. data/lib/nanoc/extra/deployers/rsync.rb +1 -5
  104. data/lib/nanoc/extra/file_proxy.rb +1 -5
  105. data/lib/nanoc/extra/filesystem_tools.rb +37 -12
  106. data/lib/nanoc/extra/jruby_nokogiri_warner.rb +0 -4
  107. data/lib/nanoc/extra/link_collector.rb +3 -7
  108. data/lib/nanoc/extra/piper.rb +0 -6
  109. data/lib/nanoc/extra/pruner.rb +1 -7
  110. data/lib/nanoc/extra/validators.rb +0 -4
  111. data/lib/nanoc/extra/validators/links.rb +0 -4
  112. data/lib/nanoc/extra/validators/w3c.rb +0 -4
  113. data/lib/nanoc/extra/vcs.rb +3 -7
  114. data/lib/nanoc/extra/vcses.rb +0 -2
  115. data/lib/nanoc/extra/vcses/bazaar.rb +0 -4
  116. data/lib/nanoc/extra/vcses/dummy.rb +0 -4
  117. data/lib/nanoc/extra/vcses/git.rb +0 -4
  118. data/lib/nanoc/extra/vcses/mercurial.rb +0 -4
  119. data/lib/nanoc/extra/vcses/subversion.rb +0 -4
  120. data/lib/nanoc/filters.rb +0 -2
  121. data/lib/nanoc/filters/asciidoc.rb +1 -5
  122. data/lib/nanoc/filters/bluecloth.rb +0 -2
  123. data/lib/nanoc/filters/coderay.rb +0 -2
  124. data/lib/nanoc/filters/coffeescript.rb +0 -4
  125. data/lib/nanoc/filters/colorize_syntax.rb +17 -15
  126. data/lib/nanoc/filters/erb.rb +1 -3
  127. data/lib/nanoc/filters/erubis.rb +2 -4
  128. data/lib/nanoc/filters/haml.rb +2 -4
  129. data/lib/nanoc/filters/handlebars.rb +0 -4
  130. data/lib/nanoc/filters/kramdown.rb +7 -4
  131. data/lib/nanoc/filters/less.rb +1 -3
  132. data/lib/nanoc/filters/markaby.rb +0 -2
  133. data/lib/nanoc/filters/maruku.rb +0 -2
  134. data/lib/nanoc/filters/mustache.rb +1 -5
  135. data/lib/nanoc/filters/pandoc.rb +0 -2
  136. data/lib/nanoc/filters/rainpress.rb +0 -2
  137. data/lib/nanoc/filters/rdiscount.rb +0 -2
  138. data/lib/nanoc/filters/rdoc.rb +0 -2
  139. data/lib/nanoc/filters/redcarpet.rb +0 -4
  140. data/lib/nanoc/filters/redcloth.rb +0 -2
  141. data/lib/nanoc/filters/relativize_paths.rb +2 -4
  142. data/lib/nanoc/filters/rubypants.rb +0 -2
  143. data/lib/nanoc/filters/sass.rb +2 -4
  144. data/lib/nanoc/filters/sass/sass_filesystem_importer.rb +0 -2
  145. data/lib/nanoc/filters/slim.rb +2 -6
  146. data/lib/nanoc/filters/typogruby.rb +0 -4
  147. data/lib/nanoc/filters/uglify_js.rb +0 -2
  148. data/lib/nanoc/filters/xsl.rb +1 -5
  149. data/lib/nanoc/filters/yui_compressor.rb +0 -4
  150. data/lib/nanoc/helpers.rb +0 -2
  151. data/lib/nanoc/helpers/blogging.rb +12 -20
  152. data/lib/nanoc/helpers/breadcrumbs.rb +0 -4
  153. data/lib/nanoc/helpers/capturing.rb +2 -10
  154. data/lib/nanoc/helpers/filtering.rb +0 -4
  155. data/lib/nanoc/helpers/html_escape.rb +3 -7
  156. data/lib/nanoc/helpers/link_to.rb +0 -4
  157. data/lib/nanoc/helpers/rendering.rb +8 -12
  158. data/lib/nanoc/helpers/tagging.rb +0 -4
  159. data/lib/nanoc/helpers/text.rb +1 -5
  160. data/lib/nanoc/helpers/xml_sitemap.rb +3 -7
  161. data/lib/nanoc/tasks/clean.rb +1 -7
  162. data/lib/nanoc/tasks/deploy/rsync.rake +0 -2
  163. data/lib/nanoc/tasks/validate.rake +0 -4
  164. data/lib/nanoc/version.rb +1 -3
  165. data/nanoc.gemspec +12 -9
  166. data/tasks/rubocop.rake +1 -1
  167. data/tasks/test.rake +6 -7
  168. data/test/base/checksummer_spec.rb +28 -44
  169. data/test/base/core_ext/array_spec.rb +1 -9
  170. data/test/base/core_ext/hash_spec.rb +7 -19
  171. data/test/base/core_ext/pathname_spec.rb +2 -4
  172. data/test/base/core_ext/string_spec.rb +0 -4
  173. data/test/base/temp_filename_factory_spec.rb +0 -8
  174. data/test/base/test_checksum_store.rb +0 -2
  175. data/test/base/test_code_snippet.rb +0 -2
  176. data/test/base/test_compiler.rb +15 -17
  177. data/test/base/test_compiler_dsl.rb +7 -9
  178. data/test/base/test_context.rb +2 -4
  179. data/test/base/test_data_source.rb +0 -2
  180. data/test/base/test_dependency_tracker.rb +0 -2
  181. data/test/base/test_directed_graph.rb +2 -4
  182. data/test/base/test_filter.rb +5 -7
  183. data/test/base/test_item.rb +17 -13
  184. data/test/base/test_item_array.rb +2 -4
  185. data/test/base/test_item_rep.rb +79 -73
  186. data/test/base/test_layout.rb +3 -5
  187. data/test/base/test_memoization.rb +13 -21
  188. data/test/base/test_notification_center.rb +0 -2
  189. data/test/base/test_outdatedness_checker.rb +34 -36
  190. data/test/base/test_plugin.rb +0 -2
  191. data/test/base/test_rule.rb +3 -5
  192. data/test/base/test_rule_context.rb +4 -6
  193. data/test/base/test_site.rb +9 -17
  194. data/test/base/test_store.rb +2 -6
  195. data/test/cli/commands/test_check.rb +1 -3
  196. data/test/cli/commands/test_compile.rb +24 -15
  197. data/test/cli/commands/test_create_item.rb +1 -3
  198. data/test/cli/commands/test_create_layout.rb +0 -2
  199. data/test/cli/commands/test_create_site.rb +0 -3
  200. data/test/cli/commands/test_deploy.rb +9 -11
  201. data/test/cli/commands/test_help.rb +0 -2
  202. data/test/cli/commands/test_info.rb +0 -2
  203. data/test/cli/commands/test_prune.rb +6 -8
  204. data/test/cli/commands/test_sync.rb +0 -2
  205. data/test/cli/commands/test_update.rb +0 -2
  206. data/test/cli/commands/test_watch.rb +4 -6
  207. data/test/cli/test_cleaning_stream.rb +4 -6
  208. data/test/cli/test_cli.rb +9 -5
  209. data/test/cli/test_error_handler.rb +9 -7
  210. data/test/cli/test_logger.rb +0 -2
  211. data/test/data_sources/test_filesystem.rb +8 -10
  212. data/test/data_sources/test_filesystem_unified.rb +35 -34
  213. data/test/data_sources/test_filesystem_verbose.rb +31 -33
  214. data/test/data_sources/test_static.rb +20 -21
  215. data/test/extra/checking/checks/test_css.rb +23 -2
  216. data/test/extra/checking/checks/test_external_links.rb +2 -4
  217. data/test/extra/checking/checks/test_html.rb +4 -3
  218. data/test/extra/checking/checks/test_internal_links.rb +1 -3
  219. data/test/extra/checking/checks/test_stale.rb +4 -6
  220. data/test/extra/checking/test_check.rb +0 -2
  221. data/test/extra/checking/test_dsl.rb +1 -3
  222. data/test/extra/checking/test_runner.rb +0 -2
  223. data/test/extra/core_ext/test_pathname.rb +0 -3
  224. data/test/extra/core_ext/test_time.rb +0 -2
  225. data/test/extra/deployers/test_fog.rb +13 -15
  226. data/test/extra/deployers/test_rsync.rb +4 -6
  227. data/test/extra/test_auto_compiler.rb +47 -25
  228. data/test/extra/test_file_proxy.rb +1 -3
  229. data/test/extra/test_filesystem_tools.rb +47 -7
  230. data/test/extra/test_link_collector.rb +0 -2
  231. data/test/extra/test_piper.rb +3 -5
  232. data/test/extra/test_vcs.rb +0 -2
  233. data/test/extra/validators/test_links.rb +0 -1
  234. data/test/extra/validators/test_w3c.rb +2 -4
  235. data/test/filters/test_asciidoc.rb +0 -2
  236. data/test/filters/test_bluecloth.rb +0 -2
  237. data/test/filters/test_coderay.rb +2 -4
  238. data/test/filters/test_coffeescript.rb +0 -2
  239. data/test/filters/test_colorize_syntax.rb +16 -18
  240. data/test/filters/test_erb.rb +12 -14
  241. data/test/filters/test_erubis.rb +4 -6
  242. data/test/filters/test_haml.rb +7 -9
  243. data/test/filters/test_handlebars.rb +10 -12
  244. data/test/filters/test_kramdown.rb +13 -1
  245. data/test/filters/test_less.rb +9 -11
  246. data/test/filters/test_markaby.rb +0 -2
  247. data/test/filters/test_maruku.rb +0 -2
  248. data/test/filters/test_mustache.rb +4 -6
  249. data/test/filters/test_pandoc.rb +1 -3
  250. data/test/filters/test_rainpress.rb +1 -3
  251. data/test/filters/test_rdiscount.rb +1 -3
  252. data/test/filters/test_rdoc.rb +0 -2
  253. data/test/filters/test_redcarpet.rb +6 -8
  254. data/test/filters/test_redcloth.rb +1 -3
  255. data/test/filters/test_relativize_paths.rb +29 -34
  256. data/test/filters/test_rubypants.rb +0 -2
  257. data/test/filters/test_sass.rb +8 -10
  258. data/test/filters/test_slim.rb +2 -4
  259. data/test/filters/test_typogruby.rb +0 -3
  260. data/test/filters/test_uglify_js.rb +2 -4
  261. data/test/filters/test_xsl.rb +16 -18
  262. data/test/filters/test_yui_compressor.rb +3 -5
  263. data/test/fixtures/vcr_cassettes/css_run_parse_error.yml +65 -0
  264. data/test/gem_loader.rb +1 -1
  265. data/test/helper.rb +11 -15
  266. data/test/helpers/test_blogging.rb +61 -63
  267. data/test/helpers/test_breadcrumbs.rb +0 -2
  268. data/test/helpers/test_capturing.rb +4 -6
  269. data/test/helpers/test_filtering.rb +2 -4
  270. data/test/helpers/test_html_escape.rb +0 -2
  271. data/test/helpers/test_link_to.rb +5 -6
  272. data/test/helpers/test_rendering.rb +2 -4
  273. data/test/helpers/test_tagging.rb +9 -11
  274. data/test/helpers/test_text.rb +6 -8
  275. data/test/helpers/test_xml_sitemap.rb +11 -13
  276. data/test/tasks/test_clean.rb +0 -2
  277. data/test/test_gem.rb +1 -3
  278. metadata +15 -14
  279. data/Gemfile.lock +0 -252
  280. data/lib/nanoc/base/core_ext/date.rb +0 -29
  281. data/lib/nanoc/base/ordered_hash.rb +0 -228
  282. data/lib/nanoc/extra/core_ext/enumerable.rb +0 -33
  283. data/test/base/core_ext/date_spec.rb +0 -15
  284. 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, :prefix => path)
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(:key => bucket, :prefix => path)
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(:marker => files.last.key)
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 { |file| file.key }
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
- :key => key,
77
- :body => File.open(file_path),
78
- :public => true)
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(:stdout => $stdout, :stderr => $stderr)
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 { |m| m.to_sym })
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 filenames
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
- Dir[dir_name + '/**/*'].map do |fn|
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 'singleton'
4
4
 
5
5
  module Nanoc::Extra
6
-
7
6
  class JRubyNokogiriWarner
8
-
9
7
  include Singleton
10
8
 
11
9
  TEXT = <<EOS
@@ -42,7 +40,5 @@ EOS
42
40
  $stderr.puts TEXT
43
41
  @warned = true
44
42
  end
45
-
46
43
  end
47
-
48
44
  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
- lambda { |_h| true }
14
+ ->(_h) { true }
17
15
  when :external
18
- lambda { |h| external_href?(h) }
16
+ ->(h) { external_href?(h) }
19
17
  when :internal
20
- lambda { |h| !external_href?(h) }
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
@@ -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
@@ -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 do |rep|
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,12 +1,8 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Nanoc::Extra
4
-
5
4
  module Validators
6
-
7
5
  autoload 'W3C', 'nanoc/extra/validators/w3c'
8
6
  autoload 'Links', 'nanoc/extra/validators/links'
9
-
10
7
  end
11
-
12
8
  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
@@ -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(_filename)
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(_filename)
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(_src, _dst)
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