#!/usr/bin/env php bootstrapConsole(); echo "Getting container..." . PHP_EOL; $reflection = new ReflectionClass($consoleApp); $containerProperty = $reflection->getProperty('container'); $containerProperty->setAccessible(true); $container = $containerProperty->getValue($consoleApp); echo "Creating discovery bootstrapper..." . PHP_EOL; $discoveryBootstrapper = new DiscoveryServiceBootstrapper($container, $clock); echo "Running fresh discovery (forced, no cache)..." . PHP_EOL; // Force a fresh discovery by calling performBootstrap directly $reflectionBootstrapper = new ReflectionClass($discoveryBootstrapper); $performBootstrapMethod = $reflectionBootstrapper->getMethod('performBootstrap'); $performBootstrapMethod->setAccessible(true); $pathProvider = $container->get(\App\Framework\Core\PathProvider::class); $cache = $container->get(\App\Framework\Cache\Cache::class); echo "Calling performBootstrap..." . PHP_EOL; $results = $performBootstrapMethod->invoke($discoveryBootstrapper, $pathProvider, $cache, null); echo "Fresh discovery completed!" . PHP_EOL; echo "Total attributes found: " . $results->attributes->count() . PHP_EOL; $commands = $results->attributes->get(ConsoleCommand::class); echo "ConsoleCommand attributes found: " . count($commands) . PHP_EOL; if (count($commands) > 0) { foreach ($commands as $discovered) { $methodName = $discovered->methodName ? $discovered->methodName->toString() : '__invoke'; echo "- " . $discovered->className->getFullyQualified() . "::" . $methodName . PHP_EOL; $command = $discovered->createAttributeInstance(); echo " Command: " . $command->name . " - " . $command->description . PHP_EOL; } } else { echo "Still no ConsoleCommand attributes found!" . PHP_EOL; // Let's check what classes are being discovered $allTypes = $results->attributes->getAllTypes(); echo "All discovered attribute types: " . implode(', ', $allTypes) . PHP_EOL; // Check scan paths echo "Checking scan paths..." . PHP_EOL; $sourcePath = $pathProvider->getSourcePath(); echo "Source path: $sourcePath" . PHP_EOL; // Check if DemoCommand file exists in scan path $demoCommandPath = $sourcePath . '/Framework/Console/DemoCommand.php'; echo "DemoCommand file exists: " . (file_exists($demoCommandPath) ? 'YES' : 'NO') . PHP_EOL; echo "Full path: $demoCommandPath" . PHP_EOL; } } catch (Exception $e) { echo "Error: " . $e->getMessage() . PHP_EOL; echo "Stack trace: " . $e->getTraceAsString() . PHP_EOL; }