Instead of always inferring the path at which files in a resource set
are located, let users override the path by specifying a `path` field.
This makes it possible to add the same resource set multiple times
with different values while still keeping distinct names for
addressability (for example when using include/exclude).
This fixes#70
Kontemplate context specifications can now load extra variables from YAML
or JSON files by specifying a list of files (relative to the context file)
under the `import` key.
This release features some cleanup and under-the-hood changes, as well
as "ecosystem-features" that don't directly affect the way Kontemplate
itself functions.
* Resource-sets are now passed on to kubectl in individual
invocations. This means that kubectl errors can be scoped to
individual resource set files and issues such as #51 are less of a
problem.
* A Dockerfile is provided and published at `tazjin:kontemplate` on
Docker Hub. This image contains `kontemplate`, `kubectl` and `pass`
and can be used - for example - as an image for a step in a CI
system.
* Kontemplate is now available on Homebrew, check the README for
installation instructions.
* If different resource sets don't contain `---` separators in YAML,
`kubectl` calls will no longer fail. (#51)
* Autocompleted trailing slashes in shells are now filtered from
include & exclude lists to enhance the CLI experience slightly.
To prevent situations where a shell auto-appends a slash to an
include/exclude specification on the CLI, trailing slashes in those
string lists are now trimmed.
This fixes#54
Instead of passing the rendered output of all resource sets to kubectl
simultaneously, build upon the previous commit and pass resource sets
individually to new instances of kubectl.
This resolves#51
Adds a simple Docker image that can be used in CI pipelines to deploy
`kontemplate`-based environments.
This image contains kontemplate and all of its dependencies (including
pass as an optional dependency).
Adds a Homebrew formula that downloads and installs the 1.0.2 binary release.
Users should be able to "tap" this formula from OS X, the README will be updated in a separate commit.
This fixes#41
Replace urfave/cli with the kingpin[1] library.
It has slightly more sensible argument validation than the other Go libraries.
Additionally I've opted for removing the '-f / --file' flag in favour of positional arguments to commands.
A previous command like `kontemplate template -f somefile.yml` is now just `kontemplate template somefile.yml`. All other arguments remain the same.
[1]: https://github.com/alecthomas/kingpin
After filtering resource sets, check whether any resource sets "survived".
Otherwise it can be assumed that the user specified invalid exclude/include
combinations and should be warned about that.
Fixes#35
This adds functionality to specify default values directly in resource sets.
The idea is that users can create a file called `values.yaml` or `values.json`
in a resource set's folder and have all variables specified in that file be
automatically merged into the resource set variables with the lowest priority.
This fixes#25
This fixes#30 (to a degree)
Golang's template package now has an option for failing if template variables
are missing: https://golang.org/pkg/text/template/#Template.Option
This updates the templater code to make use of that option and return the
errors encountered during templating.
This fixes#1
Users of kontemplate may expect variables defined on the parent resource to be
inherited by children.
This implements that functionality. Values defined twice are overwritten by the
child's definition.
Fixes#20
This introduces support for looking up secret values in the 'pass' command line
tool (https://www.passwordstore.org/).
Values like passwords can be interpolated from pass and even more complex
structures like certificates for Kubernetes Secrets can be retrieved and base64-
encoded as necessary.
Fixes#2