Implement "!bug <number>" command.
authorFilip Navara <filip.navara@gmail.com>
Wed, 14 Dec 2005 18:13:05 +0000 (18:13 +0000)
committerFilip Navara <filip.navara@gmail.com>
Wed, 14 Dec 2005 18:13:05 +0000 (18:13 +0000)
svn path=/trunk/; revision=20165

irc/TechBot/TechBot.Console/App.config
irc/TechBot/TechBot.Console/Main.cs
irc/TechBot/TechBot.Library/BugCommand.cs [new file with mode: 0644]
irc/TechBot/TechBot.Library/IrcService.cs
irc/TechBot/TechBot.Library/TechBot.Library.prjx
irc/TechBot/TechBot.Library/TechBotService.cs
irc/TechBot/TechBot/App.config
irc/TechBot/TechBot/ServiceThread.cs

index 03b57ba..28d804b 100644 (file)
@@ -12,5 +12,6 @@
                <add key="HresultXml" value="C:\IRC\TechBot\hresult.xml" />\r
                <add key="WmXml" value="C:\IRC\TechBot\wm.xml" />\r
                <add key="SvnCommand" value="svn co svn://svn.reactos.com/trunk/reactos" />\r
+               <add key="BugUrl" value="www.reactos.org/bugzilla/show_bug.cgi?id={0}" />\r
        </appSettings>\r
 </configuration>\r
index d6e6045..7c41f5d 100644 (file)
@@ -158,6 +158,18 @@ namespace TechBot.Console
                        }\r
                }\r
 \r
+               private static string BugUrl\r
+               {\r
+                       get\r
+                       {\r
+                               string optionName = "BugUrl";\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
@@ -170,7 +182,8 @@ namespace TechBot.Console
                                                               WinerrorXml,\r
                                                               HresultXml,\r
                                                               WmXml,\r
-                                                              SvnCommand);\r
+                                                              SvnCommand,\r
+                                                              BugUrl);\r
                        ircService.Run();\r
                }\r
                \r
@@ -190,7 +203,8 @@ namespace TechBot.Console
                                                                    WinerrorXml,\r
                                                                    HresultXml,\r
                                                                    WmXml,\r
-                                                                   SvnCommand);\r
+                                                                   SvnCommand,\r
+                                                                   BugUrl);\r
                        service.Run();\r
                        while (true)\r
                        {\r
diff --git a/irc/TechBot/TechBot.Library/BugCommand.cs b/irc/TechBot/TechBot.Library/BugCommand.cs
new file mode 100644 (file)
index 0000000..955abe7
--- /dev/null
@@ -0,0 +1,54 @@
+using System;\r
+\r
+namespace TechBot.Library\r
+{\r
+       public class BugCommand : BaseCommand, ICommand\r
+       {\r
+               private IServiceOutput serviceOutput;\r
+               private string bugUrl;\r
+\r
+               public BugCommand(IServiceOutput serviceOutput,\r
+                                 string bugUrl)\r
+               {\r
+                       this.serviceOutput = serviceOutput;\r
+                       this.bugUrl = bugUrl;\r
+               }\r
+               \r
+               public bool CanHandle(string commandName)\r
+               {\r
+                       return CanHandle(commandName,\r
+                                        new string[] { "bug" });\r
+               }\r
+\r
+               public void Handle(MessageContext context,\r
+                                  string commandName,\r
+                                  string parameters)\r
+               {\r
+                       string bugText = parameters;\r
+                       if (bugText.Equals(String.Empty))\r
+                       {\r
+                               serviceOutput.WriteLine(context,\r
+                                                       "Please provide a valid bug number.");\r
+                               return;\r
+                       }\r
+\r
+                       NumberParser np = new NumberParser();\r
+                       long bug = np.Parse(bugText);\r
+                       if (np.Error)\r
+                       {\r
+                               serviceOutput.WriteLine(context,\r
+                                                       String.Format("{0} is not a valid bug number.",\r
+                                                                     bugText));\r
+                               return;\r
+                       }\r
+\r
+                       serviceOutput.WriteLine(context,\r
+                                               String.Format(bugUrl, bug));\r
+               }\r
+               \r
+               public string Help()\r
+               {\r
+                       return "!bug <number>";\r
+               }\r
+       }\r
+}\r
index 587bd9b..a771f41 100644 (file)
@@ -18,6 +18,7 @@ namespace TechBot.Library
                private string hresultXml;\r
                private string wmXml;\r
                private string svnCommand;\r
+               private string bugUrl;\r
                private IrcClient client;\r
                private ArrayList channels = new ArrayList(); /* IrcChannel */\r
                private TechBotService service;\r
@@ -33,7 +34,8 @@ namespace TechBot.Library
                                  string winerrorXml,\r
                                  string hresultXml,\r
                                  string wmXml,\r
-                                 string svnCommand)\r
+                                 string svnCommand,\r
+                                 string bugUrl)\r
                {\r
                        this.hostname = hostname;\r
                        this.port = port;\r
@@ -46,6 +48,7 @@ namespace TechBot.Library
                        this.hresultXml = hresultXml;\r
                        this.wmXml = wmXml;\r
                        this.svnCommand = svnCommand;\r
+                       this.bugUrl = bugUrl;\r
                }\r
 \r
                public void Run()\r
