Deployer\Stage\StageStrategy::getServers PHP Method

getServers() public method

public getServers ( $stage )
    public function getServers($stage)
    {
        $servers = [];
        // Get a default stage (if any) if no stage given
        if (empty($stage)) {
            $stage = $this->getDefaultStage();
        }
        if (!empty($stage)) {
            // Look for servers which has in set `stages` current stage name.
            foreach ($this->environments as $name => $env) {
                // If server does not have any stage category, skip them
                if (in_array($stage, $env->get('stages', []), true)) {
                    $servers[$name] = $this->servers->get($name);
                }
            }
            // If still is empty, try to find server by name.
            if (empty($servers)) {
                if ($this->servers->has($stage)) {
                    $servers = [$stage => $this->servers->get($stage)];
                } else {
                    // Nothing found.
                    throw new \RuntimeException("Stage or server `{$stage}` was not found.");
                }
            }
        } else {
            // Otherwise run on all servers what does not specify stage.
            foreach ($this->environments as $name => $env) {
                if (!$env->has('stages')) {
                    $servers[$name] = $this->servers->get($name);
                }
            }
        }
        if (empty($servers)) {
            if (count($this->servers) === 0) {
                $local = new Local();
                $this->environments['localhost'] = new Environment();
                $servers = ['localhost' => $local];
            } else {
                throw new \RuntimeException('You need to specify at least one server or stage.');
            }
        }
        return $servers;
    }

Usage Example

Beispiel #1
0
 public function testByServerName()
 {
     $servers = new ServerCollection();
     $servers['one'] = new \stdClass();
     $environments = new EnvironmentCollection();
     $environments['one'] = $env = new Environment();
     $stage = new StageStrategy($servers, $environments);
     $this->assertEquals(['one' => $servers['one']], $stage->getServers('one'));
 }