Add new command

Clean code
Add new command
Import last modified and deleted date
Replace arrow functions by lambda functions
Add properties to class
Add dependency to composer.json
Signed-off-by: Vitor Mattos <vitor@php.rio>
Turn private methods
Add output messages and associate users to cards

Signed-off-by: Vitor Mattos <vitor@php.rio>
This commit is contained in:
Vitor Mattos
2021-07-09 23:35:56 -03:00
committed by Julius Härtl
parent 89028c74cb
commit 48df98ce67
13 changed files with 1513 additions and 355 deletions

View File

@@ -0,0 +1,86 @@
<?php
namespace OCA\Deck\Command\Helper;
use JsonSchema\Validator;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Question\Question;
class ImportAbstract {
/** @var Command */
private $command;
/** @var \stdClass */
private $settings;
public function setCommand(Command $command): void {
$this->command = $command;
}
/**
* @return Command
*/
public function getCommand() {
return $this->command;
}
/**
* Get a setting
*
* @param string $setting Setting name
* @return mixed
*/
public function getSetting($setting) {
return $this->settings->$setting;
}
/**
* Define a setting
*
* @param string $settingName
* @param mixed $value
* @return void
*/
public function setSetting($settingName, $value) {
$this->settings->$settingName = $value;
}
protected function validateSettings(InputInterface $input, OutputInterface $output): void {
$settingFile = $input->getOption('setting');
if (!is_file($settingFile)) {
$helper = $this->getCommand()->getHelper('question');
$question = new Question(
'Please inform a valid setting json file: ',
'config.json'
);
$question->setValidator(function ($answer) {
if (!is_file($answer)) {
throw new \RuntimeException(
'Setting file not found'
);
}
return $answer;
});
$settingFile = $helper->ask($input, $output, $question);
$input->setOption('setting', $settingFile);
}
$this->settings = json_decode(file_get_contents($settingFile));
$validator = new Validator();
$validator->validate(
$this->settings,
(object)['$ref' => 'file://' . realpath(__DIR__ . '/../fixtures/setting-schema.json')]
);
if (!$validator->isValid()) {
$output->writeln('<error>Invalid setting file</error>');
$output->writeln(array_map(function ($v) {
return $v['message'];
}, $validator->getErrors()));
$output->writeln('Valid schema:');
$output->writeln(print_r(file_get_contents(__DIR__ . '/fixtures/setting-schema.json'), true));
$input->setOption('setting', null);
$this->validateSettings($input, $output);
}
}
}