isaeken / spinner
适用于交互式 CLI 应用程序的高雅 spinner。
1.4.5
2021-09-08 08:06 UTC
Requires
- php: ^8.0
- illuminate/support: ^8.47
- symfony/var-dumper: ^5.3
Suggests
- ext-pcntl: Allows terminate running processes in unix systems.
README
适用于交互式 CLI 应用程序的高雅 spinner。
PHP 的替代品,用于 https://github.com/sindresorhus/elegant-spinner
use IsaEken\Spinner\Spinner;$result = Spinner::run(function () { Spinner::setTitle('Calculating...'); $a = 1; $b = 2; $c = $a + $b; Spinner::setTitle('Waiting...'); sleep($c); return $c; }); echo "The result is: $result!";
要求
- PHP ^8.0
- Windows 或 Unix(已在 Windows 10 上测试)
- 建议在 Unix 系统上安装 PCNTL 扩展。
图标在 Windows Terminal 应用程序中正常工作。您可以创建主题来删除或更改图标。
安装
您可以使用 composer 进行安装。
composer require isaeken/spinner
示例
use IsaEken\Spinner\Enums\Status; use IsaEken\Spinner\Spinner; use IsaEken\Spinner\Themes\ClassicTheme; // create spinner (you do not needed this because the 'run' command are automatically creates an instance.) $spinner = new Spinner(); // or $spinner = Spinner::getInstance(); // create a spinner process // with theme $execution_result = Spinner::run(fn () => 'Hello World!', ClassicTheme::class); // without theme $execution_result = Spinner::run(function () { // get the spinner instance. $spinner = Spinner::getInstance(); // set the process title. Spinner::setTitle('Hello World!'); // alternative $spinner->setTitle('Hello World!'); // set the process status. Spinner::setStatus(Status::Success); Spinner::setStatus(Status::Warning); Spinner::setStatus(Status::Failed); // the end of process return 'Hello World!'; }); echo $execution_result; // Hello World!
示例主题
use Illuminate\Support\Collection; use IsaEken\Spinner\Enums\Status; use IsaEken\Spinner\Interfaces\ThemeInterface; use IsaEken\Spinner\Themes\DefaultTheme; class ExampleTheme extends DefaultTheme implements ThemeInterface { /** * @inheritDoc */ public static function frames(): Collection { return collect([ '⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏', ]); } /** * @inheritDoc */ public static function icons(): Collection { return collect([ Status::Success => '✔️', Status::Warning => '⚠️', Status::Failed => '❌', ]); } /** * @inheritDoc */ public static function messages(): Collection { return collect([ Status::Success => 'Process successfully completed.', Status::Warning => 'Process completed but the warnings alerted.', Status::Failed => 'Process cannot be completed successfully.', ]); } /** * @inheritDoc */ public static function colors(): Collection { return collect([ Status::Success => "\e[32m", Status::Warning => "\e[33m", Status::Failed => "\e[31m", ]); } }
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。
