Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to call Git or other command line tools from inside a Thor script?

I find that I'm often running a sequence of routine 'cleanup' tasks before and after I make a git commit for my Rails 3 app.

I was thinking about putting these things into a Thor script, but one thing I haven't been able to figure out is how to use Thor (or Rake) to call other tools on the system.

Is it possible to call a command like git log from a Thor or Rake script, and if so what does that look like?

Thanks!

like image 647
Andrew Avatar asked Jan 26 '11 06:01

Andrew


2 Answers

Just shell out:

result = %x(git log)
puts result

or

system('git log')

if you just want to pass the output to the terminal.

There is also the grit gem that abstracts the Git tools into a Ruby library:

require 'grit'
repo = Grit::Repo.new("/path/to/repo")
repo.commits.each do |commit|
  puts "#{commit.id}: #{commit.message}"
end
like image 69
Theo Avatar answered Sep 30 '22 12:09

Theo


Don't forget that those are just Ruby files, so you can use everything in the Ruby arsenal there as well, so things like %x[rm -rf /], system("rm -rf /") and `rm -rf /` are accessible in those scripts too.

like image 38
psyho Avatar answered Sep 30 '22 13:09

psyho