Skip to content

Commit 6433d08

Browse files
authored
IBX-10558: Added --watch option to ibexa:encore:compile (#1671)
1 parent f85f6ab commit 6433d08

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

src/bundle/Command/CompileAssetsCommand.php

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,18 @@ public function __construct(
3535
protected function configure(): void
3636
{
3737
$this
38+
->addOption(
39+
'watch',
40+
'w',
41+
InputOption::VALUE_NONE,
42+
'Watch mode rebuilds on file change'
43+
)
3844
->addOption(
3945
'timeout',
4046
't',
4147
InputOption::VALUE_REQUIRED,
42-
'Timeout in seconds',
43-
$this->timeout
48+
"Timeout in seconds (default timeout is {$this->timeout}s when this option isn't used and not in watch mode)",
49+
null
4450
)
4551
->addOption(
4652
'config-name',
@@ -61,10 +67,16 @@ protected function configure(): void
6167

6268
protected function initialize(InputInterface $input, OutputInterface $output): void
6369
{
70+
$watch = $input->getOption('watch');
6471
$timeout = $input->getOption('timeout');
6572

66-
if (!is_numeric($timeout)) {
67-
throw new InvalidArgumentException('Timeout value has to be an integer.');
73+
if (null !== $timeout) {
74+
if ($watch) {
75+
throw new InvalidArgumentException('Watch mode can\'t be used with a timeout.');
76+
}
77+
if (!is_numeric($timeout)) {
78+
throw new InvalidArgumentException('Timeout value has to be an integer.');
79+
}
6880
}
6981
}
7082

@@ -75,7 +87,8 @@ protected function getFrontendConfigPath(string $configName): string
7587

7688
protected function execute(InputInterface $input, OutputInterface $output): int
7789
{
78-
$timeout = (float)$input->getOption('timeout');
90+
$watch = $input->getOption('watch');
91+
$timeout = $watch ? null : (float)($input->getOption('timeout') ?? $this->timeout);
7992
$env = $input->getOption('env');
8093
$configName = $input->getOption('config-name');
8194
$frontendConfigsName = $input->getOption('frontend-configs-name');
@@ -87,6 +100,10 @@ protected function execute(InputInterface $input, OutputInterface $output): int
87100
$yarnBaseEncoreCommand = "yarn encore {$encoreEnv}";
88101
$yarnEncoreCommand = $yarnBaseEncoreCommand;
89102

103+
if ($watch) {
104+
$yarnEncoreCommand = "{$yarnBaseEncoreCommand} --watch";
105+
}
106+
90107
if (!empty($configName)) {
91108
$yarnEncoreCommand = "{$yarnBaseEncoreCommand} --config-name {$configName}";
92109
}

0 commit comments

Comments
 (0)