Skip to content

Instantly share code, notes, and snippets.

@haileys
Created December 27, 2010 01:59
Show Gist options
  • Save haileys/755801 to your computer and use it in GitHub Desktop.
Save haileys/755801 to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby
require '/onramp/bootstrap.rb'
def say(s)
puts "\e[1m#{s}"
end
module Cmdlets
class Add
def self.validate(u, p)
u && p
end
def self.usage
"username password"
end
def self.run(u, p)
User.create! :username => u, :password => p
say "Added new user: #{u}"
end
end
class Default
def self.run
say "Usage: onramp_user cmdlet [args...]\n\n"
say "Cmdlets:"
(Cmdlets.constants - [:Default]).each do |cmdlet|
say " onramp_user #{cmdlet.downcase} #{Cmdlets.const_get(cmdlet).respond_to?(:usage) ? Cmdlets.const_get(cmdlet).usage : ""}"
end
end
end
def self.const_missing(cmdlet)
say "Unknown cmdlet '#{cmdlet}'\e[0m"
exit
end
end
cmdlet = Cmdlets.const_get(ARGV.first ? ARGV.first.capitalize.to_sym : :Default)
args = ARGV[1, ARGV.length-1]
if cmdlet.respond_to?(:validate) && (cmdlet.method(:validate).arity > args.length || !cmdlet.validate(*args))
say "Usage: onramp_user #{ARGV.first.downcase} #{cmdlet.usage} \e[0m"
exit
end
cmdlet.run(*args)
puts "\e[0m"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment