github TekWizely/pre-commit-golang v1.0.0-rc.1
Support for Environment Variables - v1.0.0-rc.1

2 years ago

Release v1.0.0-rc.1

Environment Variables

Adds ability to configure environment variables to be set when invoking hook commands.
Variables are configured via the hook args: using the following argument pattern:

--hook:env:NAME=VALUE

The hook script will detect this argument and set the variable NAME to the value VALUE before invoking the configured tool.

You can pass multiple --hook:env: arguments.

The arguments can appear anywhere in the args: list (before an arg-terminating -- of course).

error-on-output

Previously, my-cmd-* hooks accepted a --error-on-output argument to signal when any output generated by the command should be treated as an error.

In order to try to minimize issues when using such a plain option, the option was required to be a the very first element of the args: list, ie.

args: [ --error-on-output, gofmt, -l, -d ]

This release adds additional support for a less-plain option:

  • --hook:error-on-output

This option, being less-likely to cause issues with existing tools, can exist anywhere in the args list (before an arg-terminating -- of course), ie.

args: [ gofmt, -l, -d, --hook:error-on-output]

NOTE: The plain --error-on-output at first element still works (currently), but is now deprecated and will be removed in a future version

Invoking hook commands

Now uses /usr/bin/env to invoke commands

  • No-longer invokes the commands directly
  • Makes it trivial to pass environment variables to commands
  • Should not cause issues as /usr/bin/env was already vital for using this library

Breaking Change

For compatibility with file-based hooks, Repo-based hooks
no-longer ignore '--', or proceeding arguments, in the argument list.
However, to further match file-based logic, the first '--' will be consumed,
treating anything after it as OPTIONS to be passed to the hook command.

Likely v1.0.0 Final

This release will likely become the official v1.0.0 release, but I'll give it a few weeks just in case recent changes added any bugs.

Don't miss a new pre-commit-golang release

NewReleases is sending notifications on new releases.