====== What is Thor, and how do I use it? ====== It provides a clear structure for processing command line arguments, Thor is like ''[[http://rake.rubyforge.com|rake]]'' on steroids, with support for command line arguments, lack of a DSL in favor of plain old classes (''class Spoons < Thor''), system wide tasks (like ''[[http://errtheblog.com/posts/60-sake-bomb|sake]]''), and support for remote tasks. Yehuda Katz, Thor's author, has a [[http://yehudakatz.com/2008/05/12/by-thors-hammer/|great writeup]] on the hows and why of Thor. ===== Building your own thor tasks ===== # module: random class Amazing < Thor desc "describe NAME", "say that someone is amazing" method_options :forcefully => :boolean def describe(name) ret = "#{name} is amazing" puts options["forcefully"] ? ret.upcase : ret end desc "hello", "say hello" def hello puts "Hello" end end ===== Running your tasks ===== $ thor amazing:hello ===== Managing thor tasks ===== ==== Installing ==== $ thor install task.thor will install ''task.thor'' Thor file. You can also install thor tasks from a url: $ thor install http://merbivore.com/merb.thor In both cases, Thor will prompt you before installing the tasks. You can also have thor alias the task: $ thor install task.thor --as my_awesome_task ==== Updating ==== You can update installed tasks really easily: $ thor update my_awesome_task and Thor will remember where you got the task from, and redownload it. ==== Listing ===== You can get a list of all installed thor tasks on your system with: $ thor installed