public static void Main()
    {
        var line   = Console.ReadLine();
        var engine = new CommandEngine(new JobRepo(), new EmployeeRepo(), new EmployeeFactory(), new JobFactory());

        while (!line.Equals("End"))
        {
            engine.ExecuteCommand(line);

            line = Console.ReadLine();
        }
    }
Beispiel #2
0
        /// <summary>
        /// Entry point
        /// </summary>
        /// <param name="args"></param>
        public static void Main(string[] args)
        {
            // Setup output device
            var outputDevice = new ConsoleOutputDevice();

            // Setup engine
            var engine = new CommandEngine(outputDevice)
            {
                Context = new CommandContext {
                    WorkingDirectory = Path.GetFullPath("."), Terminate = false
                }
            };

            // Register all modules
            foreach (var module in ModuleRegistry.Modules)
            {
                module.RegisterCommands(engine);
                module.PrintInfo(outputDevice, true);
            }

            // Parse args
            var cmdLine = new Command(Environment.CommandLine);

            // If the command is empty, fallback to our default one
            if (cmdLine.NamedArgCount == 0 && cmdLine.SimpleArgs.Length == 0)
            {
                cmdLine = defaultCommand;
            }

            // Run commands?
            var runCmd = cmdLine.GetNamedArg("run");

            if (!string.IsNullOrEmpty(runCmd))
            {
                var cmdList = runCmd.Split(';');
                for (var i = 0; i < cmdList.Length; i++)
                {
                    // Write
                    outputDevice.WriteStaticLine($"$cyan{Path.GetFileName(engine.Context.WorkingDirectory)}/$white: {cmdList[i]}");

                    // Handle command
                    if (!engine.ExecuteCommand(cmdList[i]))
                    {
                        outputDevice.WriteStaticLine("$redUnknown command");
                    }
                }
            }

            // Terminal mode?
            if (cmdLine.SimpleArgs.Any(a => a == "t" || a == "terminal"))
            {
                // Core input loop
                while (!engine.Context.Terminate)
                {
                    // Input prompt
                    Console.SetCursorPosition(0, Console.CursorTop + 1);
                    Console.ForegroundColor = ConsoleColor.Cyan;
                    Console.Write($"{Path.GetFileName(engine.Context.WorkingDirectory)}/");
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.Write(": ");
                    var line = Console.ReadLine();

                    // Write
                    outputDevice.WriteStaticLine($"$cyan{Path.GetFileName(engine.Context.WorkingDirectory)}/$white: {line}");

                    // Handle command
                    engine.Context.ErrorFlag = false;
                    if (!engine.ExecuteCommand(line))
                    {
                        outputDevice.WriteStaticLine("$redUnknown command");
                    }
                }
            }

            // Exit check
            if (!cmdLine.SimpleArgs.Any(a => a == "ce" || a == "cleanexit"))
            {
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine();
                Console.WriteLine("Press any key to continue...");
                Console.ReadKey();
            }
        }