This repository has been archived by the owner on Nov 17, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathRakefile
executable file
·125 lines (108 loc) · 3.58 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
require "rubygems"
require 'rake'
require 'yaml'
require 'time'
require 'open-uri'
require 'RMagick'
require "digest/md5"
SOURCE = "."
CONFIG = {
'version' => "0.3.0",
'layouts' => File.join(SOURCE, "_layouts"),
'posts' => File.join(SOURCE, "_posts"),
'post_ext' => "md",
'theme_package_version' => "0.1.0"
}
###
# Based on jekyll-bootstrap's Rakefile.
# Thanks, @plusjade
# https://github.com/plusjade/jekyll-bootstrap
###
# Usage: rake post title="A Title" [date="2012-02-09"]
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"
slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
begin
date = (ENV['date'] ? Time.parse(ENV['date']) : Time.now).strftime('%Y-%m-%d')
rescue Exception => 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}.md")
if File.exist?(filename)
abort("rake aborted!") if ask("#{filename} already exists. Do you want to overwrite?",
['y', 'n']) == 'n'
end
puts "Creating new post: #{filename}"
open(filename, 'w') do |post|
post.puts "---"
post.puts "layout: post"
post.puts "title: \"#{title.gsub(/-/,' ')}\""
post.puts "category: posts"
post.puts "tags: []"
post.puts "categories: []"
post.puts "published: false"
post.puts "tweetfb: true"
post.puts "disqus: true"
post.puts "---"
end
end # task :post
# Usage: rake page name="about.html"
# You can also specify a sub-directory path.
# If you don't specify a file extention we create an index.html at the path specified
desc "Create a new page."
task :page do
name = ENV["name"] || "new-page.md"
filename = File.join(SOURCE, "#{name}")
filename = File.join(filename, "index.html") if File.extname(filename) == ""
title = File.basename(filename, File.extname(filename)).gsub(/[\W\_]/, " ").gsub(/\b\w/){$&.upcase}
if File.exist?(filename)
abort("rake aborted!") if ask("#{filename} already exists. Do you want to overwrite?", ['y', 'n']) == 'n'
end
mkdir_p File.dirname(filename)
puts "Creating new page: #{filename}"
open(filename, 'w') do |post|
post.puts "---"
post.puts "layout: page"
post.puts "title: \"#{title}\""
post.puts 'description: ""'
post.puts "---"
end
end # task :page
desc "Launch preview environment"
task :preview do
system "jekyll serve"
end # task :preview
desc "Update icons based on your gravatar (define author email in _config.yml)!"
task :icons do
puts "Getting author email from _config.yml..."
config = YAML.load_file('_config.yml')
author_email = config['author']['email']
gravatar_id = Digest::MD5.hexdigest(author_email)
base_url = "http://www.gravatar.com/avatar/#{gravatar_id}?s=150"
origin = "origin.png"
File.delete origin if File.exist? origin
puts "Downloading base image file from gravatar..."
open(origin, 'wb') do |file|
file << open(base_url).read
end
name_pre = "apple-touch-icon-%dx%d-precomposed.png"
FileList["*apple-touch-ico*.png"].each do |img|
File.delete img
end
FileList["*favicon.ico"].each do |img|
File.delete img
end
puts "Creating favicon.ico..."
Magick::Image::read(origin).first.resize(16, 16).write("favicon.ico")
[144, 114, 72, 57].each do |size|
puts "Creating #{name_pre} icon..." % [size, size]
Magick::Image::read(origin).first.resize(size, size).
write(name_pre % [size, size])
end
puts "Cleaning up..."
File.delete origin
end