Blog

  • 28th September 2026

miglite v0.8.0: ship migrations inside the binary

The last post about miglite covered v0.4.0 in June. In the three months since then, it reached v0.8.0 through four releases and 69 commits (v0.4.0..v0.8.0). The main problem I wanted to solve was carrying a migrations/ directory alongside the binary. A few flags that were accepted but did nothing also needed fixing.

miglite v0.8.0: embed migrations in the binary

…
Read more →
  • 4th July 2026

cliui: terminal UI helpers for Go CLI apps

Many CLI tools start with a parser, a few commands, and some fmt.Println calls. That works until the tool needs readable config output, clear errors, prompts, progress bars, and logs that do not break in CI.

github.com/gookit/cliui is for that middle ground: not a full-screen TUI, but more than loose terminal prints. It splits the common pieces into three packages: show for structured output, interact for prompts and selections, and progress for long-running work.

cliui poster

…
Read more →
  • 1st July 2026

eget: install GitHub releases without waiting for a central index

The pace of command-line tooling has changed. New tools show up on GitHub every day, and active projects may publish several releases in a week, sometimes in a day.

The slow part is often not the project itself. It is the central package index in the middle: a formula, bucket, manifest, or package definition that has not caught up yet. eget is for that gap. If the release asset already exists, or the download URL can be described by a simple rule, eget can fetch and install it directly.

eget poster

…
Read more →
  • 24th June 2026

rotatefile: log rotation, compression, and cleanup for Go

Go’s standard logging packages can write to an io.Writer, but they do not decide when a log file should rotate, how many old files to keep, or when disk usage should be capped. Once a service writes logs to local files, those details become part of the system.

github.com/gookit/rotatefile stays deliberately small: it provides an io.Writer with file rotation, gzip compression, and cleanup. You can keep using log/slog, log, zap, or gookit/slog; rotatefile only handles the file lifecycle.

rotatefile poster

…
Read more →
  • 22nd June 2026

GCli v3.8: shared options, doc generation, and safer binding

GCli v3.8 is out. Since v3.5, the project has added friendlier argument parsing, richer struct binding, type-safe generic flag helpers, inherited command options, and built-in markdown/man-page generation.

If you maintain a nested CLI rather than a small command wrapper, this release is worth a closer look.

GCli v3.8 release poster

…
Read more →
  • 18th June 2026

miglite: raw SQL migrations for Go projects

Database migration tools usually pick one of two lanes. Some describe schema changes in their own DSL and generate SQL for you. Others take the SQL you already wrote, run it in order, and record what has been applied.

github.com/gookit/miglite stays in the second lane. It does not replace SQL, and the library does not pull database drivers into your dependency tree by default. It discovers migration files, parses UP/DOWN sections, runs SQL in a transaction, and records the migration status in the database.

miglite poster

…
Read more →