Module: Smith::Commands::Common

Included in:
Agents, Group, Kill, List, Restart, Start, Stop
Defined in:
lib/smith/commands/common.rb

Instance Method Summary collapse

Instance Method Details

#agent_group(group) ⇒ Array<Class>

Returns the fully qualified class of all agents in a group. The group //must// be a sub-directory in the agents directory. Only sym-links are considered. The group directory is recursively searched and addeed to the ilst of agents for that group if it passed all checks.

Parameters:

  • group (String)

    the group name

Returns:

  • (Array<Class>)

    the class of each agent in the group

Raises:

  • (RuntimeError)


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/smith/commands/common.rb', line 14

def agent_group(group)
  agents = Smith.agent_directories.map do |agent_directory|
    group_directory = agent_directory.join(group)

    if group_directory.exist? && group_directory.directory?
      agents = Pathname.glob(group_directory.join("*.rb")).map(&:expand_path)

      agents.inject([]) do |acc, agent|
        if agent.symlink?
          expanded_agent_path = resolve_agent_path(group_directory, agent)
          acc << Utils.class_name_from_path(expanded_agent_path, agent_directory)
        end
      end
    else
      nil
    end
  end.uniq

  raise RuntimeError, "Group does not exist: #{group}" if agents == [nil]
  agents.compact.flatten
end