/** * @param OutputInterface $output * @param ProgressBar $progressBar */ public function __construct(OutputInterface $output, ProgressBar $progressBar) { $this->output = $output; $this->progressBar = $progressBar ?: new ProgressBar($output); $this->progressBar->setOverwrite(false); $this->progressFormat = "<fg=yellow>Running task %current%/%max%:</fg=yellow> %message%"; }
function it_finishes_progress(OutputInterface $output, ProgressBar $progressBar, RunnerEvent $event) { $progressBar->setOverwrite(false)->shouldBeCalled(); $progressBar->finish()->shouldBeCalled(); $output->writeln('')->shouldBeCalled(); $this->finishProgress($event); }
/** * @param int $max * @param bool $forceLogLevel * @return void */ public function start($max, $forceLogLevel = false) { if ($this->canRun($forceLogLevel)) { echo PHP_EOL; $max = $max == 0 ? 1 : $max; $this->progressBar->start($max); $this->progressBar->setOverwrite(true); } }
function it_finishes_progress_early(OutputInterface $output, ProgressBar $progressBar, RunnerEvent $event) { $progressBar->getProgress()->willReturn(1); $progressBar->getMaxSteps()->willReturn(2); $progressBar->setFormat(Argument::type('string'))->shouldBeCalled(); $progressBar->setMessage(Argument::type('string'))->shouldBeCalled(); $progressBar->setOverwrite(false)->shouldBeCalled(); $progressBar->finish()->shouldBeCalled(); $output->writeln('')->shouldBeCalled(); $this->finishProgress($event); }
/** * {@inheritdoc} * * @throws FileExistsException * @throws \InvalidArgumentException * @throws FileNotFoundException * @throws LogicException */ public function restore(Filesystem $source, Filesystem $destination, ReadonlyDatabase $database, array $parameter) { // TODO make it smoother $files = $source->listFiles('', true); $progressBar = new ProgressBar($this->output, count($files)); $progressBar->setOverwrite(true); $progressBar->setFormat(' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%'); $progressBar->start(); foreach ($files as $file) { $path = $file['path']; $fullPath = $parameter['directory'] . '/' . $file['path']; if ($destination->has($fullPath)) { if ($destination->hash($fullPath) === $source->hash($path)) { $progressBar->advance(); continue; } $destination->delete($fullPath); } $destination->writeStream($fullPath, $source->readStream($path)); $progressBar->advance(); } $progressBar->finish(); }
/** * @param $table * @param Table $tableConfig * @param Connection $db * * @throws \Doctrine\DBAL\DBALException */ public function dumpData($table, Table $tableConfig, Connection $db) { $this->keepalive($db); $cols = $this->cols($table, $db); $s = "SELECT "; $first = true; foreach (array_keys($cols) as $name) { $isBlobColumn = $this->isBlob($name, $cols); if (!$first) { $s .= ', '; } $s .= $tableConfig->getSelectExpression($name, $isBlobColumn); $s .= " AS `{$name}`"; $first = false; } $s .= " FROM `{$table}`"; $s .= $tableConfig->getCondition(); $this->output->writeln("-- BEGIN DATA {$table}", OutputInterface::OUTPUT_RAW); $bufferSize = 0; $max = 100 * 1024 * 1024; // 100 MB $numRows = $db->fetchColumn("SELECT COUNT(*) FROM {$table}"); if ($numRows == 0) { // Fail fast: No data to dump. return; } $progress = new ProgressBar($this->output, $numRows); $progress->setFormat("Dumping data <fg=cyan>{$table}</>: <fg=yellow>%percent:3s%%</> %remaining%/%estimated%"); $progress->setOverwrite(true); $progress->setRedrawFrequency(max($numRows / 100, 1)); $progress->start(); /** @var PDOConnection $wrappedConnection */ $wrappedConnection = $db->getWrappedConnection(); $wrappedConnection->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); foreach ($db->query($s) as $row) { $b = $this->rowLengthEstimate($row); // Start a new statement to ensure that the line does not get too long. if ($bufferSize && $bufferSize + $b > $max) { $this->output->writeln(";", OutputInterface::OUTPUT_RAW); $bufferSize = 0; } if ($bufferSize == 0) { $this->output->write($this->insertValuesStatement($table, $cols), false, OutputInterface::OUTPUT_RAW); } else { $this->output->write(",", false, OutputInterface::OUTPUT_RAW); } $firstCol = true; $this->output->write("\n(", false, OutputInterface::OUTPUT_RAW); foreach ($row as $name => $value) { $isBlobColumn = $this->isBlob($name, $cols); if (!$firstCol) { $this->output->write(", ", false, OutputInterface::OUTPUT_RAW); } $this->output->write($tableConfig->getStringForInsertStatement($name, $value, $isBlobColumn, $db), false, OutputInterface::OUTPUT_RAW); $firstCol = false; } $this->output->write(")", false, OutputInterface::OUTPUT_RAW); $bufferSize += $b; $progress->advance(); } $progress->setFormat("Dumping data <fg=green>{$table}</>: <fg=green>%percent:3s%%</> Took: %elapsed%"); $progress->finish(); if ($this->output instanceof \Symfony\Component\Console\Output\ConsoleOutput) { $this->output->getErrorOutput()->write("\n"); // write a newline after the progressbar. } $wrappedConnection->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); if ($bufferSize) { $this->output->writeln(";", OutputInterface::OUTPUT_RAW); } $this->output->writeln('', OutputInterface::OUTPUT_RAW); }
/** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $io = new DrupalStyle($input, $output); $bundlezip = $input->getOption('zip-file'); if (!$bundlezip) { $helper = $this->getHelper('question'); $question = new Question('<info>Please enter the name of the zip file:</info> <comment>[webflow]</comment> ', 'webflow'); $bundlezip = $helper->ask($input, $output, $question); } $withZip = $bundlezip . ".zip"; // Theme Name $theme = $input->getOption('theme-name'); if (!$theme) { $helper = $this->getHelper('question'); $question = new Question('<info>Please enter theme name:</info> <comment>[webflow]</comment> ', 'webflow'); $theme = $helper->ask($input, $output, $question); } // Theme Description // $themeDesc = $input->getOption('theme-description'); // if(!$themeDesc){ // $helper = $this->getHelper('question'); // $question = new Question('<info>Please enter theme description:</info> <comment>[These is a webflow theme]</comment> ', 'These is a webflow theme'); // $themeDesc = $helper->ask($input, $output, $question); // } $themeDesc = 'These is a webflow theme'; $path = getcwd() . '/temp'; $zip = new ZipArchive(); if ($zip->open($withZip) === TRUE) { $zip->extractTo($path); $zip->close(); $output->writeln('<info>Starting Theme creation process</info>'); } else { $output->writeln('<comment>Failed to open the archive!</comment>'); return false; } $directory = "{$path}/{$bundlezip}/"; $htmlfiles = glob($directory . "*.html"); $themeMachine = strtolower(str_replace(" ", "_", $theme)); $Root = getcwd() . '/themes'; $themeDir = "{$Root}/{$theme}"; $create = new ClutchCli(); $output = new ConsoleOutput(); $output->setFormatter(new OutputFormatter(true)); $rows = 8; $progressBar = new ProgressBar($output, $rows); $progressBar->setFormat(' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%'); $progressBar->setBarCharacter('<fg=magenta>=</>'); $progressBar->setProgressCharacter("🏃"); $progressBar->setOverwrite(true); for ($i = 0; $i < $rows; $i++) { $create->Components($themeDir, $theme, $htmlfiles, 'data-component', 'components'); $create->Components($themeDir, $theme, $htmlfiles, 'data-node', 'nodes'); $create->Components($themeDir, $theme, $htmlfiles, 'data-menu', 'menus'); $progressBar->advance(2); $create->Directory($path, $Root, $themeDir, $theme, $bundlezip); $progressBar->advance(); $vars = array('{{themeName}}' => $theme, '{{themeMachine}}' => $themeMachine, '{{themeDescription}}' => $themeDesc); $progressBar->advance(); $create->ThemeTemplates($themeDir, $theme, $vars); $progressBar->advance(); $create->deleteDirectory($path); $progressBar->advance(); \Drupal::service('theme_handler')->rebuildThemeData(); $progressBar->advance(); \Drupal::service('theme_handler')->reset(); \Drupal::service('theme_handler')->refreshInfo(); \Drupal::service('theme_handler')->listInfo(); // $this->getChain()->addCommand('cache:rebuild', ['cache' => 'all']); // $this->getChain()->addCommand('clutch:sync', ['theme' => $theme]); $progressBar->advance(); $output->writeln('<comment>' . "\r\n" . 'Your theme ' . $theme . ' is now created.</comment>'); return true; } $progressBar->finish(); }