Skip to content

Commit c57b1ac

Browse files
authored
feat: add output to schedule:run command (tempestphp#489)
1 parent 140f9eb commit c57b1ac

File tree

5 files changed

+89
-22
lines changed

5 files changed

+89
-22
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Tempest\Console\Commands;
6+
7+
use Tempest\Console\Console;
8+
use Tempest\Console\ConsoleCommand;
9+
use Tempest\Console\HasConsole;
10+
use Tempest\Console\Scheduler;
11+
use Tempest\Console\Scheduler\ScheduledInvocationRan;
12+
use Tempest\EventBus\EventHandler;
13+
14+
final readonly class ScheduleRunCommand
15+
{
16+
use HasConsole;
17+
18+
public function __construct(
19+
private Scheduler $scheduler,
20+
private Console $console,
21+
) {
22+
}
23+
24+
#[ConsoleCommand('schedule:run')]
25+
public function __invoke(): void
26+
{
27+
$this->scheduler->run();
28+
29+
$this->success('Done');
30+
}
31+
32+
#[EventHandler]
33+
public function onScheduledInvocationRan(ScheduledInvocationRan $invocation): void
34+
{
35+
$this->writeln(sprintf(
36+
"<em>%s</em> completed",
37+
$invocation->invocation->getCommandName()
38+
));
39+
}
40+
}

src/Tempest/Console/src/Commands/SchedulerRunCommand.php

Lines changed: 0 additions & 22 deletions
This file was deleted.

src/Tempest/Console/src/Scheduler/GenericScheduler.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use DateTime;
88
use Tempest\Console\Scheduler;
99
use Tempest\Console\ShellExecutor;
10+
use function Tempest\event;
1011

1112
final readonly class GenericScheduler implements Scheduler
1213
{
@@ -26,6 +27,8 @@ public function run(?DateTime $date = null): void
2627

2728
foreach ($commands as $command) {
2829
$this->execute($command);
30+
31+
event(new ScheduledInvocationRan($command));
2932
}
3033
}
3134

@@ -47,6 +50,7 @@ private function compileInvocation(ScheduledInvocation $invocation): string
4750
]);
4851
}
4952

53+
/** @return \Tempest\Console\Scheduler\ScheduledInvocation[] */
5054
private function getInvocationsToRun(DateTime $date): array
5155
{
5256
$previousRuns = $this->getPreviousRuns();
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Tempest\Console\Scheduler;
6+
7+
final readonly class ScheduledInvocationRan
8+
{
9+
public function __construct(public ScheduledInvocation $invocation)
10+
{
11+
}
12+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Tests\Tempest\Integration\Console\Scheduler;
6+
7+
use Tempest\Console\Scheduler\GenericScheduler;
8+
use Tests\Tempest\Integration\FrameworkIntegrationTestCase;
9+
10+
/**
11+
* @internal
12+
*/
13+
final class ScheduleRunCommandTest extends FrameworkIntegrationTestCase
14+
{
15+
public function test_invoke(): void
16+
{
17+
@unlink(GenericScheduler::CACHE_PATH);
18+
19+
$this->console
20+
->call('schedule:run')
21+
->assertSee('scheduled completed')
22+
->assertSee("schedule:task Tests\\\\Tempest\\\\Integration\\\\Console\\\\Fixtures\\\\ScheduledCommand::method completed")
23+
->assertSee('session:clean completed')
24+
->assertSee('Done');
25+
26+
$this->console
27+
->call('schedule:run')
28+
->assertNotSee('scheduled completed')
29+
->assertNotSee("schedule:task Tests\\\\Tempest\\\\Integration\\\\Console\\\\Fixtures\\\\ScheduledCommand::method completed")
30+
->assertNotSee('session:clean completed')
31+
->assertSee('Done');
32+
}
33+
}

0 commit comments

Comments
 (0)