Mike Bland

go-script-bash v1.4.0

I've released go-script-bash v1.4.0, another large update that includes massive test performance improvements, amongst other significant new features

- Alexandria
Tags: Bash, Linux, Mac OS X, Windows, dev tools, go script, programming, technical, testing

It’s only over a month late (I blame the Rainbow of Death), and didn’t contain many of the features I’d originally anticipated, but go-script-bash v1.4.0 is finally out! A brief summary of some of the major new features:

  • The test suite now runs a minimum of O (5.3x) faster on UNIX and up to O (18x) faster on Windows, thanks to optimizations to the framework’s test helpers and to my mbland/bats fork of the Bats framework that eliminate as many subshells and other child processes as possible. On Windows the improvement is especially dramatic because forking new processes on Windows is over 50x more expensive than on UNIX.
  • There are lots of new Bats test helpers, both generic and framework-specific.
  • The go-template bootstrap script makes it easier to write a top-level ./go script and start using it right away.
  • _GO_STANDALONE mode makes it possible to write standalone programs, instead of only project-specific scripts that always execute from the project root (i.e. _GO_ROOTDIR).
  • The command script and library module precedence is more natural, and allows for easy test stub injection.
  • The ./go get command makes it easy to fetch single files or shallowly clone a Git repository in a uniform way.
  • The ./go new command makes it easy to create a new command script, library module, or Bats test with minimal boilerplate.
  • Plugins are now capable of being nested, searched, imported, and executed using a mechanism very similar to the node_modules search mechanism implemented by npm.
  • @go.select\_option makes it easy to write basic interactive user prompts.
  • Various bug fixes.

I have created a v1.5.0 milestone already, but it’s highly subject to change, as I’m still in the process of getting my business together, and I intend to prioritize the importation of features from mbland/certbot-webroot-setup (and continue the "Switching to Let’s Encrypt with HPKP" series) over implementing the features currently listed.