Problem: ZenIRCBot needs a full refactor for the following reasons.
- Terrible tests. The only tests that exist are integration tests, no unit tests.
- IRC Lib. The current IRC lib is mostly unmaintained with a periodic blind pull-request merges. This has caused headache in the past.
- Configuration. Basically it sucks, a number of
.json.distfiles that you have to copy then edit.
Solution: Rewrite it from scratch using very few libraries.
./lib/parser.js is currently the whole IRC lib that I'm using. It is
primative and I plan on moving it out of the repo once it matures. Currently the
IRC lib doesn't handle any of the socket stuff. It just expects you to pipe a
socket into it.
The lib will probably continue to be purely stream based. Some other modules will be developed on top to turn it into a emitter based, or filtered streams. This allows the core IRC implementation to be simple while also providing a rich and varied API.
The IRC lib is the only tested portion currently. To extend the parser, you must also add tests proving that the line(s) that it should be dealing with return the right sort of object.
./lib/bot.js is where the bot currently lives. I plan on leaving the
bot there. Instead of using
config.json.dist like I do in current ZenIRCBot,
the bot will be a binary that gets installed. It will load config from
~/.zenircbot/ or whatever directory is specified on the commandline.
The current implementation is a spike. Mostly a proof that the IRC lib works. Anything that needs to be thrown own or changed to make it testable will be.
I am eschewing all default services. Even
will be broken out into their own repos that are separately installable.
Services going forward will be akin to the bot, a command that gets installed.
This will make the bot seem less language dependant and be, in general, more