# Complete rake tasks script for bash # Save it somewhere and then add # complete -C path/to/script -o default rake # to your ~/.bashrc # Nicholas Seckar # Saimon Moore exit 0 unless File.file?(File.join(Dir.pwd, 'Rakefile')) exit 0 unless /^rake(?:\s+([-\w:]+))?\s*$/ =~ ENV["COMP_LINE"] task_match = $1 tasks = `rake --tasks`.split("\n")[1..-1].collect {|line| line.split[1]} tasks = tasks.select {|t| /^#{Regexp.escape task_match}/ =~ t} if task_match if task_match=~ /:/ tasks = tasks.collect {|t| (t =~ /([-\w]+):([-\w]+)$/) ? "#{$2}" : t} end puts tasks exit 0