. */ namespace SP\Modules\Cli\Commands; use Psr\Log\LoggerInterface; use SP\Domain\Config\Ports\ConfigDataInterface; use SP\Domain\Config\Ports\ConfigFileService; use SP\Domain\Config\Services\ConfigFile; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; /** * Class CommandBase * * @package SP\Modules\Cli\Commands */ abstract class CommandBase extends Command { public static array $envVarsMapping = []; protected LoggerInterface $logger; protected ConfigFile $config; protected ConfigDataInterface $configData; public function __construct( LoggerInterface $logger, ConfigFileService $config ) { $this->logger = $logger; $this->config = $config; $this->configData = $this->config->getConfigData(); parent::__construct(); } /** * @return array|false|mixed|string */ protected static function getEnvVarOrOption( string $option, InputInterface $input ) { return static::getEnvVarForOption($option) ?: $input->getOption($option); } /** * @return string|false */ protected static function getEnvVarForOption(string $option) { return getenv(static::$envVarsMapping[$option]); } /** * @return array|false|mixed|string */ protected static function getEnvVarOrArgument( string $argument, InputInterface $input ) { return static::getEnvVarForOption($argument) ?: $input->getArgument($argument); } }