/** * @param String $env Name of the environment, f.i. 'development' or 'production'. */ public function distribute($env, $assetList, $assetCount) { $this->_validateEnvironment($env); $ini = new Garp_Config_Ini(APPLICATION_PATH . '/configs/application.ini', $env); if ($ini->cdn->readonly) { throw new Garp_File_Exception(Garp_File::EXCEPTION_CDN_READONLY); } if (!$assetCount || $ini->cdn->type !== 's3') { return; } Garp_Cli::lineOut(ucfirst($env)); $progressBar = Garp_Cli_Ui_ProgressBar::getInstance(); $progressBar->init($assetCount); $firstFilename = basename($assetList[0]); $fileOrFiles = $this->_printFileOrFiles($assetCount); $progressBar->display("Processing {$firstFilename}. {$assetCount} {$fileOrFiles} left."); $s3 = new Garp_File_Storage_S3($ini->cdn, dirname(current($assetList)), true); foreach ($assetList as $i => $asset) { $s3->setPath(dirname($asset)); $fileData = file_get_contents($this->_baseDir . $asset); $filename = basename($asset); if ($s3->store($filename, $fileData, true, false)) { $progressBar->advance(); $fileOrFiles = $this->_printFileOrFiles($assetCount - $progressBar->getProgress()); $progressBar->display("Processing {$filename}. %d {$fileOrFiles} left."); } else { $progressBar->displayError("Could not upload {$asset} to {$env}."); } } if ($progressBar->getProgress() === $assetCount) { $progressBar->display("√ Done"); } echo "\n\n"; }