aboutsummaryrefslogtreecommitdiffstats
path: root/docs/_plugins/incremental_regeneration_fixer.rb
diff options
context:
space:
mode:
authorMarius Halden <marius.h@lden.org>2019-10-30 19:28:55 +0100
committerMarius Halden <marius.h@lden.org>2019-10-30 19:28:55 +0100
commit377bd96aab7cad3434185c30eb908c9da447fe40 (patch)
tree7ec5527e205d5b62caaa862a7de8cd25199c8bf0 /docs/_plugins/incremental_regeneration_fixer.rb
parent56f61b1441070aa0b9ddcfc74aca46c20313609f (diff)
parent92b253904062edd533e55c22824de6fd01e2f7c1 (diff)
Merge tag 'v2.6' into fiksgatami-dev
Diffstat (limited to 'docs/_plugins/incremental_regeneration_fixer.rb')
-rw-r--r--docs/_plugins/incremental_regeneration_fixer.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/docs/_plugins/incremental_regeneration_fixer.rb b/docs/_plugins/incremental_regeneration_fixer.rb
new file mode 100644
index 000000000..f138c37bc
--- /dev/null
+++ b/docs/_plugins/incremental_regeneration_fixer.rb
@@ -0,0 +1,51 @@
+module IncrementalRegenerationFixer
+ def IncrementalRegenerationFixer.init(site)
+ if site.regenerator.disabled?
+ return
+ end
+
+ # This is a fix for the following bug:
+ #
+ # https://github.com/jekyll/jekyll/issues/4112
+ #
+ # To work around it, we'll remember groups of interdependent files;
+ # if any of the files in a group changes, we'll make sure to
+ # regenerate *all* the files in that group.
+ interdependent_files = []
+
+ config = site.config['incremental_regeneration_fixer']
+ if not config
+ raise ("You probably want to specify incremental_regeneration_fixer " +
+ "config if you want to use this plugin")
+ end
+
+ globs = config['interdependent_files']
+ if not globs
+ return
+ end
+
+ for glob in globs
+ group = Dir["#{site.source}/#{glob}"]
+ if group.length == 0
+ raise ("The path '#{glob}' contains no files! Please fix " +
+ "interdependent_files in your site's _config.yml.")
+ end
+ interdependent_files << group
+ end
+
+ for group in interdependent_files
+ for srcfile in group
+ if site.regenerator.modified? srcfile
+ for dependent_file in group
+ site.regenerator.force dependent_file
+ end
+ break
+ end
+ end
+ end
+ end
+end
+
+Jekyll::Hooks.register :site, :post_read do |site|
+ IncrementalRegenerationFixer.init(site)
+end