forked from imathis/octopress
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request imathis#293 from imathis/generate_environment
Introduce distinction between preview/productive site generation
- Loading branch information
Showing
2 changed files
with
57 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |