diff -r b403086580f7 -r 0e57c730bb18 Command/ProgressContainerAwareCommand.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Command/ProgressContainerAwareCommand.php Fri Nov 25 18:55:42 2011 +0100 @@ -0,0 +1,46 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace IRI\Bundle\WikiTagBundle\Command; + +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; + +abstract class ProgressContainerAwareCommand extends ContainerAwareCommand +{ + protected function showProgress(OutputInterface $output, $current, $total, $label, $width) + { + $percent = (floatval($current)/floatval($total)) * 100.0; + $marks = intval(floor(floatval($width) * ($percent / 100.0) )); + $spaces = $width - $marks; + + $status_bar="\r["; + $status_bar.=str_repeat("=", $marks); + if($marks<$width){ + $status_bar.=">"; + $status_bar.=str_repeat(" ", $spaces); + } else { + $status_bar.="="; + } + + $disp=str_pad(number_format($percent, 0),3, " ", STR_PAD_LEFT); + + $label = str_pad(substr($label,0,50), 50, " "); + $current_str = str_pad($current, strlen("$total"), " ", STR_PAD_LEFT); + + $status_bar.="] $disp% $current_str/$total : $label"; + + $output->write("$status_bar "); + + if($current == $total) { + $output->writeln(""); + } + } + +} \ No newline at end of file