Skip to content

Commit 15f2f23

Browse files
committed
fix: fix context creation and improve exception handling for administration
1 parent 4efddf7 commit 15f2f23

File tree

6 files changed

+55
-17
lines changed

6 files changed

+55
-17
lines changed

src/Command/PluginChecksumCreateCommand.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ protected function configure(): void
4646
protected function execute(InputInterface $input, OutputInterface $output): int
4747
{
4848
$io = new ShopwareStyle($input, $output);
49-
$context = Context::createCLIContext();
49+
// @phpstan-ignore-next-line
50+
$context = method_exists(Context::class, 'createCLIContext') ? Context::createCLIContext() : Context::createDefaultContext();
5051

5152
$pluginName = (string) $input->getArgument('plugin');
5253
$plugin = $this->getPlugin($pluginName, $context);

src/Components/PluginChecksum/Struct/PluginChecksumCheckResult.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class PluginChecksumCheckResult extends Struct
1414
public function __construct(
1515
protected bool $fileMissing = false,
1616
protected bool $wrongVersion = false,
17+
protected bool $checkFailed = false,
1718
protected array $newFiles = [],
1819
protected array $changedFiles = [],
1920
protected array $missingFiles = [],
@@ -30,6 +31,11 @@ public function isWrongVersion(): bool
3031
return $this->wrongVersion;
3132
}
3233

34+
public function isCheckFailed(): bool
35+
{
36+
return $this->checkFailed;
37+
}
38+
3339
/**
3440
* @return string[]
3541
*/

src/Controller/PluginFilesController.php

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
namespace Frosh\Tools\Controller;
66

77
use Frosh\Tools\Components\PluginChecksum\PluginFileHashService;
8+
use Frosh\Tools\Components\PluginChecksum\Struct\PluginChecksumCheckResult;
9+
use Psr\Log\LoggerInterface;
810
use Shopware\Core\Framework\Context;
911
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
1012
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
@@ -24,6 +26,7 @@ class PluginFilesController extends AbstractController
2426
public function __construct(
2527
private readonly EntityRepository $pluginRepository,
2628
private readonly PluginFileHashService $pluginFileHashService,
29+
private readonly LoggerInterface $froshToolsLogger,
2730
) {
2831
}
2932

@@ -35,12 +38,24 @@ public function listPluginFiles(Context $context): JsonResponse
3538
/** @var PluginCollection $plugins */
3639
$plugins = $this->pluginRepository->search(new Criteria(), $context)->getEntities();
3740
foreach ($plugins as $plugin) {
38-
$pluginChecksumCheckResult = $this->pluginFileHashService->checkPluginForChanges($plugin);
39-
if ($pluginChecksumCheckResult->getNewFiles() !== [] || $pluginChecksumCheckResult->getChangedFiles() !== [] || $pluginChecksumCheckResult->getMissingFiles() !== []) {
40-
$pluginResults[$plugin->getName()] = $pluginChecksumCheckResult;
41+
try {
42+
$pluginChecksumCheckResult = $this->pluginFileHashService->checkPluginForChanges($plugin);
43+
if ($pluginChecksumCheckResult->getNewFiles() !== [] || $pluginChecksumCheckResult->getChangedFiles() !== [] || $pluginChecksumCheckResult->getMissingFiles() !== []) {
44+
$pluginResults[$plugin->getName()] = $pluginChecksumCheckResult;
45+
}
46+
} catch (\Exception $exception) {
47+
$pluginResults[$plugin->getName()] = new PluginChecksumCheckResult(checkFailed: true);
48+
$this->froshToolsLogger->error('Error checking checksums for plugin {plugin}: {message}', [
49+
'plugin' => $plugin->getName(),
50+
'message' => $exception->getMessage(),
51+
'exception' => $exception,
52+
]);
4153
}
4254
}
4355

44-
return new JsonResponse(['success' => \count($pluginResults) === 0, 'pluginResults' => $pluginResults]);
56+
return new JsonResponse([
57+
'success' => \count($pluginResults) === 0,
58+
'pluginResults' => $pluginResults,
59+
]);
4560
}
4661
}

src/Resources/app/administration/src/module/frosh-tools/component/frosh-tools-tab-files/template.twig

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -121,26 +121,40 @@
121121
</sw-button>
122122
</template>
123123
<div
124-
v-for="(plugin, pluginName) in pluginItems.pluginResults"
124+
v-for="(pluginResult, pluginName) in pluginItems.pluginResults"
125125
>
126126
<h4>{{ pluginName }}</h4>
127-
<sw-description-list>
128-
<dt v-if="plugin.newFiles.length > 0">
127+
<sw-alert
128+
variant="error"
129+
v-if="pluginResult.checkFailed"
130+
>
131+
{{ $t('frosh-tools.tabs.pluginFiles.checkFailed') }}
132+
</sw-alert>
133+
<sw-description-list v-else>
134+
<dt v-if="pluginResult.newFiles.length > 0">
129135
{{ $t('frosh-tools.tabs.pluginFiles.newFiles') }}
130136
</dt>
131-
<dd v-for="file in plugin.newFiles">
137+
<dd v-for="file in pluginResult.newFiles">
132138
{{ file }}
133139
</dd>
134-
<dt v-if="plugin.changedFiles.length > 0">
140+
<dt
141+
v-if="pluginResult.changedFiles.length > 0"
142+
>
135143
{{ $t('frosh-tools.tabs.pluginFiles.changedFiles') }}
136144
</dt>
137-
<dd v-for="file in plugin.changedFiles">
145+
<dd
146+
v-for="file in pluginResult.changedFiles"
147+
>
138148
{{ file }}
139149
</dd>
140-
<dt v-if="plugin.missingFiles.length > 0">
150+
<dt
151+
v-if="pluginResult.missingFiles.length > 0"
152+
>
141153
{{ $t('frosh-tools.tabs.pluginFiles.missingFiles') }}
142154
</dt>
143-
<dd v-for="file in plugin.missingFiles">
155+
<dd
156+
v-for="file in pluginResult.missingFiles"
157+
>
144158
{{ file }}
145159
</dd>
146160
</sw-description-list>

src/Resources/app/administration/src/module/frosh-tools/snippet/de-DE.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,9 @@
6464
},
6565
"pluginFiles": {
6666
"title": "Plugin Dateien Checker",
67-
"allFilesOk": "Keine Plugins wurden manipuliert",
68-
"notOk": "Es gibt Plugins, die manipuliert wurden",
67+
"allFilesOk": "Keine Plugins wurden manipuliert.",
68+
"notOk": "Es gibt Plugins, die manipuliert wurden.",
69+
"checkFailed": "Das Plugin konnte nicht geprüft werden. Bitte prüfe die Logs.",
6970
"newFiles": "Neue Dateien",
7071
"changedFiles": "Geänderte Dateien",
7172
"missingFiles": "Fehlende Dateien"

src/Resources/app/administration/src/module/frosh-tools/snippet/en-GB.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,9 @@
6464
},
6565
"pluginFiles": {
6666
"title": "Plugin File Checker",
67-
"allFilesOk": "No plugins modified",
68-
"notOk": "There are modified plugins",
67+
"allFilesOk": "No plugins were modified.",
68+
"notOk": "There are modified plugins.",
69+
"checkFailed": "The plugin could not be checked. Please check the logs.",
6970
"newFiles": "New files",
7071
"changedFiles": "Changed files",
7172
"missingFiles": "Missing files"

0 commit comments

Comments
 (0)