class Commands::Plugin

Attributes

environment[R]
script_name[R]
sources[R]

Public Class Methods

new() click to toggle source
# File lib/commands/plugin/commands.rb, line 8
def initialize
  @environment = RailsEnvironment.default
  @rails_root = RailsEnvironment.default.root
  @script_name = File.basename($0) 
  @sources = []
end
parse!(args=ARGV) click to toggle source
# File lib/commands/plugin/commands.rb, line 116
def self.parse!(args=ARGV)
  Plugin.new.parse!(args)
rescue NoMethodError
  puts "Error: RaPT currently does not work outside of a Rails application directory.  Please change to the top level of a Rails application and try again."
end

Public Instance Methods

environment=(value) click to toggle source
# File lib/commands/plugin/commands.rb, line 15
def environment=(value)
  @environment = value
  RailsEnvironment.default = value
end
options() click to toggle source
# File lib/commands/plugin/commands.rb, line 20
def options
  OptionParser.new do |o|
    o.set_summary_indent('  ')
    o.banner =    "Usage: #{@script_name} [OPTIONS] command"
    o.define_head "Rails plugin manager."
    
    o.separator ""        
    o.separator "GENERAL OPTIONS"
    
    o.on("-r", "--root=DIR", String,
         "Set an explicit rails app directory.",
         "Default: #{@rails_root}") { |@rails_root| self.environment = RailsEnvironment.new(@rails_root) }
    o.on("-s", "--source=URL1,URL2", Array,
         "Use the specified plugin repositories instead of the defaults.") { |@sources|}
    
    o.on("-v", "--verbose", "Turn on verbose output.") { |$verbose| }
    o.on("-h", "--help", "Show this help message.") { puts o; exit }
    
    o.separator ""
    o.separator "COMMANDS"
    
    o.separator "  discover       Discover plugin repositories."
    o.separator "  list           List available plugins."
    o.separator "  search         Search for available plugins."
    o.separator "  about          Show basic info about a plugin."
    o.separator "  install        Install plugin(s) from known repositories or URLs."
    o.separator "  update         Update installed plugins."
    o.separator "  remove         Uninstall plugins."
    o.separator "  source         Add a plugin source repository."
    o.separator "  unsource       Remove a plugin repository."
    o.separator "  sources        List currently configured plugin repositories."
    o.separator "  pack:install   Install plugins from plugin pack file or URL"
    o.separator "  pack:uninstall Uninstall plugins from plugin pack file or URL"
    o.separator "  pack:about     Display plugin pack information"
    
    o.separator ""
    o.separator "EXAMPLES"
    o.separator "  Install a plugin:"
    o.separator "    #{@script_name} install continuous_builder\n"
    o.separator "  Install a plugin from a subversion URL:"
    o.separator "    #{@script_name} install http://dev.rubyonrails.com/svn/rails/plugins/continuous_builder\n"
    o.separator "  Install a plugin and add a svn:externals entry to vendor/plugins"
    o.separator "    #{@script_name} install -x continuous_builder\n"
    o.separator "  Show information about the acts_as_chunky_bacon plugin:"
    o.separator "    #{@script_name} about acts_as_chunky_bacon\n"
    o.separator "  List all available plugins:"
    o.separator "    #{@script_name} list\n"
    o.separator "  List plugins in the specified repository:"
    o.separator "    #{@script_name} list --source=http://dev.rubyonrails.com/svn/rails/plugins/\n"
    o.separator "  Search available plugins:"
    o.separator "    #{@script_name} search \"authentication\"\n"
    o.separator "  Discover and prompt to add new repositories:"
    o.separator "    #{@script_name} discover\n"
    o.separator "  Discover new repositories but just list them, don't add anything:"
    o.separator "    #{@script_name} discover -l\n"
    o.separator "  Add a new repository to the source list:"
    o.separator "    #{@script_name} source http://dev.rubyonrails.com/svn/rails/plugins/\n"
    o.separator "  Remove a repository from the source list:"
    o.separator "    #{@script_name} unsource http://dev.rubyonrails.com/svn/rails/plugins/\n"
    o.separator "  Show currently configured repositories:"
    o.separator "    #{@script_name} sources\n"        
    o.separator "  Show the options for the list command:"
    o.separator "    #{@script_name} list -h\n"
    o.separator "  Install a plugin pack:"
    o.separator "    #{@script_name} pack:install http://opensource.agileevolved.com/pluginpacks/standard.pluginpack\n"
    o.separator "  View plugin pack meta data:"
    o.separator "    #{@script_name} pack:about http://opensource.agileevolved.com/pluginpacks/standard.pluginpack\n"
  end
end
parse!(args=ARGV) click to toggle source
# File lib/commands/plugin/commands.rb, line 90
def parse!(args=ARGV)
  general, sub = split_args(args)
  options.parse!(general)
  
  command = general.shift
  if command =~ /^(list|discover|install|source|unsource|sources|remove|update|about|search)$/
    command = Commands.const_get(command.capitalize).new(self)
    command.parse!(sub)
  elsif command =~ /^(pack:install|pack:uninstall|pack:about)$/
    command_name = command.split(':')[1]
    command = Commands::Pack.const_get(command_name.capitalize).new(self)
    command.parse!(sub)
  else
    puts "Unknown command: #{command}"
    puts options
    exit 1
  end
end
split_args(args) click to toggle source
# File lib/commands/plugin/commands.rb, line 109
def split_args(args)
  left = []
  left << args.shift while args[0] and args[0] =~ /^-/
  left << args.shift if args[0]
  return [left, args]
end