From 4e4c183c09f675757c2a4e703e8b06d9af7868be Mon Sep 17 00:00:00 2001 From: victorbarbu Date: Fri, 12 Feb 2016 22:44:45 +0200 Subject: [PATCH] Add Rake tasks support Created Rakefile and added support for post creation through Rake command "task". closes #7 --- Rakefile | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 Rakefile diff --git a/Rakefile b/Rakefile new file mode 100644 index 00000000..d1a60b8a --- /dev/null +++ b/Rakefile @@ -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 \ No newline at end of file