Differentiate between the first time a progress bar is displayed and subsequent times
This commit is contained in:
parent
ec19a527be
commit
3871e1a950
@ -43,6 +43,7 @@ class ProgressBar
|
|||||||
private $formatLineCount;
|
private $formatLineCount;
|
||||||
private $messages = array();
|
private $messages = array();
|
||||||
private $overwrite = true;
|
private $overwrite = true;
|
||||||
|
private $firstRun = true;
|
||||||
|
|
||||||
private static $formatters;
|
private static $formatters;
|
||||||
private static $formats;
|
private static $formats;
|
||||||
@ -522,20 +523,24 @@ class ProgressBar
|
|||||||
private function overwrite($message)
|
private function overwrite($message)
|
||||||
{
|
{
|
||||||
if ($this->overwrite) {
|
if ($this->overwrite) {
|
||||||
// Move the cursor to the beginning of the line
|
if (!$this->isFirstRun()) {
|
||||||
$this->output->write("\x0D");
|
// Move the cursor to the beginning of the line
|
||||||
|
$this->output->write("\x0D");
|
||||||
|
|
||||||
// Erase the line
|
// Erase the line
|
||||||
$this->output->write("\x1B[2K");
|
$this->output->write("\x1B[2K");
|
||||||
|
|
||||||
// Erase previous lines
|
// Erase previous lines
|
||||||
if ($this->formatLineCount > 0) {
|
if ($this->formatLineCount > 0) {
|
||||||
$this->output->write(str_repeat("\x1B[1A\x1B[2K", $this->formatLineCount));
|
$this->output->write(str_repeat("\x1B[1A\x1B[2K", $this->formatLineCount));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} elseif ($this->step > 0) {
|
} elseif ($this->step > 0) {
|
||||||
$this->output->writeln('');
|
$this->output->writeln('');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->setFirstRun(false);
|
||||||
|
|
||||||
$this->output->write($message);
|
$this->output->write($message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -627,4 +632,14 @@ class ProgressBar
|
|||||||
'debug_nomax' => ' %current% [%bar%] %elapsed:6s% %memory:6s%',
|
'debug_nomax' => ' %current% [%bar%] %elapsed:6s% %memory:6s%',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function isFirstRun()
|
||||||
|
{
|
||||||
|
return $this->firstRun;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function setFirstRun($firstRun)
|
||||||
|
{
|
||||||
|
$this->firstRun = (bool) $firstRun;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0 [>---------------------------]').
|
' 0 [>---------------------------]'.
|
||||||
$this->generateOutput(' 1 [->--------------------------]').
|
$this->generateOutput(' 1 [->--------------------------]').
|
||||||
$this->generateOutput(' 0 [>---------------------------]'),
|
$this->generateOutput(' 0 [>---------------------------]'),
|
||||||
stream_get_contents($output->getStream())
|
stream_get_contents($output->getStream())
|
||||||
@ -44,7 +44,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0 [>---------------------------]').
|
' 0 [>---------------------------]'.
|
||||||
$this->generateOutput(' 1 [->--------------------------]'),
|
$this->generateOutput(' 1 [->--------------------------]'),
|
||||||
stream_get_contents($output->getStream())
|
stream_get_contents($output->getStream())
|
||||||
);
|
);
|
||||||
@ -58,7 +58,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0 [>---------------------------]').
|
' 0 [>---------------------------]'.
|
||||||
$this->generateOutput(' 5 [----->----------------------]'),
|
$this->generateOutput(' 5 [----->----------------------]'),
|
||||||
stream_get_contents($output->getStream())
|
stream_get_contents($output->getStream())
|
||||||
);
|
);
|
||||||
@ -73,7 +73,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0 [>---------------------------]').
|
' 0 [>---------------------------]'.
|
||||||
$this->generateOutput(' 3 [--->------------------------]').
|
$this->generateOutput(' 3 [--->------------------------]').
|
||||||
$this->generateOutput(' 5 [----->----------------------]'),
|
$this->generateOutput(' 5 [----->----------------------]'),
|
||||||
stream_get_contents($output->getStream())
|
stream_get_contents($output->getStream())
|
||||||
@ -89,7 +89,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 9/10 [=========================>--] 90%').
|
' 9/10 [=========================>--] 90%'.
|
||||||
$this->generateOutput(' 10/10 [============================] 100%').
|
$this->generateOutput(' 10/10 [============================] 100%').
|
||||||
$this->generateOutput(' 11/11 [============================] 100%'),
|
$this->generateOutput(' 11/11 [============================] 100%'),
|
||||||
stream_get_contents($output->getStream())
|
stream_get_contents($output->getStream())
|
||||||
@ -99,7 +99,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
public function testFormat()
|
public function testFormat()
|
||||||
{
|
{
|
||||||
$expected =
|
$expected =
|
||||||
$this->generateOutput(' 0/10 [>---------------------------] 0%').
|
' 0/10 [>---------------------------] 0%'.
|
||||||
$this->generateOutput(' 10/10 [============================] 100%').
|
$this->generateOutput(' 10/10 [============================] 100%').
|
||||||
$this->generateOutput(' 10/10 [============================] 100%')
|
$this->generateOutput(' 10/10 [============================] 100%')
|
||||||
;
|
;
|
||||||
@ -156,7 +156,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0/10 [/ ] 0%').
|
' 0/10 [/ ] 0%'.
|
||||||
$this->generateOutput(' 1/10 [_/ ] 10%'),
|
$this->generateOutput(' 1/10 [_/ ] 10%'),
|
||||||
stream_get_contents($output->getStream())
|
stream_get_contents($output->getStream())
|
||||||
);
|
);
|
||||||
@ -169,7 +169,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0/50 [>---------------------------] 0%'),
|
' 0/50 [>---------------------------] 0%',
|
||||||
stream_get_contents($output->getStream())
|
stream_get_contents($output->getStream())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -193,7 +193,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 50/50 [============================] 100%'),
|
' 50/50 [============================] 100%',
|
||||||
stream_get_contents($output->getStream())
|
stream_get_contents($output->getStream())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -208,7 +208,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0/50 [>---------------------------] 0%').
|
' 0/50 [>---------------------------] 0%'.
|
||||||
$this->generateOutput(' 0/50 [>---------------------------] 0%').
|
$this->generateOutput(' 0/50 [>---------------------------] 0%').
|
||||||
$this->generateOutput(' 1/50 [>---------------------------] 2%').
|
$this->generateOutput(' 1/50 [>---------------------------] 2%').
|
||||||
$this->generateOutput(' 2/50 [=>--------------------------] 4%'),
|
$this->generateOutput(' 2/50 [=>--------------------------] 4%'),
|
||||||
@ -230,7 +230,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0/50 [>---------------------------] 0%').
|
' 0/50 [>---------------------------] 0%'.
|
||||||
$this->generateOutput(' 0/50 [>---------------------------] 0%').
|
$this->generateOutput(' 0/50 [>---------------------------] 0%').
|
||||||
$this->generateOutput(' 1/50 [>---------------------------] 2%').
|
$this->generateOutput(' 1/50 [>---------------------------] 2%').
|
||||||
$this->generateOutput(' 2/50 [=>--------------------------]'),
|
$this->generateOutput(' 2/50 [=>--------------------------]'),
|
||||||
@ -247,7 +247,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0/50 [>---------------------------]').
|
' 0/50 [>---------------------------]'.
|
||||||
$this->generateOutput(' 1/50 [>---------------------------]'),
|
$this->generateOutput(' 1/50 [>---------------------------]'),
|
||||||
stream_get_contents($output->getStream())
|
stream_get_contents($output->getStream())
|
||||||
);
|
);
|
||||||
@ -264,7 +264,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0/50 [>---------------------------] 0%').
|
' 0/50 [>---------------------------] 0%'.
|
||||||
$this->generateOutput(' 0/50 [>---------------------------] 0%').
|
$this->generateOutput(' 0/50 [>---------------------------] 0%').
|
||||||
$this->generateOutput(' 1/50 [>---------------------------] 2%').
|
$this->generateOutput(' 1/50 [>---------------------------] 2%').
|
||||||
$this->generateOutput(' 15/50 [========>-------------------] 30%').
|
$this->generateOutput(' 15/50 [========>-------------------] 30%').
|
||||||
@ -339,7 +339,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0 [>---------------------------]').
|
' 0 [>---------------------------]'.
|
||||||
$this->generateOutput(' 3 [■■■>------------------------]'),
|
$this->generateOutput(' 3 [■■■>------------------------]'),
|
||||||
stream_get_contents($output->getStream())
|
stream_get_contents($output->getStream())
|
||||||
);
|
);
|
||||||
@ -354,7 +354,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0/50 [>---------------------------] 0%').
|
' 0/50 [>---------------------------] 0%'.
|
||||||
$this->generateOutput(' 25/50 [==============>-------------] 50%').
|
$this->generateOutput(' 25/50 [==============>-------------] 50%').
|
||||||
$this->generateOutput(''),
|
$this->generateOutput(''),
|
||||||
stream_get_contents($output->getStream())
|
stream_get_contents($output->getStream())
|
||||||
@ -371,7 +371,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0/200 [>---------------------------] 0%').
|
' 0/200 [>---------------------------] 0%'.
|
||||||
$this->generateOutput(' 0/200 [>---------------------------] 0%').
|
$this->generateOutput(' 0/200 [>---------------------------] 0%').
|
||||||
$this->generateOutput(' 199/200 [===========================>] 99%').
|
$this->generateOutput(' 199/200 [===========================>] 99%').
|
||||||
$this->generateOutput(' 200/200 [============================] 100%'),
|
$this->generateOutput(' 200/200 [============================] 100%'),
|
||||||
@ -471,9 +471,9 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0/2 [>---------------------------] 0%')."\n".
|
' 0/2 [>---------------------------] 0%'."\n".
|
||||||
$this->generateOutput(' 0/3 [#---------------------------] 0%')."\n".
|
' 0/3 [#---------------------------] 0%'."\n".
|
||||||
rtrim($this->generateOutput(' 0 [>---------------------------]')).
|
rtrim(' 0 [>---------------------------]').
|
||||||
|
|
||||||
"\033[2A".
|
"\033[2A".
|
||||||
$this->generateOutput(' 1/2 [==============>-------------] 50%')."\n".
|
$this->generateOutput(' 1/2 [==============>-------------] 50%')."\n".
|
||||||
@ -511,7 +511,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
rtrim($this->generateOutput(' 0 [>---------------------------]')).
|
rtrim(' 0 [>---------------------------]').
|
||||||
rtrim($this->generateOutput(' 1 [->--------------------------]')).
|
rtrim($this->generateOutput(' 1 [->--------------------------]')).
|
||||||
rtrim($this->generateOutput(' 2 [-->-------------------------]')).
|
rtrim($this->generateOutput(' 2 [-->-------------------------]')).
|
||||||
rtrim($this->generateOutput(' 3 [--->------------------------]')).
|
rtrim($this->generateOutput(' 3 [--->------------------------]')).
|
||||||
@ -534,7 +534,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 3 [>---------------------------]').
|
' 3 [>---------------------------]'.
|
||||||
$this->generateOutput(' 2 [=========>------------------]').
|
$this->generateOutput(' 2 [=========>------------------]').
|
||||||
$this->generateOutput(' 0 [============================]'),
|
$this->generateOutput(' 0 [============================]'),
|
||||||
stream_get_contents($output->getStream())
|
stream_get_contents($output->getStream())
|
||||||
@ -553,7 +553,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(">---------------------------\nfoobar").
|
">---------------------------\nfoobar".
|
||||||
$this->generateOutput("=========>------------------\nfoobar").
|
$this->generateOutput("=========>------------------\nfoobar").
|
||||||
"\x0D\x1B[2K\x1B[1A\x1B[2K".
|
"\x0D\x1B[2K\x1B[1A\x1B[2K".
|
||||||
$this->generateOutput("============================\nfoobar"),
|
$this->generateOutput("============================\nfoobar"),
|
||||||
@ -588,11 +588,11 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(
|
|
||||||
" \033[44;37m Starting the demo... fingers crossed \033[0m\n".
|
" \033[44;37m Starting the demo... fingers crossed \033[0m\n".
|
||||||
' 0/15 '.$progress.str_repeat($empty, 26)." 0%\n".
|
' 0/15 '.$progress.str_repeat($empty, 26)." 0%\n".
|
||||||
" \xf0\x9f\x8f\x81 < 1 sec \033[44;37m 0 B \033[0m"
|
" \xf0\x9f\x8f\x81 < 1 sec \033[44;37m 0 B \033[0m"
|
||||||
).
|
.
|
||||||
$this->generateOutput(
|
$this->generateOutput(
|
||||||
" \033[44;37m Looks good to me... \033[0m\n".
|
" \033[44;37m Looks good to me... \033[0m\n".
|
||||||
' 4/15 '.str_repeat($done, 7).$progress.str_repeat($empty, 19)." 26%\n".
|
' 4/15 '.str_repeat($done, 7).$progress.str_repeat($empty, 19)." 26%\n".
|
||||||
@ -614,7 +614,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
$bar->start();
|
$bar->start();
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0 [>---------------------------]'),
|
' 0 [>---------------------------]',
|
||||||
stream_get_contents($output->getStream())
|
stream_get_contents($output->getStream())
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -623,7 +623,7 @@ class ProgressBarTest extends \PHPUnit_Framework_TestCase
|
|||||||
$bar->start();
|
$bar->start();
|
||||||
rewind($output->getStream());
|
rewind($output->getStream());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$this->generateOutput(' 0/10 [>---------------------------] 0%'),
|
' 0/10 [>---------------------------] 0%',
|
||||||
stream_get_contents($output->getStream())
|
stream_get_contents($output->getStream())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user