Class: VagrantPlugins::Rackspace::Command::Root

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant-rackspace/command/root.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(argv, env) ⇒ Root

Returns a new instance of Root.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/vagrant-rackspace/command/root.rb', line 11

def initialize(argv, env)
  @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)

  @subcommands = Vagrant::Registry.new
  @subcommands.register(:images) do
    require File.expand_path("../images", __FILE__)
    Images
  end
  @subcommands.register(:flavors) do
    require File.expand_path("../flavors", __FILE__)
    Flavors
  end
  @subcommands.register(:keypairs) do
    require File.expand_path("../keypairs", __FILE__)
    KeyPairs
  end
  @subcommands.register(:networks) do
    require File.expand_path("../networks", __FILE__)
    Networks
  end
  @subcommands.register(:servers) do
    require File.expand_path("../servers", __FILE__)
    Servers
  end

  super(argv, env)
end

Class Method Details

.synopsisObject



7
8
9
# File 'lib/vagrant-rackspace/command/root.rb', line 7

def self.synopsis
  "query Rackspace for available images or flavors"
end

Instance Method Details

#executeObject



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/vagrant-rackspace/command/root.rb', line 39

def execute
  if @main_args.include?("-h") || @main_args.include?("--help")
    # Print the help for all the rackspace commands.
    return help
  end

  command_class = @subcommands.get(@sub_command.to_sym) if @sub_command
  return help if !command_class || !@sub_command
  @logger.debug("Invoking command class: #{command_class} #{@sub_args.inspect}")

  # Initialize and execute the command class
  command_class.new(@sub_args, @env).execute
end

#helpObject



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/vagrant-rackspace/command/root.rb', line 53

def help
  opts = OptionParser.new do |opts|
    opts.banner = "Usage: vagrant rackspace <subcommand> [<args>]"
    opts.separator ""
    opts.separator "Available subcommands:"

    # Add the available subcommands as separators in order to print them
    # out as well.
    keys = []
    @subcommands.each { |key, value| keys << key.to_s }

    keys.sort.each do |key|
      opts.separator "     #{key}"
    end

    opts.separator ""
    opts.separator "For help on any individual subcommand run `vagrant rackspace <subcommand> -h`"
  end

  @env.ui.info(opts.help, :prefix => false)
end