-
-
Save imathis/2219214 to your computer and use it in GitHub Desktop.
desc "Edit a post (defaults to most recent)" | |
task :edit_post, :title do |t, args| | |
args.with_defaults(:title => false) | |
posts = Dir.glob("#{source_dir}/#{posts_dir}/*.*") | |
post = (args.title) ? post = posts.keep_if {|post| post =~ /#{args.title}/}.last : posts.last | |
if post | |
puts "Opening #{post} with #{editor}..." | |
system "#{ENV['EDITOR']} #{post} &" | |
else | |
puts "No posts were found with \"#{args.title}\" in the title." | |
end | |
end |
@imathis Weird...I just have to hit Enter a time or two to get back to a clean prompt.
I believe that this would be a worthwhile addition. It doesn't take away the user's ability to run things manually if they still want to, but it could be welcome functionality for other users. Note that I am in the group of users for which this probably wouldn't work: within the _posts directory I have a directory called "published" for all my published things, and a "drafts" folder for all my drafts. I made a small hack to 'rake isolate' to handle directories. But since I keep all my work-in-progress in a separate folder--and since I don't have a ton of drafts--I don't have to wade through a bunch of extraneous posts to find what I want to work on. But I still think this would be a good idea, if it can be implemented correctly.
Pesonally I added a task to my Rakefile:
desc "Open newly generated post in Emacs"
task :edit, :filename do |t, args|
puts "Opening post in Emacs"
`emacsclient -n #{args.filename}`
end
You could replace emacsclient -n
with an editor variable at the top of the Rakefile
(like ssh_user
or deploy_branch
). Also adding the globbing as a default if there is no args.filename
would be easy, but personally I modified new_post
and added Rake::Task["edit"].invoke(filename)
.
I have this hacked up in my .bashrc (dirty, but it works...)
pedit() { find source/_posts/ -name "*$1*" -exec $EDITOR {} \; ;}