Skip to content

Commit

Permalink
Add Rake tasks support
Browse files Browse the repository at this point in the history
Created Rakefile and added support for post creation through Rake command "task".

closes kronik3r#7
  • Loading branch information
victorbarbu committed Feb 12, 2016
1 parent aa56db8 commit 4e4c183
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
require "rubygems"
require 'rake'
require 'yaml'
require 'time'

SOURCE = "."
CONFIG = {
'version_file' => File.join(SOURCE, '_version.yml'),
'layouts' => File.join(SOURCE, '_layouts'),
'posts' => File.join(SOURCE, '_posts'),
'post_ext' => 'md',
}

def agree?(message)
valid_options = [ 'y', 'n' ]
answer = get_stdin("#{message} ").downcase[0]

if answer == 'y'
true
else
false
end
end

def get_stdin(message)
print message

STDIN.gets.chomp
end

desc "Begin a new post in #{CONFIG['posts']}"
task :post do
abort("rake aborted: '#{CONFIG['posts']}' directory not found.") unless FileTest.directory?(CONFIG['posts'])
title = ENV["title"] || "new-post"
tags = ENV["tags"] || "[]"
slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')

begin
date = (ENV['date'] ? Time.parse(ENV['date']) : Time.now).strftime('%Y-%m-%d')
rescue => e
puts "Error - date format must be YYYY-MM-DD, please check you typed it correctly!"
exit -1
end

filename = File.join(CONFIG['posts'], "#{date}-#{slug}.#{CONFIG['post_ext']}")
if File.exists?(filename)
abort('Rake task aborted.') if agree?("#{filename} already exists. Do you want to override it?") == false
end

puts "Creating a new post: #{filename}..."
open(filename, 'w') do |post|
post.puts "---"
post.puts "layout: post"
post.puts "title: \"#{title.gsub(/-/,' ')}\""
post.puts 'description: ""'
post.puts "---"
post.puts ""
post.puts "Please edit this post!"
end
if File.size(filename) > 0
puts "Successfully created post file. Go edit it now!"
end
end

0 comments on commit 4e4c183

Please sign in to comment.