%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps/app_api/lib/Command/ExAppConfig/ |
| Current File : /www/varak.net/nextcloud.varak.net/apps/app_api/lib/Command/ExAppConfig/SetConfig.php |
<?php
declare(strict_types=1);
namespace OCA\AppAPI\Command\ExAppConfig;
use OCA\AppAPI\Service\ExAppConfigService;
use OCA\AppAPI\Service\ExAppService;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class SetConfig extends Command {
public function __construct(
private readonly ExAppService $service,
private readonly ExAppConfigService $exAppConfigService
) {
parent::__construct();
}
protected function configure(): void {
$this->setName('app_api:app:config:set');
$this->setDescription('Set ExApp config');
$this->addArgument('appid', InputArgument::REQUIRED);
$this->addArgument('configkey', InputArgument::REQUIRED);
$this->addOption('value', null, InputOption::VALUE_REQUIRED);
$this->addOption('sensitive', null, InputOption::VALUE_OPTIONAL, 'Sensitive config value', null);
$this->addOption('update-only', null, InputOption::VALUE_NONE, 'Only update config, if not exists - do not create');
}
protected function execute(InputInterface $input, OutputInterface $output): int {
$appId = $input->getArgument('appid');
$exApp = $this->service->getExApp($appId);
if ($exApp === null) {
$output->writeln(sprintf('ExApp %s not found', $appId));
return 1;
}
$configKey = $input->getArgument('configkey');
$value = $input->getOption('value');
$isSensitive = $input->getOption('sensitive');
$sensitive = (int) filter_var($isSensitive, FILTER_VALIDATE_BOOLEAN);
$updateOnly = $input->getOption('update-only');
$exAppConfig = $this->exAppConfigService->getAppConfig($appId, $configKey);
if (!$updateOnly) {
if ($exAppConfig !== null) {
$output->writeln(sprintf('ExApp %s config %s already exists. Use --update-only flag.', $appId, $configKey));
return 1;
}
$exAppConfig = $this->exAppConfigService->setAppConfigValue($appId, $configKey, $value, $sensitive);
if ($exAppConfig === null) {
$output->writeln(sprintf('ExApp %s config %s not found', $appId, $configKey));
return 1;
}
} else {
if ($exAppConfig === null) {
$output->writeln(sprintf('ExApp %s config %s not found', $appId, $configKey));
return 1;
}
$exAppConfig->setConfigvalue($value);
if ($isSensitive !== null) {
$exAppConfig->setSensitive($sensitive);
}
if ($this->exAppConfigService->updateAppConfigValue($exAppConfig) === null) {
$output->writeln(sprintf('ExApp %s config %s not updated', $appId, $configKey));
return 1;
}
}
$sensitiveMsg = $exAppConfig->getSensitive() === 1 ? '[sensitive]' : '';
$output->writeln(sprintf('ExApp %s config %s set to %s %s', $appId, $configKey, $value, $sensitiveMsg));
return 0;
}
}