Commit graph

154 commits

Author SHA1 Message Date
Vincent Ambo
1e3ecad709 feat release: Add simple release script
Adds a simple script that will build stripped binaries for various platforms
and GPG-sign them.
2017-05-08 11:15:20 +02:00
Vincent Ambo
d93bc51e86 feat main: Add version command
Adds a version command that can have the Kontemplate git hash added to it at
build time by using the Go linker's -X flag.
2017-05-08 11:15:20 +02:00
Vincent Ambo
9b2d102bbf docs: Add note about binary releases to README 2017-05-08 10:37:24 +02:00
Vincent Ambo
c2a8f8784f docs: Add more information to README 2017-05-08 10:37:24 +02:00
Vincent Ambo
5bc67f4271 docs: Add some tips and tricks 2017-05-08 10:37:24 +02:00
Vincent Ambo
7644a1f675 docs: Document template format 2017-05-08 10:37:24 +02:00
Vincent Ambo
211289765a docs README: Update usage examples for kingpin CLI 2017-05-04 18:49:43 +02:00
Vincent Ambo
c8a63861ae refactor main: Move to Kingpin CLI library
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
2017-05-04 18:49:43 +02:00
Vincent Ambo
32ca64c50a feat templater: Warn if no valid resource sets are included
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
2017-05-04 18:45:03 +02:00
Vincent Ambo
7286751db7 fix test: Assert variable override order 2017-04-04 20:06:15 +02:00
Vincent Ambo
746e733cbb fix templater: Don't try to template default value files 2017-04-04 20:06:15 +02:00
Vincent Ambo
11cfc80020 feat context: Support resource set default values
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)
2017-04-04 20:06:15 +02:00
Vincent Ambo
4eadb58841 fix main: Don't panic if file is unspecified
Instead of printing a spooky stacktrace when the user forgets to specify
the `-f` argument, return an error a lot more gracefully.
2017-04-04 13:49:53 +02:00
Vincent Ambo
3b0f41e71d feat templater: Fail if values are missing
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
2017-04-04 11:05:09 +02:00
Vincent Ambo
45aee8257f style: Apply go fmt 2017-02-20 14:25:39 +01:00
Vincent Ambo
0b992c6156 fix pass: Trim leading & trailing whitespace 2017-02-20 14:25:24 +01:00
Vincent Ambo
0147c3e13e feat ctx: Let sub-resource-sets inherit vars from parent
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
2017-02-14 19:12:53 +01:00
Vincent Ambo
f81fe551bc chore templater: Use new util.Merge func 2017-02-14 19:12:53 +01:00
Vincent Ambo
7a930aad11 feat util: Add silly map-merge function that should be in the stdlib 2017-02-14 19:12:53 +01:00
Vincent Ambo
c181decd9d fix main: Add a forgotten error check 2017-02-09 15:50:22 +01:00
Vincent Ambo
2f6e008121 feat templater: Add 'pass' lookup function
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
2017-02-09 15:44:18 +01:00
Vincent Ambo
4713d565d3 fix templater: Don't fail with two identical stack traces 2017-02-09 15:44:18 +01:00
Vincent Ambo
25c9ed4adc feat main: Version bump to v1.0.0-beta1 2017-02-09 15:44:18 +01:00
Vincent Ambo
b58b1e3385 feat templater: Add applyLimits tests 2017-02-08 22:12:34 +01:00
Vincent Ambo
75b6199c1b feat context: Add deserialisation tests 2017-02-08 22:12:34 +01:00
Vincent Ambo
a6eb421057 docs: Update README with 'delete' command 2017-02-08 18:16:00 +01:00
Vincent Ambo
c046e5acff feat main: Add 'delete' command 2017-02-08 18:16:00 +01:00
Vincent Ambo
dd2fdd63e5 fix templater & ctx: Correctly check resource set parent 2017-02-08 17:42:06 +01:00
Vincent Ambo
756a4c745d fix templater: Guard against empty parent reference 2017-02-08 17:34:49 +01:00
Vincent Ambo
bace4dd895 fix context: Set sub resource names correctly 2017-02-08 17:34:49 +01:00
Vincent Ambo
4e8223ef34 feat context: Add support for resource set collections
A resource set collection is a resource set with an addition 'include' array
configured. It is a short-hand for importing multiple resource sets from the
same folder and for excluding/including them as a group.

