/** * @param Config $config */ public function run(Config $config) { // Create logger $logFile = $config->getLogFile(); $this->logger = $logFile ? new Logger($logFile) : new StdOutLogger(); $this->logger->useColors = $config->useColors(); // Create temp dir if (!is_dir($tempDir = $config->getTempDir())) { $this->logger->log("Creating temporary directory {$tempDir}"); @mkdir($tempDir, 0777, TRUE); } // Start time $time = time(); $this->logger->log("Started at " . date('[Y/m/d H:i]')); // Get sections and get sections names $sections = $config->getSections(); $sectionNames = array_map(function (Section $s) { return $s->getName(); }, $sections); // Show info $this->logger->log(sprintf('Found sections: %d (%s)', count($sectionNames), implode(',', $sectionNames))); // Process all sections foreach ($sections as $section) { // Show info $this->logger->log("\nDeploying section [{$section->getName()}]"); // Create deployer $deployment = $this->createDeployer($config, $section); $deployment->tempDir = $tempDir; // Detect mode -> generate if ($config->getMode() === 'generate') { $this->logger->log('Scanning files'); $localFiles = $deployment->collectPaths(); $this->logger->log("Saved " . $deployment->writeDeploymentFile($localFiles)); continue; } // Show info if ($deployment->testMode) { $this->logger->log('Test mode'); } else { $this->logger->log('Live mode'); } if (!$deployment->allowDelete) { $this->logger->log('Deleting disabled'); } // Deploy $deployment->deploy(); } // Show elapsed time $time = time() - $time; $this->logger->log("\nFinished at " . date('[Y/m/d H:i]') . " (in {$time} seconds)", 'lime'); }