Class: VagrantPlugins::ProfitBricks::Command::Root

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(argv, env) ⇒ Root

Returns a new instance of Root.



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
38
39
40
41
42
43
# File 'lib/vagrant-profitbricks/command/root.rb', line 13

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

  @subcommands = Vagrant::Registry.new

  @subcommands.register(:datacenters) do
    require File.expand_path('../datacenters', __FILE__)
    ListDatacenters
  end

  @subcommands.register(:locations) do
    require File.expand_path('../locations', __FILE__)
    ListLocations
  end

  @subcommands.register(:snapshots) do
    require File.expand_path('../snapshots', __FILE__)
    ListSnapshots
  end

  @subcommands.register(:flavors) do
    require File.expand_path('../flavors', __FILE__)
    ListFlavors
  end
  @subcommands.register(:images) do
    require File.expand_path('../images', __FILE__)
    ListImages
  end

  super(argv, env)
end

Class Method Details

.synopsisObject



9
10
11
# File 'lib/vagrant-profitbricks/command/root.rb', line 9

def self.synopsis
  I18n.t('vagrant_profitbricks.command.synopsis')
end

Instance Method Details

#executeObject



45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/vagrant-profitbricks/command/root.rb', line 45

def execute
  if @main_args.include?('-h') || @main_args.include?('--help')
    # Print the help for all the profitbricks 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



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/vagrant-profitbricks/command/root.rb', line 59

def help
  opts = OptionParser.new do |opts|
    opts.banner = 'Usage: vagrant profitbricks <subcommand> [<args>]'
    opts.separator ''
    opts.separator I18n.t('vagrant_profitbricks.command.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 I18n.t('vagrant_profitbricks.command.help_subcommands') +
                   ' `vagrant profitbricks <subcommand> -h`'
  end

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