Import TechBot
[reactos.git] / irc / TechBot / TechBot.Console / Main.cs
diff --git a/irc/TechBot/TechBot.Console/Main.cs b/irc/TechBot/TechBot.Console/Main.cs
new file mode 100644 (file)
index 0000000..9705e67
--- /dev/null
@@ -0,0 +1,187 @@
+using System;\r
+using System.Configuration;\r
+using TechBot.Library;\r
+\r
+namespace TechBot.Console\r
+{\r
+       public class ConsoleServiceOutput : IServiceOutput\r
+       {\r
+               public void WriteLine(string message)\r
+               {\r
+                       System.Console.WriteLine(message);\r
+               }\r
+       }\r
+\r
+       \r
+       class MainClass\r
+       {\r
+               private static void VerifyRequiredOption(string optionName,\r
+                                                        string optionValue)\r
+               {\r
+                       if (optionValue == null)\r
+                       {\r
+                               throw new Exception(String.Format("Option '{0}' not set.",\r
+                                                                 optionName));\r
+                       }\r
+               }\r
+               \r
+               private static string IRCServerHostName\r
+               {\r
+                       get\r
+                       {\r
+                               string optionName = "IRCServerHostName";\r
+                               string s = ConfigurationSettings.AppSettings[optionName];\r
+                               VerifyRequiredOption(optionName,\r
+                                                    s);\r
+                               return s;\r
+                       }\r
+               }\r
+\r
+               private static int IRCServerHostPort\r
+               {\r
+                       get\r
+                       {\r
+                               string optionName = "IRCServerHostPort";\r
+                               string s = ConfigurationSettings.AppSettings[optionName];\r
+                               VerifyRequiredOption(optionName,\r
+                                                    s);\r
+                               return Int32.Parse(s);\r
+                       }\r
+               }\r
+\r
+               private static string IRCChannelName\r
+               {\r
+                       get\r
+                       {\r
+                               string optionName = "IRCChannelName";\r
+                               string s = ConfigurationSettings.AppSettings[optionName];\r
+                               VerifyRequiredOption(optionName,\r
+                                                    s);\r
+                               return s;\r
+                       }\r
+               }\r
+\r
+               private static string IRCBotName\r
+               {\r
+                       get\r
+                       {\r
+                               string optionName = "IRCBotName";\r
+                               string s = ConfigurationSettings.AppSettings[optionName];\r
+                               VerifyRequiredOption(optionName,\r
+                                                    s);\r
+                               return s;\r
+                       }\r
+               }\r
+\r
+               private static string ChmPath\r
+               {\r
+                       get\r
+                       {\r
+                               string optionName = "ChmPath";\r
+                               string s = ConfigurationSettings.AppSettings[optionName];\r
+                               VerifyRequiredOption(optionName,\r
+                                                    s);\r
+                               return s;\r
+                       }\r
+               }\r
+               \r
+               private static string MainChm\r
+               {\r
+                       get\r
+                       {\r
+                               string optionName = "MainChm";\r
+                               string s = ConfigurationSettings.AppSettings[optionName];\r
+                               VerifyRequiredOption(optionName,\r
+                                                    s);\r
+                               return s;\r
+                       }\r
+               }\r
+\r
+               private static string NtstatusXml\r
+               {\r
+                       get\r
+                       {\r
+                               string optionName = "NtstatusXml";\r
+                               string s = ConfigurationSettings.AppSettings[optionName];\r
+                               VerifyRequiredOption(optionName,\r
+                                                    s);\r
+                               return s;\r
+                       }\r
+               }\r
+\r
+               private static string WinerrorXml\r
+               {\r
+                       get\r
+                       {\r
+                               string optionName = "WinerrorXml";\r
+                               string s = ConfigurationSettings.AppSettings[optionName];\r
+                               VerifyRequiredOption(optionName,\r
+                                                    s);\r
+                               return s;\r
+                       }\r
+               }\r
+\r
+               private static string HresultXml\r
+               {\r
+                       get\r
+                       {\r
+                               string optionName = "HresultXml";\r
+                               string s = ConfigurationSettings.AppSettings[optionName];\r
+                               VerifyRequiredOption(optionName,\r
+                                                    s);\r
+                               return s;\r
+                       }\r
+               }\r
+\r
+               private static string SvnCommand\r
+               {\r
+                       get\r
+                       {\r
+                               string optionName = "SvnCommand";\r
+                               string s = ConfigurationSettings.AppSettings[optionName];\r
+                               VerifyRequiredOption(optionName,\r
+                                                    s);\r
+                               return s;\r
+                       }\r
+               }\r
+\r
+               private static void RunIrcService()\r
+               {\r
+                       IrcService ircService = new IrcService(IRCServerHostName,\r
+                                                              IRCServerHostPort,\r
+                                                              IRCChannelName,\r
+                                                              IRCBotName,\r
+                                                              ChmPath,\r
+                                                              MainChm,\r
+                                                              NtstatusXml,\r
+                                                              WinerrorXml,\r
+                                                              HresultXml,\r
+                                                              SvnCommand);\r
+                       ircService.Run();\r
+               }\r
+               \r
+               public static void Main(string[] args)\r
+               {\r
+                       if (args.Length > 0 && args[0].ToLower().Equals("irc"))\r
+                       {\r
+                               RunIrcService();\r
+                               return;\r
+                       }\r
+                       \r
+                       System.Console.WriteLine("TechBot running console service...");\r
+                       TechBotService service = new TechBotService(new ConsoleServiceOutput(),\r
+                                                                   ChmPath,\r
+                                                                   MainChm,\r
+                                                                   NtstatusXml,\r
+                                                                   WinerrorXml,\r
+                                                                   HresultXml,\r
+                                                                   SvnCommand);\r
+                       service.Run();\r
+                       while (true)\r
+                       {\r
+                               string s = System.Console.ReadLine();\r
+                               service.InjectMessage(s);\r
+                       }\r
+               }\r
+       }\r
+}\r