Sometimes getting started can be the hard part. This applies to writing posts here in Jekyll (the framework I use to maintain this site). To make it even easier, I wrote a script that creates basic posts for you.
Use it like this:
{% highlight bash %} $ newpost --title "Post title goes here" {% endhighlight %}
Code below:
{% highlight ruby %}
!/usr/bin/env ruby
require 'optparse'
options = { :subdir => "_posts" }
parsed = OptionParser.new do |opts| opts.banner = 'Usage: newpost --title "post title" [options]'
opts.on("-t", "--title TITLE") do |t| options[:title] = t options[:slug] = t.strip.downcase.gsub(/ /, '-') end
opts.on("-d", "--draft", "Create new post in drafts") do options[:subdir] = "drafts" end end.parse!
if options[:title].nil? or options[:title].strip == "" puts "Need post title. Specify using --title" exit 2 end
now = Time.now dateprefix = now.strftime("%Y-%m-%d") jekylldir = File.dirname(File.expandpath('.', _dir_)) postsdir = File.join(jekylldir, options[:subdir]) post = File.join(postsdir, "#{date_prefix}-#{options[:slug]}.md")
if File.exist?(post) puts "File already exists." exit 1 end
header = <<-END
date: #{now.strftime("%Y-%m-%d %H:%M:%S%z")} layout: post slug: "#{options[:slug]}" title: #{options[:title]} description:
tags:
h1. {{ page.title }} END
File.open(post, 'w') do |f| f << header end
editor = ENV['EDITOR'] unless editor puts "Created new post: \n#{post}" else system(editor, post) end {% endhighlight %}