Week 8: slow, but steady, progress
16 November 2022
This is a third progress report for a command line tool called “Posh TUI”. It’s an API documentation browser —like Dash, but for your console.
Software is not yeat available, but there is a limited pre-sale for a lifetime license. It includes all future updates for free, but also I’ll be closely listening to feedback and will be building future roadmap based on it.
Recap
We currently have a rdoc plugin that generates markdown, but it’s still pretty experimental. And after long hiatus, work on POSH TUI app has started again. I scrapped most of the code that I had before and start things “almost” from scratch.
Progress
There is a good and bad news.
Bad news—I decided to quit my job and last couple of weeks been very actively going through interviews. All spare time was spent doing take home assignments, so didn’t manage to progress much with this project.
Good news—I’ll have a couple of months free between jobs, and that means that this project will get my full undivided (almost) attention.
RDoc-markdown
I received a lot of feedback about rdoc-markdown gem, even a video review! It’s really motivating to get so much valuable feedback early on.
Unfortunately, as it turns out, that in some cases gem could break markdown formatting completely for some documents.
My weekends I’ve spent fixing that formatting (by passing additional parameters to rdoc, to force markdown everywhere) and improving readability of Markdown as well.
It will probably take some time, until gem will be able to produce a perfect documentation in Markdown. But I can always edit things manually!
TUI
I originally tried to replicate Dash app, but in a console as a TUI. While Dash app is a great inspiration, GUI is difficult to translate into a usable TUI app.
So, I’ve decided to go a different way – console app should be able to detect ruby and gems and show me appropriate docsets. This way, I completely ditched docset picker screen out of the codebase (at least for now).
CLI
I had to rewrite app to use a Cobra framework, this is most advanced framework to build CLI apps in go.
At first, it seemed irrelevant, and I tried to avoid any big “libraries”, but all other approaches had their limitations. I didn’t like usability of those, charm team uses Cobra in all their apps – so I decided to follow a great example here.
Detecting Ruby and Gems
Within a couple of hours of coding, Gemfile.lock parser appeared that can detect ruby and gems, without running ruby interpreter.
Goreleaser
Initially, I was planning to publish new app versions automatically with goreleaser. But ublishing from a private repo to some public source takes quite a lot of tweaking, decided to that manually for now. This is not a core feature, so this could wait.
Plans for next 2 weeks
Release TUI, alpha version.
Due to time constraints, I didn’t manage to produce first alpha release for people to try. But after next 2 weeks, this should be resolved.
I was considering, if gumroad license check should be integrated right away. However, this is not a core feature of app, so alpha versions will be free to try for everyone.
I’ll skip this hurdle to accelerate development of features that are more significant.
RDoc-markdown gem
It struck me that gems needs a “golden-master” document.
- Presented as “perfect example” of what rdoc-markdown gem is capable off - Good reference to adjust output formatting.
As a solution—example.rb, which will be extended and converted into a Markdown document in example/
folder.
Let’s hope, I can produce 3 different docsets for Rubies with little manual corrections!