@@ -57,7 +60,8 @@ namespace TechBot.Library
                                                     winerrorXml,\r
                                                     hresultXml,\r
                                                     wmXml,\r
-                                                    svnCommand);\r
+                                                    svnCommand,\r
+                                                    bugUrl);\r
                        service.Run();\r
 \r
                        client = new IrcClient();\r
index cce5c67..b2d45ac 100644 (file)
@@ -13,6 +13,7 @@
     <File name=".\HresultCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" />\r
     <File name=".\WinerrorCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" />\r
     <File name=".\SvnCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" />\r
+    <File name=".\BugCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" />\r
     <File name=".\WmCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" />\r
     <File name=".\MessageContext.cs" subtype="Code" buildaction="Compile" dependson="" data="" />\r
   </Contents>\r
index 1236998..e169fc8 100644 (file)
@@ -17,6 +17,7 @@ namespace TechBot.Library
                private string hresultXml;\r
                private string wmXml;\r
                private string svnCommand;\r
+               private string bugUrl;\r
                private ArrayList commands = new ArrayList();\r
                \r
                public TechBotService(IServiceOutput serviceOutput,\r
@@ -26,7 +27,8 @@ namespace TechBot.Library
                                      string winerrorXml,\r
                                      string hresultXml,\r
                                      string wmXml,\r
-                                     string svnCommand)\r
+                                     string svnCommand,\r
+                                     string bugUrl)\r
                {\r
                        this.serviceOutput = serviceOutput;\r
                        this.chmPath = chmPath;\r
@@ -36,6 +38,7 @@ namespace TechBot.Library
                        this.hresultXml = hresultXml;\r
                        this.wmXml = wmXml;\r
                        this.svnCommand = svnCommand;\r
+                       this.bugUrl = bugUrl;\r
                }\r
                \r
                public void Run()\r
@@ -55,6 +58,8 @@ namespace TechBot.Library
                                                   wmXml));\r
                        commands.Add(new SvnCommand(serviceOutput,\r
                                                    svnCommand));\r
+                       commands.Add(new BugCommand(serviceOutput,\r
+                                                   bugUrl));\r
                }\r
                \r
                public void InjectMessage(MessageContext context,\r
index 03b57ba..28d804b 100644 (file)
@@ -12,5 +12,6 @@
                <add key="HresultXml" value="C:\IRC\TechBot\hresult.xml" />\r
                <add key="WmXml" value="C:\IRC\TechBot\wm.xml" />\r
                <add key="SvnCommand" value="svn co svn://svn.reactos.com/trunk/reactos" />\r
+               <add key="BugUrl" value="www.reactos.org/bugzilla/show_bug.cgi?id={0}" />\r
        </appSettings>\r
 </configuration>\r
index 5a61219..0c95478 100644 (file)
@@ -18,6 +18,7 @@ namespace TechBot
                private string WmXml;\r
                private string WinerrorXml;\r
                private string SvnCommand;\r
+               private string BugUrl;\r
                private EventLog eventLog;\r
                \r
                public ServiceThread(EventLog eventLog)\r
@@ -38,6 +39,7 @@ namespace TechBot
                        WmXml = ConfigurationSettings.AppSettings["WmXml"];\r
                        WinerrorXml = ConfigurationSettings.AppSettings["WinerrorXml"];\r
                        SvnCommand = ConfigurationSettings.AppSettings["SvnCommand"];\r
+                       BugUrl = ConfigurationSettings.AppSettings["BugUrl"];\r
                }\r
                \r
                public void Run()\r
@@ -55,7 +57,8 @@ namespace TechBot
                                                               WinerrorXml,\r
                                                               HresultXml,\r
                                                               WmXml,\r
-                                                              SvnCommand);\r
+                                                              SvnCommand,\r
+                                                              BugUrl);\r
                        ircService.Run();\r
                }\r
                \r