Implement "!bug <number>" command. Modified: trunk/irc/TechBot/TechBot/App.config Modified: trunk/irc/TechBot/TechBot/ServiceThread.cs Modified: trunk/irc/TechBot/TechBot.Console/App.config Modified: trunk/irc/TechBot/TechBot.Console/Main.cs Added: trunk/irc/TechBot/TechBot.Library/BugCommand.cs Modified: trunk/irc/TechBot/TechBot.Library/IrcService.cs Modified: trunk/irc/TechBot/TechBot.Library/TechBot.Library.prjx Modified: trunk/irc/TechBot/TechBot.Library/TechBotService.cs _____
Modified: trunk/irc/TechBot/TechBot/App.config --- trunk/irc/TechBot/TechBot/App.config 2005-12-14 17:34:00 UTC (rev 20164) +++ trunk/irc/TechBot/TechBot/App.config 2005-12-14 18:13:05 UTC (rev 20165) @@ -12,5 +12,6 @@
<add key="HresultXml" value="C:\IRC\TechBot\hresult.xml" /> <add key="WmXml" value="C:\IRC\TechBot\wm.xml" /> <add key="SvnCommand" value="svn co svn://svn.reactos.com/trunk/reactos" /> + <add key="BugUrl" value="www.reactos.org/bugzilla/show_bug.cgi?id={0}" /> </appSettings> </configuration> _____
Modified: trunk/irc/TechBot/TechBot/ServiceThread.cs --- trunk/irc/TechBot/TechBot/ServiceThread.cs 2005-12-14 17:34:00 UTC (rev 20164) +++ trunk/irc/TechBot/TechBot/ServiceThread.cs 2005-12-14 18:13:05 UTC (rev 20165) @@ -18,6 +18,7 @@
private string WmXml; private string WinerrorXml; private string SvnCommand; + private string BugUrl; private EventLog eventLog; public ServiceThread(EventLog eventLog) @@ -38,6 +39,7 @@ WmXml = ConfigurationSettings.AppSettings["WmXml"]; WinerrorXml = ConfigurationSettings.AppSettings["WinerrorXml"]; SvnCommand = ConfigurationSettings.AppSettings["SvnCommand"]; + BugUrl = ConfigurationSettings.AppSettings["BugUrl"]; } public void Run() @@ -55,7 +57,8 @@
WinerrorXml,
HresultXml, WmXml, - SvnCommand); + SvnCommand, + BugUrl); ircService.Run(); } _____
Modified: trunk/irc/TechBot/TechBot.Console/App.config --- trunk/irc/TechBot/TechBot.Console/App.config 2005-12-14 17:34:00 UTC (rev 20164) +++ trunk/irc/TechBot/TechBot.Console/App.config 2005-12-14 18:13:05 UTC (rev 20165) @@ -12,5 +12,6 @@
<add key="HresultXml" value="C:\IRC\TechBot\hresult.xml" /> <add key="WmXml" value="C:\IRC\TechBot\wm.xml" /> <add key="SvnCommand" value="svn co svn://svn.reactos.com/trunk/reactos" /> + <add key="BugUrl" value="www.reactos.org/bugzilla/show_bug.cgi?id={0}" /> </appSettings> </configuration> _____
Modified: trunk/irc/TechBot/TechBot.Console/Main.cs --- trunk/irc/TechBot/TechBot.Console/Main.cs 2005-12-14 17:34:00 UTC (rev 20164) +++ trunk/irc/TechBot/TechBot.Console/Main.cs 2005-12-14 18:13:05 UTC (rev 20165) @@ -158,6 +158,18 @@
} }
+ private static string BugUrl + { + get + { + string optionName = "BugUrl"; + string s = ConfigurationSettings.AppSettings[optionName]; + VerifyRequiredOption(optionName, + s); + return s; + } + } + private static void RunIrcService() { IrcService ircService = new IrcService(IRCServerHostName, @@ -170,7 +182,8 @@
WinerrorXml,
HresultXml, WmXml, - SvnCommand); + SvnCommand, + BugUrl); ircService.Run(); } @@ -190,7 +203,8 @@
WinerrorXml,
HresultXml,
WmXml, - SvnCommand); + SvnCommand, + BugUrl); service.Run(); while (true) { _____
Added: trunk/irc/TechBot/TechBot.Library/BugCommand.cs --- trunk/irc/TechBot/TechBot.Library/BugCommand.cs 2005-12-14 17:34:00 UTC (rev 20164) +++ trunk/irc/TechBot/TechBot.Library/BugCommand.cs 2005-12-14 18:13:05 UTC (rev 20165) @@ -0,0 +1,54 @@
+using System; + +namespace TechBot.Library +{ + public class BugCommand : BaseCommand, ICommand + { + private IServiceOutput serviceOutput; + private string bugUrl; + + public BugCommand(IServiceOutput serviceOutput, + string bugUrl) + { + this.serviceOutput = serviceOutput; + this.bugUrl = bugUrl; + } + + public bool CanHandle(string commandName) + { + return CanHandle(commandName, + new string[] { "bug" }); + } + + public void Handle(MessageContext context, + string commandName, + string parameters) + { + string bugText = parameters; + if (bugText.Equals(String.Empty)) + { + serviceOutput.WriteLine(context, + "Please provide a valid bug number."); + return; + } + + NumberParser np = new NumberParser(); + long bug = np.Parse(bugText); + if (np.Error) + { + serviceOutput.WriteLine(context, + String.Format("{0} is not a valid bug number.", + bugText)); + return; + } + + serviceOutput.WriteLine(context, + String.Format(bugUrl, bug)); + } + + public string Help() + { + return "!bug <number>"; + } + } +} _____
Modified: trunk/irc/TechBot/TechBot.Library/IrcService.cs --- trunk/irc/TechBot/TechBot.Library/IrcService.cs 2005-12-14 17:34:00 UTC (rev 20164) +++ trunk/irc/TechBot/TechBot.Library/IrcService.cs 2005-12-14 18:13:05 UTC (rev 20165) @@ -18,6 +18,7 @@
private string hresultXml; private string wmXml; private string svnCommand; + private string bugUrl; private IrcClient client; private ArrayList channels = new ArrayList(); /* IrcChannel */ private TechBotService service; @@ -33,7 +34,8 @@ string winerrorXml, string hresultXml, string wmXml, - string svnCommand) + string svnCommand, + string bugUrl) { this.hostname = hostname; this.port = port; @@ -46,6 +48,7 @@ this.hresultXml = hresultXml; this.wmXml = wmXml; this.svnCommand = svnCommand; + this.bugUrl = bugUrl; }
public void Run() @@ -57,7 +60,8 @@ winerrorXml, hresultXml, wmXml, - svnCommand); + svnCommand, + bugUrl); service.Run();
client = new IrcClient(); _____
Modified: trunk/irc/TechBot/TechBot.Library/TechBot.Library.prjx --- trunk/irc/TechBot/TechBot.Library/TechBot.Library.prjx 2005-12-14 17:34:00 UTC (rev 20164) +++ trunk/irc/TechBot/TechBot.Library/TechBot.Library.prjx 2005-12-14 18:13:05 UTC (rev 20165) @@ -13,6 +13,7 @@
<File name=".\HresultCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> <File name=".\WinerrorCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> <File name=".\SvnCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> + <File name=".\BugCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> <File name=".\WmCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> <File name=".\MessageContext.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> </Contents> _____
Modified: trunk/irc/TechBot/TechBot.Library/TechBotService.cs --- trunk/irc/TechBot/TechBot.Library/TechBotService.cs 2005-12-14 17:34:00 UTC (rev 20164) +++ trunk/irc/TechBot/TechBot.Library/TechBotService.cs 2005-12-14 18:13:05 UTC (rev 20165) @@ -17,6 +17,7 @@
private string hresultXml; private string wmXml; private string svnCommand; + private string bugUrl; private ArrayList commands = new ArrayList(); public TechBotService(IServiceOutput serviceOutput, @@ -26,7 +27,8 @@ string winerrorXml, string hresultXml, string wmXml, - string svnCommand) + string svnCommand, + string bugUrl) { this.serviceOutput = serviceOutput; this.chmPath = chmPath; @@ -36,6 +38,7 @@ this.hresultXml = hresultXml; this.wmXml = wmXml; this.svnCommand = svnCommand; + this.bugUrl = bugUrl; } public void Run() @@ -55,6 +58,8 @@ wmXml)); commands.Add(new SvnCommand(serviceOutput, svnCommand)); + commands.Add(new BugCommand(serviceOutput, + bugUrl)); } public void InjectMessage(MessageContext context,