argument('groupId'); try { if (is_numeric($groupId)) { $this->processReleasesForGroup((string) $groupId); } else { $this->processReleasesForGroup(''); $this->runPostProcessingTasks(); } return self::SUCCESS; } catch (\Throwable $e) { Log::error($e->getTraceAsString()); $this->error($e->getMessage()); return self::FAILURE; } } /** * Create / process releases for a groupID. */ private function processReleasesForGroup(string $groupID): void { $limit = $this->releaseProcessingService->getReleaseCreationLimit(); $this->releaseProcessingService->processIncompleteCollections($groupID); $this->releaseProcessingService->processCollectionSizes($groupID); $this->releaseProcessingService->deleteUnwantedCollections($groupID); do { $result = $this->releaseProcessingService->createReleases($groupID); $nzbFilesAdded = $this->releaseProcessingService->createNZBs($groupID); $shouldContinue = $result->total() >= $limit || $nzbFilesAdded >= $limit; } while ($shouldContinue); $this->releaseProcessingService->deleteCollections($groupID); } /** * Run post-processing tasks after all group releases are processed. */ private function runPostProcessingTasks(): void { $this->releaseProcessingService->deletedReleasesByGroup(); $this->releaseProcessingService->deleteReleases(); $this->releaseProcessingService->categorizeReleases(2); } }