Skip to content

Commit 25e5d81

Browse files
authored
feat(console): infer binary path for scheduler (#758)
1 parent ca7a226 commit 25e5d81

File tree

4 files changed

+20
-12
lines changed

4 files changed

+20
-12
lines changed

src/Tempest/Console/src/Initializers/SchedulerInitializer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace Tempest\Console\Initializers;
66

77
use Tempest\Console\ConsoleApplication;
8+
use Tempest\Console\Input\ConsoleArgumentBag;
89
use Tempest\Console\Scheduler;
910
use Tempest\Console\Scheduler\GenericScheduler;
1011
use Tempest\Console\Scheduler\NullScheduler;
@@ -28,6 +29,7 @@ public function initialize(Container $container): Scheduler
2829

2930
return new GenericScheduler(
3031
$container->get(SchedulerConfig::class),
32+
$container->get(ConsoleArgumentBag::class),
3133
$container->get(ShellExecutor::class),
3234
);
3335
}

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace Tempest\Console\Scheduler;
66

77
use DateTime;
8+
use Tempest\Console\Input\ConsoleArgumentBag;
89
use Tempest\Console\Scheduler;
910
use Tempest\Console\ShellExecutor;
1011
use function Tempest\event;
@@ -15,6 +16,7 @@
1516

1617
public function __construct(
1718
private SchedulerConfig $config,
19+
private ConsoleArgumentBag $argumentBag,
1820
private ShellExecutor $executor
1921
) {
2022
}
@@ -41,8 +43,10 @@ private function execute(ScheduledInvocation $invocation): void
4143

4244
private function compileInvocation(ScheduledInvocation $invocation): string
4345
{
44-
return join(' ', [
45-
'(' . $this->config->path,
46+
$binary = $this->argumentBag->getBinaryPath() . ' ' . $this->argumentBag->getCliName();
47+
48+
return implode(' ', [
49+
'(' . $binary,
4650
$invocation->getCommandName() . ')',
4751
$invocation->schedule->outputMode->value,
4852
$invocation->schedule->output,

src/Tempest/Console/src/Scheduler/SchedulerConfig.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
final class SchedulerConfig
1212
{
1313
public function __construct(
14-
public string $path = "php tempest",
15-
1614
/** @var ScheduledInvocation[] $scheduledInvocations */
1715
public array $scheduledInvocations = [],
1816
) {

tests/Integration/Console/Scheduler/GenericSchedulerTest.php

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use DateTime;
88
use ReflectionMethod;
99
use Tempest\Console\ConsoleCommand;
10+
use Tempest\Console\Input\ConsoleArgumentBag;
1011
use Tempest\Console\Schedule;
1112
use Tempest\Console\Scheduler\Every;
1213
use Tempest\Console\Scheduler\GenericScheduler;
@@ -40,12 +41,13 @@ public function test_scheduler_executes_handlers(): void
4041
);
4142

4243
$executor = new NullShellExecutor();
43-
$scheduler = new GenericScheduler($config, $executor);
44+
$argumentBag = new ConsoleArgumentBag(['tempest']);
45+
$scheduler = new GenericScheduler($config, $argumentBag, $executor);
4446

4547
$scheduler->run();
4648

4749
$this->assertSame(
48-
'(php tempest schedule:task Tests\\\Tempest\\\Integration\\\Console\\\Scheduler\\\GenericSchedulerTest::handler) >> /dev/null &',
50+
'(' . PHP_BINARY . ' tempest schedule:task Tests\\\Tempest\\\Integration\\\Console\\\Scheduler\\\GenericSchedulerTest::handler) >> /dev/null &',
4951
$executor->executedCommand,
5052
);
5153
}
@@ -61,11 +63,12 @@ public function test_scheduler_executes_commands(): void
6163
);
6264

6365
$executor = new NullShellExecutor();
64-
$scheduler = new GenericScheduler($config, $executor);
66+
$argumentBag = new ConsoleArgumentBag(['tempest']);
67+
$scheduler = new GenericScheduler($config, $argumentBag, $executor);
6568
$scheduler->run();
6669

6770
$this->assertSame(
68-
'(php tempest command) >> /dev/null &',
71+
'(' . PHP_BINARY . ' tempest command) >> /dev/null &',
6972
$executor->executedCommand,
7073
);
7174
}
@@ -81,11 +84,12 @@ public function test_scheduler_only_dispatches_the_command_in_desired_times(): v
8184
);
8285

8386
$executor = new NullShellExecutor();
84-
$scheduler = new GenericScheduler($config, $executor);
87+
$argumentBag = new ConsoleArgumentBag(['tempest']);
88+
$scheduler = new GenericScheduler($config, $argumentBag, $executor);
8589
$scheduler->run($at);
8690

8791
$this->assertSame(
88-
'(php tempest schedule:task Tests\\\Tempest\\\Integration\\\Console\\\Scheduler\\\GenericSchedulerTest::handler) >> /dev/null &',
92+
'(' . PHP_BINARY . ' tempest schedule:task Tests\\\Tempest\\\Integration\\\Console\\\Scheduler\\\GenericSchedulerTest::handler) >> /dev/null &',
8993
$executor->executedCommand,
9094
);
9195

@@ -97,12 +101,12 @@ public function test_scheduler_only_dispatches_the_command_in_desired_times(): v
97101

98102
$executor = new NullShellExecutor();
99103

100-
$scheduler = new GenericScheduler($config, $executor);
104+
$scheduler = new GenericScheduler($config, $argumentBag, $executor);
101105

102106
$scheduler->run($at->modify('+1 minute'));
103107

104108
$this->assertSame(
105-
'(php tempest schedule:task Tests\\\Tempest\\\Integration\\\Console\\\Scheduler\\\GenericSchedulerTest::handler) >> /dev/null &',
109+
'(' . PHP_BINARY . ' tempest schedule:task Tests\\\Tempest\\\Integration\\\Console\\\Scheduler\\\GenericSchedulerTest::handler) >> /dev/null &',
106110
$executor->executedCommand,
107111
);
108112
}

0 commit comments

Comments
 (0)