Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
A scripting framework that replaces rake and sake
Ruby
branch: master

This branch is 1 commit ahead, 1235 commits behind erikhuda:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bin
lib
script
spec
.autotest
LICENSE
README.markdown
Rakefile
Thorfile
task.thor

README.markdown

thor

Map options to a class. Simply create a class with the appropriate annotations, and have options automatically map to functions and parameters.

Examples:

class MyApp
  extend Thor                                                           # [1]

  map "-L" => :list                                                       # [2]

  desc "install APP_NAME", "install one of the available apps"            # [3]
  method_options :force => :boolean                                       # [4]
  def install(name, opts)
    ... code ...
    if opts[:force]
      # do something
    end
  end

  desc "list [SEARCH]", "list all of the available apps, limited by SEARCH"
  def list(search = "")
    # list everything
  end

end

MyApp.start

Thor automatically maps commands as follows:

app install name --force

That gets converted to:

MyApp.new.install("name", :force => true)

[1] Use extend Thor to turn a class into an option mapper

[2] Map additional non-valid identifiers to specific methods. In this case, convert -L to :list

[3] Describe the method immediately below. The first parameter is the usage information, and the second parameter is the description.

[4] Provide any additional options. These will be marshaled from -- and - params. In this case, a --force and a -f option is added.

Types for method_options

:boolean
true if the option is passed
:required
A key/value option that MUST be provided
:optional
A key/value option that MAY be provided
Something went wrong with that request. Please try again.