static-php-cli/src/SPC/command/ExtractCommand.php

43 lines
1.4 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
namespace SPC\command;
use SPC\builder\traits\UnixSystemUtilTrait;
use SPC\exception\FileSystemException;
use SPC\exception\RuntimeException;
use SPC\exception\WrongUsageException;
2024-02-18 13:54:06 +08:00
use SPC\store\SourceManager;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Input\InputArgument;
2024-02-18 13:54:06 +08:00
#[AsCommand('extract', 'Extract required sources', ['extract-source'])]
class ExtractCommand extends BaseCommand
{
use UnixSystemUtilTrait;
public function configure(): void
{
$this->addArgument('sources', InputArgument::REQUIRED, 'The sources will be compiled, comma separated');
$this->addOption('source-only', null, null, 'Only check the source exist, do not check the lib and ext');
}
/**
* @throws WrongUsageException
* @throws FileSystemException
* @throws RuntimeException
*/
public function handle(): int
{
$sources = array_map('trim', array_filter(explode(',', $this->getArgument('sources'))));
if (empty($sources)) {
2023-08-05 21:53:46 +02:00
$this->output->writeln('<error>sources cannot be empty, at least contain one !</error>');
2023-08-06 10:43:20 +08:00
return static::FAILURE;
}
SourceManager::initSource(sources: $sources, source_only: $this->getOption('source-only'));
logger()->info('Extract done !');
2023-08-06 10:43:20 +08:00
return static::SUCCESS;
}
}