<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
}\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
WinerrorXml,\r
HresultXml,\r
WmXml,\r
- SvnCommand);\r
+ SvnCommand,\r
+ BugUrl);\r
ircService.Run();\r
}\r
\r
WinerrorXml,\r
HresultXml,\r
WmXml,\r
- SvnCommand);\r
+ SvnCommand,\r
+ BugUrl);\r
service.Run();\r
while (true)\r
{\r
--- /dev/null
+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
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
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
this.hresultXml = hresultXml;\r
this.wmXml = wmXml;\r
this.svnCommand = svnCommand;\r
+ this.bugUrl = bugUrl;\r
}\r
\r
public void Run()\r
winerrorXml,\r
hresultXml,\r
wmXml,\r
- svnCommand);\r
+ svnCommand,\r
+ bugUrl);\r
service.Run();\r
\r
client = new IrcClient();\r
<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
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
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
this.hresultXml = hresultXml;\r
this.wmXml = wmXml;\r
this.svnCommand = svnCommand;\r
+ this.bugUrl = bugUrl;\r
}\r
\r
public void Run()\r
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
<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
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
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
WinerrorXml,\r
HresultXml,\r
WmXml,\r
- SvnCommand);\r
+ SvnCommand,\r
+ BugUrl);\r
ircService.Run();\r
}\r
\r