From a4b9bab1dce7ea58eea878b1bc38b7ddcdbefdb0 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 25 Oct 2013 13:25:44 -0400 Subject: [PATCH] Add --whitelist flag and internal logic --- bin/jekyll | 1 + lib/jekyll/site.rb | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/bin/jekyll b/bin/jekyll index 50d10e3a..03c37b8b 100755 --- a/bin/jekyll +++ b/bin/jekyll @@ -41,6 +41,7 @@ def add_build_options(c) c.option '--lsi', 'Use LSI for improved related posts' c.option '-D', '--drafts', 'Render posts in the _drafts folder' c.option '-V', '--verbose', 'Print verbose output.' + c.option '-W', '--whitelist', 'Gem plugin whitelist' end command :default do |c| diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index cbd7eba7..2ba3639b 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -3,7 +3,8 @@ module Jekyll attr_accessor :config, :layouts, :posts, :pages, :static_files, :categories, :exclude, :include, :source, :dest, :lsi, :pygments, :permalink_style, :tags, :time, :future, :safe, :plugins, :limit_posts, - :show_drafts, :keep_files, :baseurl, :data, :file_read_opts, :gems + :show_drafts, :keep_files, :baseurl, :data, :file_read_opts, + :gems, :whitelist attr_accessor :converters, :generators @@ -98,14 +99,18 @@ module Jekyll def require_gems self.gems.each do |gem| - if gem_whitelist.include?(gem) || !self.safe + if whitelist.include?(gem) || !self.safe require gem end end end - def gem_whitelist - @gem_whitelist ||= [] + def whitelist + @whitelist ||= begin + YAML.safe_load_file(self.config['whitelist']) || [] + rescue + [] + end end # Internal: Setup the plugin search path