faded picture of luke
a semi-random photo | click for the full photo gallery
click to browse photos
homepage navigation

Luke Melia

March 27, 2008

Tracks 1.5 is out

We released Tracks 1.5 today. Tracks is the open source Rails app for implementing the Getting Things Done system. I contributed heavily to this app in the too-long time since the last stable release. Big kudos and thanks go to Reinier Balt in the Netherlands, who contributed some great statistical visualizations and generally ran the project the past few months while bsag and I have been busy with out professional commitments.

Anyway, lots of great changes since 1.043. Check it out and let us know what you think.

March 10, 2008

capistrano task autocompletion for bash

Remembering all those capistrano tasks can be tough for the sleep-impaired startup employee.... Help yourself out with this autocomplete script:

RUBY:
  1. #!/usr/bin/env ruby
  2.  
  3. # Save this somewhere, chmod 755 it, then add
  4. #   complete -C path/to/this/script -o default cap
  5. # to your ~/.bashrc
  6. #
  7. # If you update your tasks, just $ rm ~/.captabs*
  8. #
  9.  
  10. exit 0 unless /^cap\b/ =~ ENV["COMP_LINE"]
  11.  
  12. def cap_silent_tasks
  13.   if File.exists?(dotcache = File.join(File.expand_path('~'), ".captabs-#{Dir.pwd.hash}"))
  14.     File.read(dotcache)
  15.   else
  16.     tasks = `cap -qT`
  17.     tasks = tasks.select{|task| task =~ /^cap/ }.join
  18.     File.open(dotcache, 'w') { |f| f.puts tasks }
  19.     tasks
  20.   end
  21. end
  22.  
  23. after_match = $'
  24. task_match = (after_match.empty? || after_match =~ /\s$/) ? nil : after_match.split.last
  25. tasks = cap_silent_tasks.split("\n")[1..-1].map { |line| line.split[1] }
  26. tasks = tasks.select { |t| /^#{Regexp.escape task_match}/ =~ t } if task_match
  27.  
  28. # handle namespaces
  29. if task_match =~ /^([-\w:]+:)/
  30.   upto_last_colon = $1
  31.   after_match = $'
  32.   tasks = tasks.map { |t| (t =~ /^#{Regexp.escape upto_last_colon}([-\w:]+)$/) ? "#{$1}" : t }
  33. end
  34.  
  35. puts tasks
  36. exit 0

LukeMelia.com created 1999. ··· Luke Melia created 1976. ··· Live With Passion!
Luke Melia on software development freelance web development how to contact me Luke Melia, Software Developer letters and more from my travels photo gallery personal philosophy