khalyomede/console-reporter

同时在控制台显示进度条和日志。

v0.3.0 2018-10-23 21:12 UTC

This package is auto-updated.

Last update: 2024-09-24 10:08:59 UTC


README

PHP from Packagist Packagist Packagist

Gif showing a command line that trigger the console report, with the progress bar and the logs that stack themselves above the progress bar as the progress bar advance until 100 percent

摘要

安装

composer require --dev khalyomede/console-reporter:0.*

使用示例

示例 1:简单使用案例

require(__DIR__ . '/../vendor/autoload.php');

use Khalyomede\ConsoleReporter as Reporter;

$reporter = new Reporter;
$reporter->setMaxEntries(24);

foreach( range(1, 24) as $integer ) {
  $sleepTimeInMicroseconds = rand(5000, 500000);

  usleep($sleepTimeInMicroseconds);

  if( $integer % 8 === 0 ) {
    $reporter->info("test #$integer in progression...");
  }

  $reporter->report();
  $reporter->advance();
}
$ php example/example-1.php
  2018-09-16 08:45:29.595600 [INFO] test #8 in progression...
  2018-09-16 08:45:32.205500 [INFO] test #16 in progression...
  2018-09-16 08:45:34.570100 [INFO] test #24 in progression...
  24 / 24 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100 %

示例 2:使用内置进度条样式

require(__DIR__ . '/../vendor/autoload.php');

use Khalyomede\ConsoleReporter as Reporter;
use Khalyomede\Style\ModernRounded;

$reporter = new Reporter;
$reporter->setMaxEntries(24);
$reporter->setStyle(ModernRounded::class);

foreach( range(1, 24) as $integer ) {
  $sleepTimeInMicroseconds = rand(5000, 500000);

  usleep($sleepTimeInMicroseconds);

  if( $integer % 8 === 0 ) {
    $reporter->info("test #$integer in progression...");
  }

  $reporter->report();
  $reporter->advance();
}
$ php example/example-2.php
  2018-09-29 18:07:40.433600 [INFO] test #8 in progression...
  2018-09-29 18:07:42.810300 [INFO] test #16 in progression...
  2018-09-29 18:07:45.291100 [INFO] test #24 in progression...
  24 / 24 [●●●●●●●●●●●●●●●●●●●●●●●●] 100 %

示例 3:使用自定义进度条样式

require(__DIR__ . '/../vendor/autoload.php');

use Khalyomede\ConsoleStylable;
use Khalyomede\ConsoleReporter as Reporter;

class ModernStar implements ConsoleStylable {
  public static function progressingCharacter(): string {
    return '';
  }

  public static function progressedCharacter(): string {
    return '';
  }

  public static function startCharacter(): string {
    return '[';
  }

  public static function endCharacter(): string {
    return ']';
  }
}

const MAX = 24;

$numbers = range(1, MAX);

$reporter = new Reporter;

$reporter->setMaxEntries(MAX);
$reporter->setStyle(ModernStar::class);

foreach( $numbers as $number ) {
  $microseconds = rand(50000, 500000);

  usleep($microseconds);

  if( $number % 8 === 0 ) {
    $reporter->info("running iteration #$number");
  }

  $reporter->report();
  $reporter->advance();
}
$ php example/example-3.php
  2018-09-29 20:34:16.945300 [INFO] running iteration #8
  2018-09-29 20:34:18.934700 [INFO] running iteration #16
  2018-09-29 20:34:21.071200 [INFO] running iteration #24
  24 / 24 [✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦] 100 %

示例 4:使用图标显示日志

require(__DIR__ . '/../vendor/autoload.php');

use Khalyomede\ConsoleReporter as Reporter;

$reporter = new Reporter;
$reporter->setMaxEntries(24);
$reporter->displaySeverityWithIcons();

foreach( range(1, 24) as $integer ) {
  $sleepTimeInMicroseconds = rand(5000, 500000);

  usleep($sleepTimeInMicroseconds);

  if( $integer % 8 === 0 ) {
    $reporter->info("test #$integer in progression...");
  }

  $reporter->report();
  $reporter->advance();
}
$ php example/example-4.php
  2018-10-04 21:42:31.842600  ⓘ  test #8 in progression...
  2018-10-04 21:42:33.992700  ⓘ  test #16 in progression...
  2018-10-04 21:42:35.393700  ⓘ  test #24 in progression...
  24 / 24 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100 %

示例 5:强制设置进度条大小

require(__DIR__ . '/../vendor/autoload.php');

use Khalyomede\ConsoleReporter as Reporter;

$reporter = new Reporter;
$reporter->setMaxEntries(10);
$reporter->setProgressBarSize(30);

$numbers = range(0, 9);

foreach( $numbers as $number ) {
  $sleepTimeInMicroSeconds = rand(50000, 500000);
  
  usleep($sleepTimeInMicroSeconds);

  $reporter->report();
  $reporter->advance();
}
$ php example/example-5.php
  10 / 10 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100 %

可用的内置进度条样式

现代圆角

2018-09-30 14:52:31.158200 [INFO] test #8 in progression...
2018-09-30 14:52:32.366100 [INFO] test #16 in progression...
2018-09-30 14:52:33.885100 [INFO] test #24 in progression...
24 / 24 [●●●●●●●●●●●●●●●●●●●●●●●●] 100 %

现代矩形

2018-09-30 14:55:05.430200 [INFO] test #8 in progression...
2018-09-30 14:55:07.795900 [INFO] test #16 in progression...
2018-09-30 14:55:09.755300 [INFO] test #24 in progression...
24 / 24 [◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼] 100 %

支持的shell

没有看到您的操作系统或shell?这意味着它尚未经过测试。

如果您想在上面的配置之外测试它,我们将非常欢迎。只需填写一个问题。

PowerShell配置

请确认您的字体配置没有设置为“光栅字体”

Photo of the powersheel configuration panel, on the font section

将其更改为除“光栅字体”之外的内容。现在,某些进度条中使用的字符应该可以正确显示。

致谢

PowerShell字体图片来自4sysops