diff options
author | Frederic Hemberger <mail@frederic-hemberger.de> | 2011-12-10 03:21:59 -0800 |
---|---|---|
committer | Frederic Hemberger <mail@frederic-hemberger.de> | 2011-12-10 03:21:59 -0800 |
commit | 7f3ad1c1cc40d6598a8d04eb45f146943c120d3b (patch) | |
tree | 9d202b8ad7c7da08909a8ed51cdf8d7ec95be79c /plugins | |
parent | d99434bca93510f9d7310b41690b824b70215597 (diff) | |
parent | 6714e5c7f5b3a874732e58dd2e6383e184da7019 (diff) | |
download | my_new_personal_website-7f3ad1c1cc40d6598a8d04eb45f146943c120d3b.tar.xz my_new_personal_website-7f3ad1c1cc40d6598a8d04eb45f146943c120d3b.zip |
Merge pull request #293 from imathis/generate_environment
Introduce distinction between preview/productive site generation
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/preview_unpublished.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/plugins/preview_unpublished.rb b/plugins/preview_unpublished.rb new file mode 100644 index 00000000..321ffd6f --- /dev/null +++ b/plugins/preview_unpublished.rb @@ -0,0 +1,48 @@ +# Monkeypatch for Jekyll +# Introduce distinction between preview/productive site generation +# so posts with YAML attribute `published: false` can be previewed +# on localhost without being published to the productive environment. + +module Jekyll + + class Site + # Read all the files in <source>/<dir>/_posts and create a new Post + # object with each one. + # + # dir - The String relative path of the directory to read. + # + # Returns nothing. + def read_posts(dir) + base = File.join(self.source, dir, '_posts') + return unless File.exists?(base) + entries = Dir.chdir(base) { filter_entries(Dir['**/*']) } + + # first pass processes, but does not yet render post content + entries.each do |f| + if Post.valid?(f) + post = Post.new(self, self.source, dir, f) + + # Monkeypatch: + # On preview environment (localhost), publish all posts + if ENV.has_key?('OCTOPRESS_ENV') && ENV['OCTOPRESS_ENV'] == 'preview' && post.data.has_key?('published') && post.data['published'] == false + post.published = true + # Set preview mode flag (if necessary), `rake generate` will check for it + # to prevent pushing preview posts to productive environment + File.open(".preview-mode", "w") {} + end + + if post.published && (self.future || post.date <= self.time) + self.posts << post + post.categories.each { |c| self.categories[c] << post } + post.tags.each { |c| self.tags[c] << post } + end + end + end + + self.posts.sort! + + # limit the posts if :limit_posts option is set + self.posts = self.posts[-limit_posts, limit_posts] if limit_posts + end + end +end
\ No newline at end of file |