<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Building a CLI Tool in Go on Despair Driven Development</title><link>https://despairdrivendevelopment.com/series/building-a-cli-tool-in-go/</link><description>Recent content in Building a CLI Tool in Go on Despair Driven Development</description><generator>Hugo</generator><language>en-us</language><managingEditor>matt@fitzpatricksoftware.com (Matthew FitzPatrick)</managingEditor><webMaster>matt@fitzpatricksoftware.com (Matthew FitzPatrick)</webMaster><lastBuildDate>Thu, 28 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://despairdrivendevelopment.com/series/building-a-cli-tool-in-go/index.xml" rel="self" type="application/rss+xml"/><item><title>Building a CLI Tool in Go: Part 3 - Testing &amp; Release</title><link>https://despairdrivendevelopment.com/posts/go-cli-part-3-testing-release/</link><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><author>matt@fitzpatricksoftware.com (Matthew FitzPatrick)</author><guid>https://despairdrivendevelopment.com/posts/go-cli-part-3-testing-release/</guid><description>&lt;p&gt;We&amp;rsquo;ve got a working CLI from &lt;a href="https://despairdrivendevelopment.com/posts/go-cli-part-1-setup/"&gt;Part 1&lt;/a&gt; and &lt;a href="https://despairdrivendevelopment.com/posts/go-cli-part-2-commands/"&gt;Part 2&lt;/a&gt;. Now let&amp;rsquo;s make sure it doesn&amp;rsquo;t break and ship it properly.&lt;/p&gt;</description></item><item><title>Building a CLI Tool in Go: Part 2 - Commands &amp; Config</title><link>https://despairdrivendevelopment.com/posts/go-cli-part-2-commands/</link><pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate><author>matt@fitzpatricksoftware.com (Matthew FitzPatrick)</author><guid>https://despairdrivendevelopment.com/posts/go-cli-part-2-commands/</guid><description>&lt;p&gt;In &lt;a href="https://despairdrivendevelopment.com/posts/go-cli-part-1-setup/"&gt;Part 1&lt;/a&gt;, we set up the skeleton. Now let&amp;rsquo;s give it bones.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll add a &lt;code&gt;scan&lt;/code&gt; command that reads a config file and does something marginally useful.&lt;/p&gt;</description></item><item><title>Building a CLI Tool in Go: Part 1 - Project Setup</title><link>https://despairdrivendevelopment.com/posts/go-cli-part-1-setup/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><author>matt@fitzpatricksoftware.com (Matthew FitzPatrick)</author><guid>https://despairdrivendevelopment.com/posts/go-cli-part-1-setup/</guid><description>&lt;p&gt;Every side project starts with optimism. This one started with &lt;code&gt;go mod init&lt;/code&gt; and a vague sense of dread.&lt;/p&gt;
&lt;p&gt;In this series, we&amp;rsquo;ll build a real CLI tool in Go — something that actually solves a problem rather than just proving we can parse flags. We&amp;rsquo;ll use &lt;a href="https://github.com/spf13/cobra"&gt;Cobra&lt;/a&gt; for the CLI framework and ship it with proper tests and CI.&lt;/p&gt;</description></item></channel></rss>