-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRakefile
More file actions
101 lines (81 loc) · 2.59 KB
/
Rakefile
File metadata and controls
101 lines (81 loc) · 2.59 KB
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
task :default => 'jekyll:compile'
namespace :jekyll do
desc "Delete generated Jekyll files"
task :clean do
puts "Deleting generated Jekyll files..."
system "rm -rf _site"
system "rm -rf tags/*"
puts
end
desc "Start the Jekyll server"
task :server => [:clean, 'compass:compile'] do
system "jekyll --auto --server"
end
desc "Clean and compile Jekyll + Compass"
task :compile => [:clean, 'compass:compile', 'tags:generate'] do
system "jekyll"
end
end
namespace :compass do
desc "Run the Compass watch script"
task :watch do
system "compass watch"
end
desc "Compile SCSS files"
task :compile do
puts "Compiling SCSS files..."
system "compass compile --force"
puts
end
end
namespace :tags do
desc "Generate tags"
task :generate do
require 'erb'
require 'jekyll'
puts "Generating tags..."
# Read Jekyll site
options = Jekyll.configuration({})
site = Jekyll::Site.new(options)
site.read_posts('')
# Generate page for each tag
site.tags.each do |tag, posts|
# Fill out template
template = ERB.new( File.open("_templates/tag.erb", "r") { |f| f.read } )
html = template.result(binding)
# Write tagged post to tags dir
posts.each do |post|
post.write("tags/"+tag)
end
# Write template
File.open("tags/#{tag}/index.html", "w+") do |file|
file.puts(html)
end
end
end
end
namespace :post do
desc "Create a new post. Post directory defaults to '_posts'"
task :new, [:title, :dir] do |t, args|
require 'erb'
# Default args
args.with_defaults(:dir => "_posts")
puts "Creating new post..."
# Generate slug
slug = args.title.downcase.gsub(/[^a-z0-9]+/, '-').chomp('-')
# Filename must be in format YYYY-MM-DD-title.<extension>
now = Time.new.strftime("%F")
# Count number of posts for today, append to title to sort properly
count = Dir["#{args.dir}/#{now}*.md"].length
# Open default post template
template = ERB.new( File.open("_templates/post.erb", "r") { |f| f.read } )
post = template.result(binding)
# Write default post
filename = "#{now}-%02d-#{slug}.md" % count
File.open("#{args.dir}/#{filename}", "w+") do |file|
file.puts(post)
end
# Edit post
system "vim #{args.dir}/#{filename}"
end
end