When running clusterlint on Go 1.17, it panics right on startup. The
issue is our usage of github.com/mattn/go-isatty (consumed by
github.com/fatih/color) which had a bug until [1]. Updating to the
latest v0.0.14 release fixes the issue.
Also bump the minimum (library) dependency to 1.16 in go.mod since that
is the oldest, officially supported Go version. Bumping to 1.17 actually
enables us to fix the issue by simply updating to the latest
github.com/fatih/color, as opposed to adding an indirect import of
github.com/mattn/go-isatty which this change does right now (which I
suppose works due to Go 1.17 module management improvements); however,
that'd come at the price of breaking compatibility with 1.16 users which
is non-ideal.
Regardless, update github.com/fatih/color as well while we're here.
Also bump the version of the Go image used for testing.
[1] https://github.com/mattn/go-isatty/pull/66
Factor the KubeObjects type out of package main and into the top-level
clusterlint package. For now still populate it in main, though we'll
likely want to pull this out later.
Add a check type that checks will implement, and implement an initial
noop check that satisfies it. Create a registry for checks.
Vendor dependencies so that we can do a consistent build. For now we're
depending on the master version of client-go since they don't have a
release that supports modules yet, but we should move to a release once
they do.