💾 Archived View for r.bdr.sh › gemlog › 1669903029203 › blog-tooling.gmi captured on 2024-03-21 at 15:23:21. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
With so many of the bloggers I follow talking about the the latest release of MarsEdit[1], I've been getting tooling envy. While my blog[2] is a full-featured enterprise-grade state-of-the-art piece of software, it's not compatible with any of these tools :(. Surely, a lack of appropriate tooling is the real reason why I don't update as often.
After a dozen misguided minutes of reading the atompub spec[3], I decided to integrate my tooling directly to my editor of choice: `nvim`.
Thanks to the marvels of VimScriptâ„¢ I can now add a text file to my blog with `:Blog add`, update the latest post with `:Blog update`, and publish to staging and live with `:Blog stage` and `:Blog publish`. And all it took was a couple of hours of searching how to write commands in vim[4], learning the difference between `<args>` and `<q-args>`, and a ton of sunken cost bias.
[4] How to write commands in vim
Here you can see the code in its entirety (with a couple replacements):
command -nargs=? Blog :call Blog(<q-args>) function! Blog(...) let command = get(a:, 1, 0) let path = expand("%:p") if command == "add" if path == "" echo "This buffer is not a text file" else echo "Adding ".path." to blog" call system("blog --add ".path) endif return endif if command == "update" if path == "" echo "This buffer is not a text file" else echo "Updating ".path." to blog" call system("blog --update ".path) endif return endif if command == "stage" echo "Publishing blog to staging" call system("blog --publish <staging_url>") return endif if command == "publish" echo "Publishing blog" call system("blog --publish <blog_url>") call system("blog --publish-archive <gemini_url>") return endif if command == "help" echo "Available commands:" echo "\tadd\t\tadds current file to blog" echo "\tupdate\t\tupdates latest entry of blog with current file" echo "\tstage\t\tpublish blog to staging" echo "\tpublish\t\tpublish blog to production" echo "\thelp\t\tthis message" return endif echo "Unknown command, run :Blog help for help" endfunction
Surely, this is all I need to form a publishing habit.
Written, published, edited, republished, debugged, and republished with nvim.