Skip to content

Instantly share code, notes, and snippets.

@kejadlen
Created July 28, 2012 02:39
Show Gist options
  • Save kejadlen/3191489 to your computer and use it in GitHub Desktop.
Save kejadlen/3191489 to your computer and use it in GitHub Desktop.
desc 'Create a new draft'
task 'draft' do |t|
page, title, dir = Webby::Builder.new_page_info
title = Webby.site.args.raw[0] # undo the titlecasing
raise "Don't specify a directory for a blog post!" unless dir.empty?
page = File.join(Webby.site.draft_dir, File.basename(page))
page = Webby::Builder.create(page,
:from => File.join(Webby.site.template_dir, 'blog', 'draft.erb'),
:locals => {
:title => title,
:directory => Webby.site.draft_dir })
Webby.exec_editor(page)
end
desc 'Publish a draft'
task 'publish_draft' do |t|
site = Webby.site
draft = site.args.raw[0]
drafts = Dir["#{site.content_dir}/#{site.draft_dir}/*#{draft}*.txt"]
raise "No drafts matching '#{draft}'" if drafts.empty?
raise "Found multiple drafts matching '#{draft}': #{drafts.map {|d| File.basename(d) }.join(', ')}" if drafts.size > 1
# drafts.size == 1
draft = drafts[0]
draft = Webby::Resources::Page.new(draft)
now = Time.now
year = now.strftime('%Y')
month = now.strftime('%m')
day = now.strftime('%d')
dir = File.join(Webby.site.blog_dir, year, month, day)
page = File.join(dir, draft.name)
page = Webby::Builder.create(page,
:from => File.join(Webby.site.template_dir, 'blog', 'post.erb'),
:locals => {
:title => draft._meta_data['title'],
:directory => dir,
:created_at => now.to_y,
:body => draft._read })
Logging::Logger['Webby'].info "deleting #{draft.path}"
FileUtils.rm(draft.path)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment