Skip to content

Instantly share code, notes, and snippets.

@nathanbarrett
Created August 7, 2023 21:59
Show Gist options
  • Save nathanbarrett/75b7c942a73a8798b3e78ea306ab8553 to your computer and use it in GitHub Desktop.
Save nathanbarrett/75b7c942a73a8798b3e78ea306ab8553 to your computer and use it in GitHub Desktop.
Laravel command template with extra helpers
<?php
declare(strict_types=1);
namespace App\Console\Commands;
use Illuminate\Console\Command as ConsoleCommand;
use Illuminate\Support\Str;
use Symfony\Component\Console\Helper\ProgressBar;
abstract class Command extends ConsoleCommand
{
protected bool $prefixTimestampToOutput = false;
protected bool $outputPadding = false;
public function comment($string, $verbosity = null): void
{
parent::comment($this->formatStringMessage($string), $verbosity);
}
public function info($string, $verbosity = null): void
{
parent::info($this->formatStringMessage($string), $verbosity);
}
public function warn($string, $verbosity = null): void
{
parent::warn($this->formatStringMessage($string), $verbosity);
}
public function error($string, $verbosity = null): void
{
parent::error($this->formatStringMessage($string), $verbosity);
}
public function alert($string, $verbosity = null): void
{
parent::alert($this->formatStringMessage($string), $verbosity);
}
public function formattedProgressBar(int $max, string $format = 'debug'): ProgressBar
{
$bar = $this->output->createProgressBar($max);
$bar->setFormat($format);
return $bar;
}
private function formatStringMessage($string): string
{
return Str::of((string)$string)
->prepend($this->outputPadding ? "\n" : '')
->prepend($this->prefixTimestampToOutput ? now()->toIso8601String() . ': ' : '')
->toString();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment