diff --git a/src/Command/SyncBaseUsersCommand.php b/src/Command/SyncBaseUsersCommand.php
index fed6edf..22a95b6 100644
--- a/src/Command/SyncBaseUsersCommand.php
+++ b/src/Command/SyncBaseUsersCommand.php
@@ -7,10 +7,12 @@
use AnzuSystems\CommonBundle\Domain\User\UserSyncFacade;
use AnzuSystems\CommonBundle\Exception\ValidationException;
use AnzuSystems\CommonBundle\Model\User\UserDto;
+use AnzuSystems\Contracts\AnzuApp;
use AnzuSystems\SerializerBundle\Serializer;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use Throwable;
@@ -20,24 +22,45 @@
)]
final class SyncBaseUsersCommand extends Command
{
+ private const string USERS_FILE_PATH_OPT = 'file';
+ private const string USERS_FILE_PATH_DEFAULT = 'users.json';
+
public function __construct(
- private readonly string $usersData,
private readonly Serializer $serializer,
private readonly UserSyncFacade $userFacade,
) {
parent::__construct();
}
+ public function configure(): void
+ {
+ $this
+ ->addOption(
+ name: self::USERS_FILE_PATH_OPT,
+ mode: InputOption::VALUE_REQUIRED,
+ default: AnzuApp::getDataDir() . '/' . self::USERS_FILE_PATH_DEFAULT
+ );
+ }
+
protected function execute(InputInterface $input, OutputInterface $output): int
{
- if (empty($this->usersData)) {
- $output->writeln('Users data contains empty string');
+ $filePath = $input->getOption(self::USERS_FILE_PATH_OPT);
+
+ if (false === file_exists($filePath)) {
+ $output->writeln("File not found at path: ({$filePath})");
+
+ return Command::FAILURE;
+ }
+
+ $contents = file_get_contents($filePath);
+ if (false === json_validate($contents)) {
+ $output->writeln("Invalid json content at path: ({$filePath})");
- return Command::SUCCESS;
+ return Command::FAILURE;
}
/** @var UserDto[] $users */
- $users = $this->serializer->deserializeIterable($this->usersData, UserDto::class, []);
+ $users = $this->serializer->deserializeIterable($contents, UserDto::class, []);
foreach ($users as $userDto) {
$output->writeln($userDto->getId() . ' ' . $userDto->getEmail());
@@ -65,7 +88,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
}
}
- $output->writeln(PHP_EOL . 'Done');
+ $output->writeln('Done');
return Command::SUCCESS;
}
diff --git a/src/DependencyInjection/AnzuSystemsCommonExtension.php b/src/DependencyInjection/AnzuSystemsCommonExtension.php
index a67ecc5..a0fe2b0 100644
--- a/src/DependencyInjection/AnzuSystemsCommonExtension.php
+++ b/src/DependencyInjection/AnzuSystemsCommonExtension.php
@@ -301,7 +301,6 @@ private function loadSettings(ContainerBuilder $container): void
);
$container->getDefinition(SyncBaseUsersCommand::class)
- ->setArgument('$usersData', $settings['user_sync_data'])
->setArgument('$serializer', new Reference(Serializer::class))
->setArgument('$userFacade', new Reference(UserSyncFacade::class))
;
diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php
index 3b7a810..58deaaf 100644
--- a/src/DependencyInjection/Configuration.php
+++ b/src/DependencyInjection/Configuration.php
@@ -186,7 +186,6 @@ private function addSettingsSection(): NodeDefinition
->scalarNode('app_redis')->cannotBeEmpty()->end()
->scalarNode('app_cache_proxy_enabled')->defaultTrue()->end()
->scalarNode('user_entity_class')->defaultValue('App\\Entity\\User')->end()
- ->scalarNode('user_sync_data')->defaultValue('[]')->end()
->scalarNode('app_entity_namespace')->defaultValue('App\\Entity')->end()
->scalarNode('app_value_object_namespace')->defaultValue('App\\Model\\ValueObject')->end()
->scalarNode('app_enum_namespace')->defaultValue('App\\Model\\Enum')->end()