Class: VagrantPlugins::Group::Command

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

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.synopsis ⇒ Object



5
6
7
# File 'lib/vagrant-group/command.rb', line 5

def self.synopsis
  "runs vagrant command on specific group of VMs"
end

Instance Method Details

#execute ⇒ Object

self.synopsis



9
10
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
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/vagrant-group/command.rb', line 9

def execute
  options = {}
  opts = OptionParser.new do |o|
    o.banner = 'Usage: vagrant group <group-name> <up|halt|destroy|provision|hosts>'
    o.separator ''

    o.on('-h', '--help', 'Print this help') do
      safe_puts(opts.help)
    end
  end

  argv = parse_options(opts)

  group, action = argv[0], argv[1]

  if !group || !action || !['up', 'halt', 'destroy', 'provision', 'hosts'].include?(action)
    safe_puts(opts.help)
    return nil
  end

  if action == 'hosts'
    @env.ui.info(sprintf('Hosts in %s group:', group))

    with_target_vms() do |machine|
      if machine.config.group.groups.has_key?(group)
        @env.ui.info(sprintf(' - %s', machine.name))
      elsif
        @env.ui.warn('No hosts associated.')
        break
      end
    end
  elsif
    with_target_vms() do |machine|
      if machine.config.group.groups.has_key?(group)
        if machine.config.group.groups[group].include? machine.name.to_s
          machine.action(action)
        end
      end
    end
  end
end