// Program.cs using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using MarketAlly.AIPlugin; using MarketAlly.AIPlugin.Refactoring.Plugins; using System.Text.Json; namespace MarketAlly.AIPlugin.Refactoring.TestConsole; class GitProgram { static async Task OldMain(string[] args) { var host = CreateHost(); var testService = host.Services.GetRequiredService(); try { ShowWelcomeEnhanced(); // If command line arguments provided, execute them first if (args.Length > 0) { await ExecuteEnhancedCommand(args, testService); Console.WriteLine(); } // Start interactive loop while (true) { try { Console.Write("RefactoringTest> "); var input = Console.ReadLine(); if (string.IsNullOrWhiteSpace(input)) continue; if (input.Trim() == "/exit" || input.Trim() == "exit") { Console.WriteLine("[INFO] Goodbye!"); break; } if (input.Trim() == "/help" || input.Trim() == "help") { ShowEnhancedHelp(); continue; } var commandArgs = ParseInput(input); if (commandArgs.Length == 0) continue; await ExecuteEnhancedCommand(commandArgs, testService); Console.WriteLine(); } catch (Exception ex) { Console.WriteLine($"[ERROR] Command error: {ex.Message}"); Console.WriteLine(); } } return 0; } catch (Exception ex) { Console.WriteLine($"[ERROR] Application error: {ex.Message}"); return 1; } } private static async Task ExecuteEnhancedCommand(string[] args, EnhancedRefactoringTestService service) { if (args.Length == 0) { ShowEnhancedHelp(); return; } var command = args[0].ToLower(); switch (command) { case "create-advanced-samples": await service.CreateAdvancedSampleFiles(); break; case "test-refactor": var refactorFile = GetFilePathFromArgs(args, "Enter file path for refactoring: "); if (!string.IsNullOrEmpty(refactorFile)) { var operations = GetOperationsFromArgs(args, "Enter operations (extract-methods,split-classes,simplify-conditionals,remove-duplicates,introduce-parameter-objects): "); var apply = args.Contains("--apply"); await service.TestActualRefactoring(refactorFile, operations, apply); } break; case "test-workflow": await service.TestCompleteRefactoringWorkflow(); break; case "compare-before-after": var compareFile = GetFilePathFromArgs(args, "Enter file path to compare: "); if (!string.IsNullOrEmpty(compareFile)) { await CompareBeforeAfter(compareFile, service); } break; case "demo-refactoring": await DemonstrateRefactoringCapabilities(service); break; // Include all original commands... case "create-sample": //await service.CreateSampleFilesAsync(); break; case "test-analysis": var analysisFile = GetFilePathFromArgs(args, "Enter file path for analysis: "); //if (!string.IsNullOrEmpty(analysisFile)) //await service.TestCodeAnalysisAsync(analysisFile); break; case "help": ShowEnhancedHelp(); break; default: Console.WriteLine($"[ERROR] Unknown command: {command}"); ShowEnhancedHelp(); break; } } private static async Task CompareBeforeAfter(string filePath, EnhancedRefactoringTestService service) { Console.WriteLine($"[COMPARE] Demonstrating refactoring impact on: {Path.GetFileName(filePath)}"); Console.WriteLine(new string('=', 80)); // Show original analysis Console.WriteLine("[BEFORE REFACTORING]"); await service.TestCodeAnalysisOnFile(filePath); // Perform refactoring (preview mode) Console.WriteLine("\n[REFACTORING PREVIEW]"); await service.TestActualRefactoring(filePath, "extract-methods,simplify-conditionals", false); Console.WriteLine("\n[COMPARISON COMPLETE]"); Console.WriteLine("The above shows what improvements would be made to your code."); Console.WriteLine("Use 'test-refactor --file --operations --apply' to make actual changes."); } private static async Task DemonstrateRefactoringCapabilities(EnhancedRefactoringTestService service) { Console.WriteLine("[DEMO] Demonstrating MarketAlly Refactoring Plugin Capabilities"); Console.WriteLine(new string('=', 80)); Console.WriteLine("This demo shows how the refactoring plugins can:"); Console.WriteLine("1. ✓ Analyze code quality and complexity"); Console.WriteLine("2. ✓ Generate intelligent documentation"); Console.WriteLine("3. ✓ Format and clean up code style"); Console.WriteLine("4. ✓ Improve naming conventions"); Console.WriteLine("5. ✓ ACTUALLY REFACTOR CODE STRUCTURE (New!)"); Console.WriteLine(); // Create and demonstrate on a complex file await service.CreateAdvancedSampleFiles(); var complexFile = Path.Combine(Directory.GetCurrentDirectory(), "advanced_samples", "ComplexCalculator.cs"); Console.WriteLine("[DEMO STEP 1] Original code analysis:"); await service.TestCodeAnalysisOnFile(complexFile); Console.WriteLine("\n[DEMO STEP 2] Actual refactoring suggestions:"); await service.TestActualRefactoring(complexFile, "extract-methods,simplify-conditionals", false); Console.WriteLine("\n[DEMO COMPLETE]"); Console.WriteLine("The refactoring plugin can now:"); Console.WriteLine("• Extract complex methods into smaller, focused methods"); Console.WriteLine("• Identify opportunities to split large classes"); Console.WriteLine("• Find and suggest removal of duplicate code"); Console.WriteLine("• Recommend parameter objects for methods with many parameters"); Console.WriteLine("• Simplify complex conditional logic"); Console.WriteLine("• Actually modify your code files (with backup)"); } private static string GetOperationsFromArgs(string[] args, string prompt) { var operationsIndex = Array.IndexOf(args, "--operations"); if (operationsIndex >= 0 && operationsIndex + 1 < args.Length) { return args[operationsIndex + 1]; } Console.Write(prompt); var operations = Console.ReadLine()?.Trim(); return string.IsNullOrEmpty(operations) ? "extract-methods,simplify-conditionals" : operations; } private static string GetFilePathFromArgs(string[] args, string prompt) { if (args.Length >= 3 && args[1] == "--file") { return args[2]; } Console.Write(prompt); var filePath = Console.ReadLine()?.Trim(); return string.IsNullOrEmpty(filePath) ? null : filePath; } private static string[] ParseInput(string input) { var parts = new List(); var current = new System.Text.StringBuilder(); bool inQuotes = false; foreach (char c in input) { if (c == '"') { inQuotes = !inQuotes; continue; } if (char.IsWhiteSpace(c) && !inQuotes) { if (current.Length > 0) { parts.Add(current.ToString()); current.Clear(); } } else { current.Append(c); } } if (current.Length > 0) { parts.Add(current.ToString()); } return parts.ToArray(); } private static void ShowWelcomeEnhanced() { Console.WriteLine("MarketAlly AI Plugin ENHANCED Refactoring Test Console"); Console.WriteLine("=" + new string('=', 56)); Console.WriteLine(); Console.WriteLine("🚀 NOW WITH ACTUAL CODE REFACTORING CAPABILITIES! 🚀"); Console.WriteLine(); Console.WriteLine("Test suite for analysis, documentation, formatting, AND refactoring"); Console.WriteLine("Type 'help' for commands or 'exit' to quit"); Console.WriteLine(); } private static void ShowEnhancedHelp() { Console.WriteLine(); Console.WriteLine("Available commands:"); Console.WriteLine(); Console.WriteLine("📝 ANALYSIS & DOCUMENTATION:"); Console.WriteLine(" create-sample Create basic sample C# files"); Console.WriteLine(" test-analysis [--file ] Test CodeAnalysisPlugin"); Console.WriteLine(" test-documentation [--file ] [--style