See https://github.com/tazjin/kontemplate/issues/9 for more information.

Closes #9
2017-02-08 17:34:49 +01:00
Vincent Ambo
d6b16793c1 docs: Update README with new options 2017-02-08 16:53:38 +01:00
Vincent Ambo
8e08a282eb feat templater: Add ability to exclude resource sets
* renamed --limit to --include (-i)
* added --exclude (-e)

Kontemplate users can now explicitly include and exclude certain resource sets.
Excludes always override includes.

Closes #11
2017-02-08 16:53:38 +01:00
Vincent Ambo
11a5cf9e19 feat main: Add replace support & respect context setting
* Adds support for calling `kubectl replace` (necessary for resource types that do
  not support `apply`).

* Sets `kubectl` context to whatever is defined in the cluster configuration file
2017-02-08 16:19:10 +01:00
Vincent Ambo
250d01c044 docs: Update README for 'apply' command 2017-02-08 15:42:13 +01:00
Vincent Ambo
bc9fc9730d feat main: Add apply command
This integrates support for actually calling out to `kubectl apply`.

A dry-run flag is implemented, too.

The `run` command has been renamed to `template`.
2017-02-08 15:42:13 +01:00
Vincent Ambo
25f2a1616c feat template: Add additional template functions
This adds the Go template functions from [sprig][] as well as a custom `json`
function that can interpolate any data as a JSON object - very useful for adding
arrays of data in JSON format into a variable:

```
certificateDomains:
  - oslo.pub
  - tazj.in

annotations:
  acme/certificate: {{ .certificateDomains | json }}

annotations:
  acme/certificate: ["oslo.pub", "tazj.in"]
```

[sprig]: https://godoc.org/github.com/Masterminds/sprig
2017-02-08 14:40:45 +01:00
Vincent Ambo
efe49de57f docs: Add generated 'kontemplate run' help 2017-02-08 14:07:56 +01:00
Vincent Ambo
6147ea7b9b docs: Add usage & installation sections 2017-02-08 13:53:46 +01:00
Vincent Ambo
3ef0f35bfe fix templater: Guard against empty values map 2017-02-08 13:47:56 +01:00
Vincent Ambo
a1c23d7018 docs: Add YAML to docs 2017-02-08 13:15:36 +01:00
Vincent Ambo
d94a0ffc25 feat context: Add YAML loading support
Closes #5
2017-02-08 13:13:21 +01:00
Vincent Ambo
c58ce7e2ab Merge pull request #7 from tazjin/feat/travis
Enable Travis.CI builds
2017-02-08 13:04:18 +01:00
Vincent Ambo
1e80f19f7b docs: Add build status 2017-02-08 13:03:06 +01:00
Vincent Ambo
13bf8a8ba3 feat build: Add Travis.CI support 2017-02-08 13:00:34 +01:00
Vincent Ambo
7ac63613fb feat main: Add proper CLI support
Adds a basic CLI structure with a single "run" command that takes a --file (-f)
and --limit (-l) flag.

--limit can be used to only output certain resource sets.

Closes #4
2017-02-08 12:58:53 +01:00
Vincent Ambo
ad82ff3e75 chore: Add LICENSE
Open code under MIT license.
2017-02-08 11:58:26 +01:00
Vincent Ambo
8fac7c1a41 chore: Better example & gofmt 2017-02-08 11:55:59 +01:00
Vincent Ambo
8fb24f9f75 feat main: Initial program implementation & example 2017-02-08 11:51:08 +01:00
Vincent Ambo
9e3ee3f2bb feat templater: Add initial templating support 2017-02-08 11:50:49 +01:00