Skip to content

delano/drydock

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code
This branch is 94 commits ahead of bmizerany:master.

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
bin
 
 
lib
 
 
 
 
 
 
 
 
 
 

Drydock - v0.6

Build seaworthy command-line apps like a Captain with a powerful Ruby DSL.

Overview

Drydock is a seaworthy DSL for building really powerful command line applications. The core class is contained in a single .rb file so it’s easy to copy directly into your project. See below for examples.

Install

One of:

  • gem install drydock

  • copy lib/drydock.rb into your lib directory.

Or for GitHub fans:

  • git clone git://github.com/delano/drydock.git

  • gem install delano-drydock

Examples

See bin/example for more.

require 'drydock'
extend Drydock

default :welcome

before do
# You can execute a block before the requests command is executed. Instance
# variables defined here will be available to all commands.
end

about "A friendly welcome to the Drydock"
command :welcome do
  puts "Welcome to Drydock."
  puts "For available commands:"
  puts "#{$0} show-commands"
end

usage "USAGE: #{$0} laugh [-f]"
about "The captain commands his crew to laugh"
option :f, :faster, "A boolean value. Go even faster!"
command :laugh do |obj|
# +obj+ is an instance of Drydock::Command. The options you define are available
# via obj.option.name

  answer = !obj.option.faster ? "Sort of" : "Yes! I'm literally laughing as fast as possible."

  puts "Captain Stubing: Are you laughing?"
  puts "Dr. Bricker: " << answer
end

class JohnWestSmokedOysters < Drydock::Command 
  # You can write your own command classes by inheriting from Drydock::Command
  # and referencing it in the command definition.
  def ahoy!; p "matey"; end
end

about "Do something with John West's Smoked Oysters"
command :oysters => JohnWestSmokedOysters do |obj|
  p obj  # => #<JohnWestSmokedOysters:0x42179c ... >
end

about "My way of saying hello!"
command :ahoy! => JohnWestSmokedOysters
# If you don't provide a block, Drydock will call JohnWestSmokedOysters#ahoy!

Drydock.run!

More Information

Thanks

Credits

  • Delano Mandelbaum (delano@solutious.com)

  • Bernie Kopell (bernie@solutious.com)

License

See LICENSE.txt

About

Build seaworthy command-line apps like a Captain with a powerful Ruby DSL.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 100.0%