Instigator 0.9: a gem for starting projects
There's a lot involved with modern software development: source control, testing, continuous integration and packaging. On a 1-week project, there is no room at all for busywork, so my first project has been an app to create a new app with a single command. I bring you Instigator
Usage
gem install instigator # a sinatra project on heroku instigate MYAPPNAME --project_type=sinatra
This will create
- a sinatra skeleton, with tests
- a github repo called MYAPPNAME
- a heroku instance at MYAPPNAME.heroku.com
- a jenkins project
- a linkage between github and jenkins, so that whenever you push to the repo, the tests are run
The development of this app has been an interesting insight into the difficulty of working using Don's technique. For a start, I didn't cut down the scope nearly as much as I should have.
Typically (and hubristically), I thought this would all be easily achievable within a week. It started as a Haskell app, then morphed into a ruby app as I gradually discovered how much more polished the Ruby web-interaction tools are, and then further changed to be built on the Thor command-line framework in ruby.
There's still work that could be done on it. I like to set heroku apps up with staging and production branches, and we haven't accounted for that yet. Also, the haskell template could use a little work: while it works, it does rely on having TBC correctly installed first. (It pains me to say it, but the testing infrastructure in Haskell is not yet as smooth as Ruby's.)
All in all I'm pretty happy with it, though. It's easy to add new recipes, and the Thor library made working with command line invocation a joy. In any case, four weeks later I'm ready to present Instigator and to hope that the next appconforms more closely to the Stewart strictures.
ps. I'll be giving a lightning talk on Instigator at RORO at the Trinity on Tuesday.
