half-ogre/qed — pull request #49 by half-ogre (2013-11-28 03:59:36+00:00)
Title: Mo' betta stable

QED was very fragile. *Is* very fragile. This PR toughens her up a bit. She still has a long way to go before she's the hardened warrior I envision, but it's a start. This PR:

- Gets rid of `async` and `await`; I don't grok it well enough to get it right, and it's not really needed for a synchronous build queue. That said, I'll consider adding it back after I've had time for proper research and practice, or I'll use Rx instead.
- Is much smarter about running a process. It will not kill the process after a timeout (5 minutes for now), reports the output as it happens, reports the output in the right order, and terminates the process when it doesn't finish.
- Adds locking around saving the build output to Raven; with the switch to logging output as it happens, I was getting concurrency errors.
- Only tries to update GitHub when it actually has the info it needs (a token and a SHA)
- Lets you run QED locally without a null OAuth token, so you can test the build parts without throwing statuses at GitHub

cc @bennage, because this is going to make the merge on your F# branch a bit of a nightmare. If you want, make me a contrib on your fork and I'll fix it up. Or say the word tonight and I'll hold of merging this so we can get your stuff in first.