I've decided to upgrade the bascule static site generator. No new features, just an internal upgrade of library versions, moving to Kotlin 1.6 (just days after Kotlin 1.7 came out!), switching the build system from groovy gradle to kotlin gradle. It's been quite a challenge, even getting it to compile took several hours of work over a couple of days.

One significant change I've made is to remove the Koin dependency injection library. The library has changed significantly since I first started using it, and I was sure how to adapt the code to use the latest version. From there, I started wondering why I was using DI at all in the app - bascule runs for a few seconds, at most, then quits; there's no long lifecycle, and there are very few shared components. So I've switched to constructor based injection - and simply just creating new instances of classes such as my file handler where needed.

Unfortunately, DI was useful in testing - and now the unit tests all fail. Somehow I've made quite a mess of this upgrade. Perhaps it is time to retire the project, and either rewrite it as version 2, return to the bascule cloud thoughts, or just give up. Stop reinventing the wheel. A quick search suggests there are plenty of alternatives out there - the original jekyll app, which I think forms the basis of GitHub pages, and all manner of Javascript-based solutions. I still would prefer to use something I've built myself though.