protected function execute(InputInterface $input, OutputInterface $output) { $serverSection = $input->getOption('server'); $config = new \Zend_Config_Ini('config.ini', $serverSection); $server = $config->server; $remote = ($server->port ? '-e "ssh -p ' . $server->port . '" ' : '') . $server->user . '@' . $server->host . ':' . $server->dir; if (!$input->getOption('dry-run')) { $output->writeln("This will upload the current working copy to {$remote}."); $output->writeln("All files will be overwritten, any changes will be lost. Online directories you don't have locally not matching a .gitignore pattern will be deleted."); $output->writeln("Make sure your local application is stable and build is up to date."); $helper = $this->getHelper('question'); $question = new ConfirmationQuestion('Continue with this action? [Y/n]', true); if (!$helper->ask($input, $output, $question)) { return; } } $excludes = ExcludeFinder::findExcludes('.'); $excludeArgs = ''; foreach ($excludes as $i) { $excludeArgs .= " --exclude=" . escapeshellarg($i); } $cmd = "rsync -apz --delete --progress --verbose "; if ($input->getOption('dry-run')) { $cmd .= "--dry-run "; } $cmd .= "{$excludeArgs} . {$remote}"; $this->_systemCheckRet($cmd, $input, $output); if (!$input->getOption('dry-run')) { $output->writeln("Upload finished. Now executing update scripts and clearing caches."); $cmd = "cd {$server->dir} && " . ($server->phpCli ? $server->phpCli : 'php') . " bootstrap.php update"; $remote = ($server->port ? '-p ' . $server->port . ' ' : '') . $server->user . '@' . $server->host; $cmd = "ssh {$remote} " . escapeshellarg($cmd); $this->_systemCheckRet($cmd, $input, $output); } }
protected function execute(InputInterface $input, OutputInterface $output) { if (!file_exists('bootstrap.php')) { throw new \Exception("Run this script in the application root directory"); } \Kwf_Setup::setUp(); if (file_exists('setup/initial/dump.sql')) { unlink('setup/initial/dump.sql'); } if (file_exists('setup/initial/uploads')) { foreach (glob('setup/initial/uploads/*') as $f) { unlink($f); } } if ($input->getOption('include-initial-dump')) { $output->writeln("checking for pending updates..."); $pendingUpdatesCount = \Kwf_Util_Update_Helper::countPendingUpdates(); if ($pendingUpdatesCount) { throw new \Exception("{$pendingUpdatesCount} Updates have not been executed. Run update first."); } $output->writeln("creating database dump..."); $dump = DbDump::dump(); if (!file_exists('setup/initial')) { mkdir('setup/initial', 0777, true); $ignore = ""; if (file_exists('setup/.gitignore')) { $ignore = file_get_contents('setup/.gitignore'); } if (!preg_match('#^initial$#m', $ignore)) { $ignore = rtrim($ignore); if ($ignore) { $ignore .= "\n"; } $ignore .= "initial\n"; } file_put_contents('setup/.gitignore', $ignore); } file_put_contents('setup/initial/dump.sql', $dump); $output->writeln("copying uploads..."); if (!file_exists('setup/initial/uploads')) { mkdir('setup/initial/uploads'); } $model = \Kwf_Model_Abstract::getInstance('Kwf_Uploads_Model'); $select = new \Kwf_Model_Select(); $it = new \Kwf_Model_Iterator_Packages(new \Kwf_Model_Iterator_Rows($model, $select)); foreach ($it as $row) { $fileSource = $row->getFileSource(); copy($fileSource, 'setup/initial/uploads/' . basename($fileSource)); } } $excludes = ExcludeFinder::findExcludes('.'); $excludeArgs = ''; foreach ($excludes as $i) { $excludeArgs .= " -x " . escapeshellarg('./' . $i . '*'); } $cmd = "zip deploy.zip . --quiet -r {$excludeArgs}"; $output->writeln("creating deploy.zip archive..."); $this->_systemCheckRet($cmd, $input, $output); $output->writeln("deploy.zip successfully created."); }