예제 #1
0
        public static ConsoleLibrary Load(string filePath)
        {
            if (!File.Exists(filePath))
            {
                return(new ConsoleLibrary());
            }

            XmlSerializer  xs  = new XmlSerializer(typeof(ConsoleLibrary));
            Stream         s   = File.OpenRead(filePath);
            ConsoleLibrary lib = (ConsoleLibrary)xs.Deserialize(s);

            s.Close();
            return(lib);
        }
예제 #2
0
        public static void Run(string[] args, Dictionary <string, object> resolvers)
        {
            if (args.Length == 1 && args[0] == "reload")
            {
                if (File.Exists(ConsolePaths.RunnerConfig))
                {
                    File.Delete(ConsolePaths.RunnerConfig);
                }
                Console.WriteLine("Index File Cleared");
                return;
            }

            Resolvers = resolvers.ToDictionary(pair => pair.Key, pair => new ResolverWrapper(pair.Value));
            ConsolePaths.SetUpPaths();

            ConsoleLibrary lib = ConsoleLibrary.Load(ConsolePaths.RunnerConfig);

            if (lib.CheckConsoles())
            {
                try
                {
                    lib.Save(ConsolePaths.RunnerConfig);
                }
                catch (Exception)
                {
                }
            }

            if (args.Length != 0)
            {
                string[] consoleArgs = new string[args.Length - 1];
                Console.Write("Arguments: ");
                for (int i = 1; i < args.Length; i++)
                {
                    Console.Write(args[i] + " ");
                    consoleArgs[i - 1] = args[i];
                }

                Console.WriteLine();
                ConsoleItem item = lib.GetConsoleItem(args[0]);
                if (item != null)
                {
                    try
                    {
                        if (!item.Run(consoleArgs))
                        {
                            Console.WriteLine($"Exectuion of {args[0]} Failed.");
                            Console.ReadLine();
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                        if (e.InnerException != null)
                        {
                            Console.WriteLine("Inner: ");
                            Console.WriteLine(e.InnerException);
                        }

                        throw;
                    }
                }
                else
                {
                    Console.WriteLine("Can not find Console with Key: " + args[0]);
                }
            }
            else
            {
                Console.Write(lib.InstalledConsoles);
            }
        }