Exemple #1
0
 /** @return Deployer */
 private function createDeployer($config)
 {
     $config = array_change_key_case($config, CASE_LOWER) + ['local' => '', 'passivemode' => TRUE, 'ignore' => '', 'allowdelete' => TRUE, 'purge' => '', 'before' => '', 'after' => '', 'preprocess' => TRUE];
     if (empty($config['remote']) || !parse_url($config['remote'])) {
         throw new \Exception("Missing or invalid 'remote' URL in config.");
     }
     $server = parse_url($config['remote'], PHP_URL_SCHEME) === 'sftp' ? new SshServer($config['remote']) : new FtpServer($config['remote'], (bool) $config['passivemode']);
     if (!preg_match('#/|\\\\|[a-z]:#iA', $config['local'])) {
         if ($config['local'] && getcwd() !== dirname($this->configFile)) {
             $this->logger->log('WARNING: the "local" path is now relative to the directory where ' . basename($this->configFile) . ' is placed', 'red');
         }
         $config['local'] = dirname($this->configFile) . '/' . $config['local'];
     }
     $deployment = new Deployer($server, $config['local'], $this->logger);
     if ($config['preprocess']) {
         $deployment->preprocessMasks = $config['preprocess'] == 1 ? ['*.js', '*.css'] : self::toArray($config['preprocess']);
         // intentionally ==
         $preprocessor = new Preprocessor($this->logger);
         $deployment->addFilter('js', [$preprocessor, 'expandApacheImports']);
         $deployment->addFilter('js', [$preprocessor, 'compressJs'], TRUE);
         $deployment->addFilter('css', [$preprocessor, 'expandApacheImports']);
         $deployment->addFilter('css', [$preprocessor, 'expandCssImports']);
         $deployment->addFilter('css', [$preprocessor, 'compressCss'], TRUE);
     }
     $deployment->ignoreMasks = array_merge(['*.bak', '.svn', '.git*', 'Thumbs.db', '.DS_Store'], self::toArray($config['ignore']));
     $deployment->deploymentFile = empty($config['deploymentfile']) ? $deployment->deploymentFile : $config['deploymentfile'];
     $deployment->allowDelete = $config['allowdelete'];
     $deployment->toPurge = self::toArray($config['purge'], TRUE);
     $deployment->runBefore = self::toArray($config['before'], TRUE);
     $deployment->runAfter = self::toArray($config['after'], TRUE);
     $deployment->testMode = !empty($config['test']) || $this->mode === 'test';
     return $deployment;
 }
Exemple #2
0
 /** @return Deployer */
 private function createDeployer($config)
 {
     if (empty($config['remote']) || !($urlParts = parse_url($config['remote'])) || !isset($urlParts['scheme'], $urlParts['host'])) {
         throw new \Exception("Missing or invalid 'remote' URL in config.");
     }
     if (isset($config['user'])) {
         $urlParts['user'] = urlencode($config['user']);
     }
     if (isset($config['password'])) {
         $urlParts['pass'] = urlencode($config['password']);
     }
     $server = $urlParts['scheme'] === 'sftp' ? new SshServer($urlParts) : new FtpServer($urlParts, (bool) $config['passivemode']);
     if (!preg_match('#/|\\\\|[a-z]:#iA', $config['local'])) {
         if ($config['local'] && getcwd() !== dirname($this->configFile)) {
             $this->logger->log('WARNING: the "local" path is now relative to the directory where ' . basename($this->configFile) . ' is placed', 'red');
         }
         $config['local'] = dirname($this->configFile) . '/' . $config['local'];
     }
     $deployment = new Deployer($server, $config['local'], $this->logger);
     if ($config['preprocess']) {
         $deployment->preprocessMasks = $config['preprocess'] == 1 ? ['*.js', '*.css'] : self::toArray($config['preprocess']);
         // intentionally ==
         $preprocessor = new Preprocessor($this->logger);
         $deployment->addFilter('js', [$preprocessor, 'expandApacheImports']);
         $deployment->addFilter('js', [$preprocessor, 'compressJs'], TRUE);
         $deployment->addFilter('css', [$preprocessor, 'expandApacheImports']);
         $deployment->addFilter('css', [$preprocessor, 'expandCssImports']);
         $deployment->addFilter('css', [$preprocessor, 'compressCss'], TRUE);
     }
     $deployment->ignoreMasks = array_merge($this->ignoreMasks, self::toArray($config['ignore']));
     $deployment->deploymentFile = empty($config['deploymentfile']) ? $deployment->deploymentFile : $config['deploymentfile'];
     $deployment->allowDelete = $config['allowdelete'];
     $deployment->toPurge = self::toArray($config['purge'], TRUE);
     $deployment->runBefore = self::toArray($config['before'], TRUE);
     $deployment->runAfterUpload = self::toArray($config['afterupload'], TRUE);
     $deployment->runAfter = self::toArray($config['after'], TRUE);
     $deployment->testMode = !empty($config['test']) || $this->mode === 'test';
     return $deployment;
 }