Banago\PHPloy\PHPloy::deploy PHP Метод

deploy() публичный Метод

Deploy (or list) changed files.
public deploy ( )
    public function deploy()
    {
        if ($this->listFiles) {
            $this->cli->lightYellow('LIST mode: No remote files will be modified.');
        }
        $this->checkSubmodules($this->repo);
        $this->prepareServers();
        // Exit with an error if the specified server does not exist in phploy.ini
        if ($this->server != '' && !array_key_exists($this->server, $this->servers)) {
            throw new \Exception("The server \"{$this->server}\" is not defined in {$this->iniFilename}.");
        }
        // Loop through all the servers in phploy.ini
        foreach ($this->servers as $name => $server) {
            $this->currentlyDeploying = $name;
            // If a server is specified, it's deployed only to that
            if ($this->server != '' && $this->server != $name) {
                continue;
            } elseif ($this->server == '' && $this->defaultServer == true && $name != 'default' && $this->deployAll == false) {
                continue;
            }
            $connection = new \Banago\PHPloy\Connection($server);
            $this->connection = $connection->server;
            if ($this->sync) {
                $this->dotRevision = $this->dotRevisionFilename;
                $this->setRevision();
                continue;
            }
            $files = $this->compare($this->revision);
            $this->cli->bold()->white()->out("\r\nSERVER: " . $name);
            if ($this->listFiles) {
                $this->listFiles($files[$this->currentlyDeploying]);
            } else {
                // Pre Deploy
                if (isset($this->preDeploy[$name]) && count($this->preDeploy[$name]) > 0) {
                    $this->preDeploy($this->preDeploy[$name]);
                }
                // Pre Deploy Remote
                if (isset($this->preDeployRemote[$name]) && count($this->preDeployRemote[$name]) > 0) {
                    $this->preDeployRemote($this->preDeployRemote[$name]);
                }
                // Push repository
                $this->push($files[$this->currentlyDeploying]);
                // Push Submodules
                if ($this->scanSubmodules && count($this->submodules) > 0) {
                    foreach ($this->submodules as $submodule) {
                        $this->repo = $submodule['path'];
                        $this->currentSubmoduleName = $submodule['name'];
                        $this->cli->gray()->out("\r\nSUBMODULE: " . $this->currentSubmoduleName);
                        $files = $this->compare($submodule['revision']);
                        if ($this->listFiles === true) {
                            $this->listFiles($files[$this->currentlyDeploying]);
                        } else {
                            $this->push($files[$this->currentlyDeploying], $submodule['revision']);
                        }
                    }
                    // We've finished deploying submodules, reset settings for the next server
                    $this->repo = $this->mainRepo;
                    $this->currentSubmoduleName = '';
                }
                // Copy
                if (isset($this->copyDirs[$name]) && count($this->copyDirs[$name]) > 0) {
                    $this->copy($this->copyDirs[$name]);
                }
                // Purge
                if (isset($this->purgeDirs[$name]) && count($this->purgeDirs[$name]) > 0) {
                    $this->purge($this->purgeDirs[$name]);
                }
                // Post Deploy
                if (isset($this->postDeploy[$name]) && count($this->postDeploy[$name]) > 0) {
                    $this->postDeploy($this->postDeploy[$name]);
                }
                // Post Deploy Remote
                if (isset($this->postDeployRemote[$name]) && count($this->postDeployRemote[$name]) > 0) {
                    $this->postDeployRemote($this->postDeployRemote[$name]);
                }
            }
            // Done
            if (!$this->listFiles) {
                $this->cli->bold()->lightGreen("\r\n|---------------[ " . $this->humanFilesize($this->deploymentSize) . ' Deployed ]---------------|');
                $this->deploymentSize = 0;
            }
        }
    }