resolveMode(); if ($mode === null) { $allowed = implode(', ', array_map(fn (SitemapGenerationMode $m): string => $m->value, SitemapGenerationMode::cases())); $this->error('잘못된 모드입니다. 허용: '.$allowed); return Command::INVALID; } $forceSync = (bool) $this->option('sync'); // queue.default 는 SettingsServiceProvider 가 drivers.queue_driver 와 동기화하되, // testing 환경에서는 phpunit.xml 값을 보존하므로 격리가 유지된다. $connection = (string) Config::get('queue.default', 'sync'); $isSyncDriver = $connection === 'sync'; if ($forceSync || $isSyncDriver) { GenerateSitemapJob::dispatchSync($mode); $this->info("Sitemap이 생성되었습니다. (모드: {$mode->value})"); } else { GenerateSitemapJob::dispatch($mode); $this->info("Sitemap 생성이 큐에 디스패치되었습니다. (모드: {$mode->value})"); } return Command::SUCCESS; } /** * --rebuild / --mode 옵션으로부터 재생성 모드를 해석합니다. * * --rebuild 는 --mode 보다 우선하며 Full 로 강제합니다. * * @return SitemapGenerationMode|null 재생성 모드 (유효하지 않으면 null) */ private function resolveMode(): ?SitemapGenerationMode { if ((bool) $this->option('rebuild')) { return SitemapGenerationMode::Full; } return SitemapGenerationMode::tryFrom((string) $this->option('mode')); } }