Add rake tasks for creating new posts/pages
This commit is contained in:
parent
b6c7e18d6d
commit
a2bfa7fa7b
3 changed files with 122 additions and 12 deletions
12
README.md
12
README.md
|
@ -16,16 +16,16 @@
|
||||||
|
|
||||||
General notes and suggestions for customizing Minimal Mistakes.
|
General notes and suggestions for customizing Minimal Mistakes.
|
||||||
|
|
||||||
## Basic Setup
|
## Basic Setup for a new Jekyll site
|
||||||
|
|
||||||
1. [Install Jekyll](http://jekyllrb.com) if you haven't already.
|
1. [Install Bundler](http://bundler.io) `gem install bundler` and then install [Jekyll](http://jekyllrb.com) and all dependencies `bundle install`.
|
||||||
2. Fork the [Minimal Mistakes repo](http://github.com/mmistakes/minimal-mistakes/)
|
2. Fork the [Minimal Mistakes repo](http://github.com/mmistakes/minimal-mistakes/fork).
|
||||||
3. Clone the repo you just forked to your computer.
|
3. Clone the repo you just forked and rename it.
|
||||||
4. Edit `_config.yml` to personalize your site.
|
4. Edit `_config.yml` to personalize your site.
|
||||||
5. Check out the sample posts in `_posts` to see examples for pulling in large feature images, tags, and other YAML data.
|
5. Check out the sample posts in `_posts` to see examples for pulling in large feature images, assigning categories and tags, and other YAML data.
|
||||||
6. Read the documentation below for further customization pointers and documentation.
|
6. Read the documentation below for further customization pointers and documentation.
|
||||||
|
|
||||||
[Demo the Theme](http://mmistakes.github.io/minimal-mistakes)
|
[Demo the Theme](http://mmistakes.github.io/minimal-mistakes/archive/master.zip)
|
||||||
|
|
||||||
**Pro-tip:** Delete the `gh-pages` branch after cloning and start fresh by branching off `master`. There is a bunch of garbage in `gh-pages` used for the theme's demo site that I'm guessing you don't want on your site.
|
**Pro-tip:** Delete the `gh-pages` branch after cloning and start fresh by branching off `master`. There is a bunch of garbage in `gh-pages` used for the theme's demo site that I'm guessing you don't want on your site.
|
||||||
|
|
||||||
|
|
88
Rakefile.rb
Normal file
88
Rakefile.rb
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
require "rubygems"
|
||||||
|
require "bundler/setup"
|
||||||
|
require "stringex"
|
||||||
|
|
||||||
|
## -- Config -- ##
|
||||||
|
|
||||||
|
posts_dir = "_posts" # directory for blog files
|
||||||
|
new_post_ext = "md" # default new post file extension when using the new_post task
|
||||||
|
new_page_ext = "md" # default new page file extension when using the new_page task
|
||||||
|
|
||||||
|
|
||||||
|
#############################
|
||||||
|
# Create a new Post or Page #
|
||||||
|
#############################
|
||||||
|
|
||||||
|
# usage rake new_post
|
||||||
|
desc "Create a new post in #{posts_dir}"
|
||||||
|
task :new_post, :title do |t, args|
|
||||||
|
if args.title
|
||||||
|
title = args.title
|
||||||
|
else
|
||||||
|
title = get_stdin("Enter a title for your post: ")
|
||||||
|
end
|
||||||
|
filename = "#{posts_dir}/#{Time.now.strftime('%Y-%m-%d')}-#{title.to_url}.#{new_post_ext}"
|
||||||
|
if File.exist?(filename)
|
||||||
|
abort("rake aborted!") if ask("#{filename} already exists. Do you want to overwrite?", ['y', 'n']) == 'n'
|
||||||
|
end
|
||||||
|
tags = get_stdin("Enter tags to classify your post (comma separated): ")
|
||||||
|
puts "Creating new post: #{filename}"
|
||||||
|
open(filename, 'w') do |post|
|
||||||
|
post.puts "---"
|
||||||
|
post.puts "layout: post"
|
||||||
|
post.puts "title: \"#{title.gsub(/&/,'&')}\""
|
||||||
|
post.puts "modified: #{Time.now.strftime('%Y-%m-%d %H:%M:%S %z')}"
|
||||||
|
post.puts "tags: [#{tags}]"
|
||||||
|
post.puts "image:"
|
||||||
|
post.puts " feature: "
|
||||||
|
post.puts " credit: "
|
||||||
|
post.puts " creditlink: "
|
||||||
|
post.puts "comments: "
|
||||||
|
post.puts "share: "
|
||||||
|
post.puts "---"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# usage rake new_page
|
||||||
|
desc "Create a new page"
|
||||||
|
task :new_page, :title do |t, args|
|
||||||
|
if args.title
|
||||||
|
title = args.title
|
||||||
|
else
|
||||||
|
title = get_stdin("Enter a title for your page: ")
|
||||||
|
end
|
||||||
|
filename = "#{title.to_url}.#{new_page_ext}"
|
||||||
|
if File.exist?(filename)
|
||||||
|
abort("rake aborted!") if ask("#{filename} already exists. Do you want to overwrite?", ['y', 'n']) == 'n'
|
||||||
|
end
|
||||||
|
tags = get_stdin("Enter tags to classify your page (comma separated): ")
|
||||||
|
puts "Creating new page: #{filename}"
|
||||||
|
open(filename, 'w') do |page|
|
||||||
|
page.puts "---"
|
||||||
|
page.puts "layout: page"
|
||||||
|
page.puts "permalink: /#{title.to_url}/"
|
||||||
|
page.puts "title: \"#{title}\""
|
||||||
|
page.puts "modified: #{Time.now.strftime('%Y-%m-%d %H:%M')}"
|
||||||
|
page.puts "tags: [#{tags}]"
|
||||||
|
page.puts "image:"
|
||||||
|
page.puts " feature: "
|
||||||
|
page.puts " credit: "
|
||||||
|
page.puts " creditlink: "
|
||||||
|
page.puts "share: "
|
||||||
|
page.puts "---"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_stdin(message)
|
||||||
|
print message
|
||||||
|
STDIN.gets.chomp
|
||||||
|
end
|
||||||
|
|
||||||
|
def ask(message, valid_options)
|
||||||
|
if valid_options
|
||||||
|
answer = get_stdin("#{message} #{valid_options.to_s.gsub(/"/, '').gsub(/, /,'/')} ") while !valid_options.include?(answer)
|
||||||
|
else
|
||||||
|
answer = get_stdin(message)
|
||||||
|
end
|
||||||
|
answer
|
||||||
|
end
|
|
@ -22,13 +22,23 @@ image:
|
||||||
|
|
||||||
General notes and suggestions for customizing Minimal Mistakes.
|
General notes and suggestions for customizing Minimal Mistakes.
|
||||||
|
|
||||||
## Basic Setup
|
## Basic Setup for a new Jekyll site
|
||||||
|
|
||||||
1. [Install Jekyll](http://jekyllrb.com) if you haven't already.
|
1. [Install Bundler](http://bundler.io) `gem install bundler` and then install [Jekyll](http://jekyllrb.com) and all dependencies `bundle install`.
|
||||||
2. Fork the [Minimal Mistakes repo](http://github.com/mmistakes/minimal-mistakes/)
|
2. Fork the [Minimal Mistakes repo](http://github.com/mmistakes/minimal-mistakes/fork).
|
||||||
3. Make it your own and customize, customize, customize.
|
3. Clone the repo you just forked and rename it.
|
||||||
|
4. Edit `_config.yml` to personalize your site.
|
||||||
|
5. Check out the sample posts in `_posts` to see examples for pulling in large feature images, assigning categories and tags, and other YAML data.
|
||||||
|
6. Read the documentation below for further customization pointers and documentation.
|
||||||
|
|
||||||
<a markdown="0" href="http://github.com/mmistakes/minimal-mistakes" class="btn">Minimal Mistakes on GitHub</a>
|
<div markdown="0"><a href="https://github.com/mmistakes/minimal-mistakes/archive/master.zip" class="btn">Download the Theme</a></div>
|
||||||
|
|
||||||
|
**Pro-tip:** Delete the `gh-pages` branch after cloning and start fresh by branching off `master`. There is a bunch of garbage in `gh-pages` used for the theme's demo site that I'm guessing you don't want on your site.
|
||||||
|
{: .notice}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Folder Structure
|
||||||
|
|
||||||
{% highlight text %}
|
{% highlight text %}
|
||||||
minimal-mistakes/
|
minimal-mistakes/
|
||||||
|
@ -97,7 +107,19 @@ links:
|
||||||
|
|
||||||
### Adding Posts and Pages
|
### Adding Posts and Pages
|
||||||
|
|
||||||
There are two main content layouts: *post.html* (for posts) and *page.html* (for pages). Both have large **feature images** that span the full-width of the screen, and both are meant for long form articles and blog posts.
|
There are two main content layouts: *post.html* (for posts) and *page.html* (for pages). Both have large **feature images** that span the full-width of the screen, and both are meant for long form articles and blog posts.
|
||||||
|
|
||||||
|
There are two rake tasks that can be used to create a new post or page with all YAML Front Matter. Using either `rake new_post` or `rake new_page` will prompt you for a title and tags to classify them. Example below:
|
||||||
|
|
||||||
|
{% highlight bash %}
|
||||||
|
rake new_post
|
||||||
|
|
||||||
|
Enter a title for your post: My Awesome Post
|
||||||
|
Enter tags to classify your post (comma separated): web development, code
|
||||||
|
Creating new post: _posts/2014-02-10-my-awesome-post.md
|
||||||
|
{% endhighlight %}
|
||||||
|
|
||||||
|
There are a few configuration variables that can be changed in `Rakefile.rb`. By default posts and pages will be created in MarkDown using the `.md` extension.
|
||||||
|
|
||||||
#### Feature Images
|
#### Feature Images
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue