Testing CLI apps with Aruba (Ruby or Not)

CLI Acceptance Testing One of my hobbies is writing little CLI apps to create workflows, automate and solve issues I’m having. The one I’ve probably tinkered with the most is gitsweeper. Gitsweeper is a golang re-write of git-sweep, a python CLI tool I’d been using for a while to clean up branches that had been merged into the master branch. Because these apps are very small and self-contained, I want to be able to extensively test the happy and sad paths. For something like gitsweeper, there are a number of scenarios and edge cases to test against: A non-existent git repo, no branches being available, lack of permissions and so on. ...

April 9, 2024 · 9 min · Peter Souter

Bootstrapping a new OSX device: A Brief History and Current Approach

Bootstrapping I’ve had to setup 3 different macbooks from scratch recently, and it made me think of the whole process of Macbook bootstrapping. It’s something I’ve done a fair few times over the years, either because I’ve change jobs, get a new personal Macbook or, as is the case recently, had to nuke a work laptop back to factory settings and start again after a buyback program. It lead me to think about my experience with developer bootstrapping in the OSX world, and realising it’s now been over a decade of experiencing the aches and pains and eventual improvements to this experience. I thought I’d do a small braindump of my experiences and the various tools we used and what I use now. ...

April 4, 2024 · 18 min · Peter Souter

Adding my Provider to the Terraform Provider Registry

I’ve blogged previously about my tinkering with my own Terraform provider for fetching external IPs One of the more fiddly parts I found when using a custom provider is how to use it with the rest of your Terraform code. You could either bundle it with terraform-bundle, or add it as git submodules to the repo you run your code in. Neither are particularly ideal, as you’re either having to create a new bundle every time a new release occurs or have to wrangle with git submodules and increase the site of your code repository by containing binaries. ...

September 17, 2020 · 11 min · Peter Souter

Vault Caching with Auto-Auth and Puppet

Vault Caching with Auto-Auth and Puppet So I’ve done a lot of work with Vault and Puppet and how they integrate with each other. I was recenlty posed the question: How would these Puppet runs calling out for secrets affect the performance of Vault, and if it was possible to cache the results? So I did a little digging and the answer is Yes, it’s possible! Vault Caching In the 1.1.0 release of Vault, we added the ability to run vault agent as a caching proxy. ...

February 12, 2020 · 6 min · Peter Souter

S3 Download Progress Bar in Golang

S3 Download Progress Bar in Golang Through a series of yak-shaves, I ended up needing to be able to do an S3 download on a machine without python on it, so I couldn’t install the AWS CLI. However, it could run a pre-compiled binary of something, which is easy to generate in Golang. I was still tinkering around with Cobra and CLI apps, so I thought… how hard can it be? ...

March 7, 2019 · 6 min · Peter Souter