parent
0b7779b6ff
commit
3d01179907
@ -0,0 +1,95 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
/** |
||||
* @copyright Copyright (c) 2021, Joas Schilling <coding@schilljs.com> |
||||
* |
||||
* @author Joas Schilling <coding@schilljs.com> |
||||
* |
||||
* @license GNU AGPL version 3 or any later version |
||||
* |
||||
* This program is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License as |
||||
* published by the Free Software Foundation, either version 3 of the |
||||
* License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
* |
||||
*/ |
||||
|
||||
namespace OC\Core\Command\Background; |
||||
|
||||
use OC\Core\Command\Base; |
||||
use OCP\BackgroundJob\IJob; |
||||
use OCP\BackgroundJob\IJobList; |
||||
use OCP\ILogger; |
||||
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 ListCommand extends Base { |
||||
/** @var IJobList */ |
||||
protected $jobList; |
||||
/** @var ILogger */ |
||||
protected $logger; |
||||
|
||||
public function __construct(IJobList $jobList, |
||||
ILogger $logger) { |
||||
parent::__construct(); |
||||
$this->jobList = $jobList; |
||||
$this->logger = $logger; |
||||
} |
||||
|
||||
protected function configure(): void { |
||||
$this |
||||
->setName('background-job:list') |
||||
->setDescription('List background jobs') |
||||
->addOption( |
||||
'class', |
||||
'c', |
||||
InputOption::VALUE_OPTIONAL, |
||||
'Job class to search for', |
||||
null |
||||
)->addOption( |
||||
'limit', |
||||
'l', |
||||
InputOption::VALUE_OPTIONAL, |
||||
'Number of jobs to retrieve', |
||||
'10' |
||||
)->addOption( |
||||
'offset', |
||||
'o', |
||||
InputOption::VALUE_OPTIONAL, |
||||
'Offset for retrieving jobs', |
||||
'0' |
||||
) |
||||
; |
||||
parent::configure(); |
||||
} |
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int { |
||||
$jobs = $this->jobList->getJobs($input->getOption('class'), (int)$input->getOption('limit'), (int)$input->getOption('offset')); |
||||
$this->writeArrayInOutputFormat($input, $output, $this->formatJobs($jobs)); |
||||
return 0; |
||||
} |
||||
|
||||
protected function formatJobs(array $jobs): array { |
||||
return array_map( |
||||
fn($job) => [ |
||||
'id' => $job->getId(), |
||||
'class' => get_class($job), |
||||
'last_run' => $job->getLastRun(), |
||||
'argument' => json_encode($job->getArgument()), |
||||
], |
||||
$jobs |
||||
); |
||||
} |
||||
} |
||||
Loading…
Reference in new issue