diff options
author | Marius Halden <marius.h@lden.org> | 2019-10-30 19:28:55 +0100 |
---|---|---|
committer | Marius Halden <marius.h@lden.org> | 2019-10-30 19:28:55 +0100 |
commit | 377bd96aab7cad3434185c30eb908c9da447fe40 (patch) | |
tree | 7ec5527e205d5b62caaa862a7de8cd25199c8bf0 /docs/_plugins/incremental_regeneration_fixer.rb | |
parent | 56f61b1441070aa0b9ddcfc74aca46c20313609f (diff) | |
parent | 92b253904062edd533e55c22824de6fd01e2f7c1 (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.rb | 51 |
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 |