A flexible commandline tool for template rendering. Supports lots of local and remote datasources.
MIT License
Bot releases are hidden (Show)
Published by hairyhenderson 4 months ago
v4.0.0
π₯³ It's finally here! Welcome to gomplate v4.0.0! This release is a major release, with breaking changes. Read on for more details...
Probably the most important feature that's evolved in gomplate over the years is its support for reading and parsing data from a variety of sources. Using URLs to specify where to find data has proven to be quite flexible, and has allowed for a lot of different data sources to be supported.
In early 2021, I took what I had learned from supporting all of these different data sources, and I created a new module called go-fsimpl
, which provides a number of Go filesystem implementations that can be used with Go's filesystem interfaces.
My goal with go-fsimpl
was always to use it in gomplate, and now that it's data source support has reached parity with gomplate, it's time to make the switch! As a result, and because go-fsimpl
presents a much more consistent and unified approach to data sources, I've had to drop support for one data source, and in fixing some inconsistencies in how URLs have been handled by some of the data sources, I've had to make some breaking changes there as well.
β οΈ Please, if you're using gomplate in production, read these release notes carefully and in full, and review your usage of gomplate to make sure you can adapt to these changes.
Support for the boltdb
URL scheme has been removed. The implementation was never very robust, and I'm not aware of anyone using it. It had some unique quirks that would have made it quite difficult to support in go-fsiml
as-is, so I've decided to drop it.
slim
binariesThe slim
binaries were deprecated in v3.11, and will no longer be produced.
When using the datasource
function with a subpath (second argument), the subpath has previously been intepreted by some data sources as a simple addition to the URL, and by others as a relative URL to be interpreted relative to the data source's base URL (as specified by the --datasource
flag).
Now, all data sources will interpret the subpath as a relative URL, and will resolve it relative to the data source's base URL. This means that, given a base URL of git+https://github.com/hairyhenderson/gomplate//random
and a subpath of random.go
, the resulting URL will be git+https://github.com/hairyhenderson/gomplate//random.go
. To correct this, make sure that base URLs end with a trailing slash when the last component is a directory.
Also, if the subpath begins with a slash, it will be interpreted as an absolute path, and will replace the base URL's path. For example, given a base URL of git+file:///tmp/repos//myrepo/
and a subpath of /myfile.txt
, the resulting URL will be git+file:///myfile.txt
. To correct this, make sure that subpaths don't begin with a slash. Note that for the special //
separator indicating the separation between a Git repository and the path within, a subpath should now begin with .//
rather than //
.
This affects at least the git
and file
data sources.
Previously, some data sources would assume URLs that end without a trailing slash are directories, and relative lookups would be performed within that directory. This was inconsistent with how URLs are normally interpreted, and could lead to unexpected results.
Now, all data sources will always interpret URLs without a trailing slash as files, and relative lookups will be performed within the parent directory of the URL.
For example, given a base URL of vault:///secret
and a subpath of foo
, the resulting URL will be vault:///foo
. To correct this, make sure that base URLs end with a trailing slash when the last component is a directory.
The aws+smp
data source previously returned the AWS output object, with both metadata and data. Users needed to reference the Value
field to get the actual data. Now, the aws+smp
data source will return the data directly.
The consul
data source supports directory semantics, but previously returned all the data as a JSON array of key/value pair objects. Now, the consul
data source will return directory listings like all other data sources, as a JSON array of strings (the names of the keys).
Support for the Vault "app-id" authentication method has been removed. This method was deprecated in Vault 0.6.1, and removed in Vault 1.13. If you're still using this method, you must switch to a different authentication method. Consider the "approle" method as a similar replacement.
suppressEmpty
behaviour is now always enabledIn previous versions of gomplate, output that consist only of whitespace would by default still be written to files, with the suppressEmpty
flag or GOMPLATE_SUPPRESS_EMPTY
environment variable being required to suppress this behaviour.
Now, this behaviour is always enabled, and the suppressEmpty
flag and GOMPLATE_SUPPRESS_EMPTY
environment variable have been removed.
A new logging framework is now in use (the standard library's log/slog
package), and so error and debug (--verbose
) messages will appear differently (different colours for the console format, and key/value pairs may are sorted differently).
Instead of quietly returning 0
, a number of functions in the conv
namespace will now return an error if the input is invalid.
This includes:
conv.ToInt64
, conv.ToInt
, conv.ToInt64s
, conv.ToInts
, conv.ToFloat64
, conv.ToFloat64s
, conv.ParseInt
, conv.ParseFloat
, conv.ParseUint
, conv.Atoi
Because these functions are used by some other functions, this introduces stricter input validation for these functions:
coll.Flatten
crypto.PBKDF2
, crypto.Bcrypt
, crypto.RSAGenerateKey
, crypto.EncryptAES
, crypto.DecryptAES
, crypto.DecryptAESBytes
math.Abs
, math.Add
, math.Mul
, math.Sub
, math.Div
, math.Rem
, math.Pow
, math.Seq
, math.Max
, math.Min
, math.Ceil
, math.Floor
, math.Round
net.CIDRHost
, net.CIDRSubnets
, net.CIDRSubnetSizes
random.ASCII
, random.Alpha
, random.AlphaNum
, random.String
, random.Number
, random.Float
regexp.FindAll
, regexp.Split
strings.Abbrev
, strings.WordWrap
time.Nanosecond
, time.Microsecond
, time.Millisecond
, time.Second
, time.Minute
, time.Hour
regexp
namespace now return errors instead of panickingPreviously, the regexp.Match
and regexp.Replace
functions would panic if the regular expression was invalid. Now, they will return an error instead.
The following functions have been removed:
conv.Dict
, conv.Slice
, conv.Has
- These have been deprecated since v3.2.0 and have been replaced with coll.Dict
, coll.Slice
, and coll.Has
.slice
alias for coll.Slice
(use coll.Slice
instead)net.Parse*
functions which produced values from the inet.af/netaddr
module have been deprecated and replaced with functions using the Go standard library's net/netip
package:
net.ParseIP
(use net.ParseAddr
instead)net.ParseIPPrefix
(use net.ParsePrefix
instead)net.ParseIPRange
(use net.ParseRange
instead)AWS_META_ENDPOINT
environment variable for overriding the IMDS endpoint in aws
functions has been deprecated in favor of the AWS-native AWS_EC2_METADATA_SERVICE_ENDPOINT
. This will be removed in a later v4 minor release (i.e. not in v4.0.0, but before v5).staticcheck
will help you find these in your code if you're using gomplate as a module. Follow the instructions in the deprecation comments to find out what to use instead.Plenty of people have contributed to gomplate by filing issues, suggesting new features, or submitting pull requests. I'd like to especially thank the following people for submitting pull requests in this release:
Be sure to also check out the multi-platform Docker images available at hairyhenderson/gomplate
.
If you've gained value out of gomplate and want to find a way to encourage development, please consider sponsoring gomplate!
Full Changelog (since v3.11)
Changes since v4.0.0-pre-3
funcs
package to internal/funcs
--exclude-processing
optioncoll.Pick
now supports slice of strings as inputdata.Data
type with a datasource registrystrings.Indent
to error on bad inputRunTemplates
function and old Config
typeConfig
type and updated Run
function and other API functionsregexp
functionsconv.*
functionstype
query parameter name with GOMPLATE_TYPE_PARAM
environment variablesemver
functions - thanks to @wuhuizuo!coll.Index
functioncoll.JQ
using gojq library - thanks to @ahochsteger!strings.SkipLines
functioncoll.GoSlice
and deprecate slice
aliascoll.Set
and coll.Unset
functionsstrings.Title
not lowercase acronyms - thanks to @zregvart!index
supports nested keys - thanks to @isavcic!index
and .
coll.GoSlice
example (fixes #1517)//
are a good ideat.Setenv
to set env vars in tests - thanks to @Juneezee!github.com/Masterminds/semver
to github.com/Masterminds/semver/v3
- thanks to @wuhuizuo!Published by hairyhenderson 4 months ago
π₯³ It's finally (almost) here! Welcome to gomplate v4.0.0-pre-3! This release is a (pre-release of a ) major release, with breaking changes. Read on for more details...
Probably the most important feature that's evolved in gomplate over the years is its support for reading and parsing data from a variety of sources. Using URLs to specify where to find data has proven to be quite flexible, and has allowed for a lot of different data sources to be supported.
In early 2021, I took what I had learned from supporting all of these different data sources, and I created a new module called go-fsimpl
, which provides a number of Go filesystem implementations that can be used with Go's filesystem interfaces.
My goal with go-fsimpl
was always to use it in gomplate, and now that it supports most of the data sources that gomplate supports, it's time to make the switch! As a result, and because go-fsimpl
presents a much more consistent and unified approach to data sources, I've had to drop support for one data source, and in fixing some inconsistencies in how URLs have been handled by some of the data sources, I've had to make some breaking changes there as well.
Please, if you're using gomplate in production, please read these release notes carefully and in full, and review your usage of gomplate to make sure you can adapt to these changes.
Support for the boltdb
URL scheme has been removed. The implementation was never very robust, and I'm not aware of anyone using it. It had some unique quirks that would have made it quite difficult to support in go-fsiml
as-is, so I've decided to drop it.
slim
binariesThe slim
binaries were deprecated in v3.11, and will no longer be produced.
When using the datasource
function with a subpath (second argument), the subpath has previously been intepreted by some data sources as a simple addition to the URL, and by others as a relative URL to be interpreted relative to the data source's base URL (as specified by the --datasource
flag).
Now, all data sources will interpret the subpath as a relative URL, and will resolve it relative to the data source's base URL. This means that, given a base URL of git+https://github.com/hairyhenderson/gomplate//random
and a subpath of random.go
, the resulting URL will be git+https://github.com/hairyhenderson/gomplate//random.go
. To correct this, make sure that base URLs end with a trailing slash when the last component is a directory.
Also, if the subpath begins with a slash, it will be interpreted as an absolute path, and will replace the base URL's path. For example, given a base URL of git+file:///tmp/repos//myrepo/
and a subpath of /myfile.txt
, the resulting URL will be git+file:///myfile.txt
. To correct this, make sure that subpaths don't begin with a slash. Note that for the special //
separator indicating the separation between a Git repository and the path within, a subpath should now begin with .//
rather than //
.
This affects at least the git
and file
data sources.
Previously, some data sources would assume URLs that end without a trailing slash are directories, and relative lookups would be performed within that directory. This was inconsistent with how URLs are normally interpreted, and could lead to unexpected results.
Now, all data sources will always interpret URLs without a trailing slash as files, and relative lookups will be performed within the parent directory of the URL.
For example, given a base URL of vault:///secret
and a subpath of foo
, the resulting URL will be vault:///foo
. To correct this, make sure that base URLs end with a trailing slash when the last component is a directory.
The aws+smp
data source previously returned the AWS output object, with both metadata and data. Users needed to reference the Value
field to get the actual data. Now, the aws+smp
data source will return the data directly.
The consul
data source supports directory semantics, but previously returned all the data as a JSON array of key/value pair objects. Now, the consul
data source will return directory listings like all other data sources, as a JSON array of strings (the names of the keys).
Support for the Vault app-id auth method has been removed. This method was deprecated in Vault 0.6.1, and removed in Vault 1.13. If you're still using this method, you must switch to a different auth method.
suppressEmpty
behaviour is now always enabledIn previous versions of gomplate, output that consist only of whitespace would by default still be written to files, with the suppressEmpty
flag or GOMPLATE_SUPPRESS_EMPTY
environment variable being required to suppress this behaviour. Now, this behaviour is always enabled, and the suppressEmpty
flag and GOMPLATE_SUPPRESS_EMPTY
environment variable have been removed.
A new logging framework is now in use (the standard library's log/slog
package), and so error and debug (--verbose
) messages will appear differently (different colours for the console format, and key/value pairs may are sorted differently).
The following functions have been removed:
conv.Dict
, conv.Slice
, conv.Has
- These have been deprecated since v3.2.0 and have been replaced with coll.Dict
, coll.Slice
, and coll.Has
.slice
alias for coll.Slice
(use coll.Slice
instead)net.Parse*
functions which produced values from the inet.af/netaddr
module have been deprecated and replaced with functions using the Go standard library's net/netip
package:
net.ParseIP
(use net.ParseAddr
instead)net.ParseIPPrefix
(use net.ParsePrefix
instead)net.ParseIPRange
(use net.ParseRange
instead)AWS_META_ENDPOINT
environment variable for overriding the IMDS endpoint in aws
functions has been deprecated in favor of the AWS-native AWS_EC2_METADATA_SERVICE_ENDPOINT
. This will be removed in a later v4 minor release (i.e. not in v4.0.0, but before v5).staticcheck
will help you find these in your code if you're using gomplate as a module. Follow the instructions in the deprecation comments to find out what to use instead.Plenty of people have contributed to gomplate by filing issues, suggesting new features, or submitting pull requests. I'd like to especially thank the following people for submitting pull requests in this release:
Be sure to also check out the multi-platform Docker images available at hairyhenderson/gomplate
.
If you've gained value out of gomplate and want to find a way to encourage development, please consider sponsoring gomplate!
Full Changelog (since v3.11)
Changes since v4.0.0-pre-2
funcs
package to internal/funcs
--exclude-processing
optioncoll.Pick
now supports slice of strings as inputdata.Data
type with a datasource registrystrings.Indent
to error on bad inputRunTemplates
function and old Config
typeConfig
type and updated Run
function and other API functionsstrings.SkipLines
functioncoll.GoSlice
and deprecate slice
aliasstrings.Title
not lowercase acronyms - thanks to @zregvart!index
supports nested keys - thanks to @isavcic!index
and .
coll.GoSlice
example (fixes #1517)t.Setenv
to set env vars in tests - thanks to @Juneezee!github.com/Masterminds/semver
to github.com/Masterminds/semver/v3
- thanks to @wuhuizuo!Published by hairyhenderson 5 months ago
Full Changelog: https://github.com/hairyhenderson/gomplate/compare/v3.11.7...v3.11.8
Published by hairyhenderson 9 months ago
This is a pre-release for v4.0.0 intended for testing. More changes will come before release!
(preliminary release notes follow - these will be updated for v4.0.0)
π₯³ It's finally (almost) here! Welcome to gomplate v4.0.0-pre-2! This release is a (pre-release of a) major
release, with breaking changes. Read on for more details...
Probably the most important feature that's evolved in gomplate over the years is
its support for reading and parsing data from a variety of sources. Using URLs
to specify where to find data has proven to be quite flexible, and has allowed
for a lot of different data sources to be supported.
In early 2021, I took what I had learned from supporting all of these different
data sources, and I created a new module called
go-fsimpl
, which provides a
number of Go filesystem implementations that can be used with Go's filesystem
interfaces.
My goal with go-fsimpl
was always to use it in gomplate, and now that it
supports most of the data sources that gomplate supports, it's time to make the
switch! As a result, and because go-fsimpl
presents a much more consistent
and unified approach to data sources, I've had to drop support for one data
source, and in fixing some inconsistencies in how URLs have been handled by some
of the data sources, I've had to make some breaking changes there as well.
Please, if you're using gomplate in production, please read these release
notes carefully and in full, and review your usage of gomplate to make sure you
can adapt to these changes.
Support for the boltdb
URL scheme has been removed. The implementation was
never very robust, and I'm not aware of anyone using it. It had some unique
quirks that would have made it quite difficult to support in go-fsiml
as-is,
so I've decided to drop it.
slim
binariesThe slim
binaries were deprecated in v3.11, and will no longer be produced.
When using the datasource
function with a subpath (second argument), the
subpath has previously been intepreted by some data sources as a simple addition
to the URL, and by others as a relative URL to be interpreted relative to the
data source's base URL (as specified by the --datasource
flag).
Now, all data sources will interpret the subpath as a relative URL, and will
resolve it relative to the data source's base URL. This means that, given a base
URL of git+https://github.com/hairyhenderson/gomplate//random
and a subpath of
random.go
, the resulting URL will be
git+https://github.com/hairyhenderson/gomplate//random.go
. To correct this,
make sure that base URLs end with a trailing slash when the last component is a
directory.
Also, if the subpath begins with a slash, it will be interpreted as an absolute
path, and will replace the base URL's path. For example, given a base URL of
git+file:///tmp/repos//myrepo/
and a subpath of /myfile.txt
, the resulting
URL will be git+file:///myfile.txt
. To correct this, make sure that subpaths
don't begin with a slash. Note that for the special //
separator indicating
the separation between a Git repository and the path within, a subpath should
now begin with .//
rather than //
.
This affects at least the git
and file
data sources.
Previously, some data sources would assume URLs that end without a trailing
slash are directories, and relative lookups would be performed within that
directory. This was inconsistent with how URLs are normally interpreted, and
could lead to unexpected results.
Now, all data sources will always interpret URLs without a trailing slash as
files, and relative lookups will be performed within the parent directory of the
URL.
For example, given a base URL of vault:///secret
and a subpath of foo
, the
resulting URL will be vault:///foo
. To correct this, make sure that base URLs
end with a trailing slash when the last component is a directory.
The aws+smp
data source previously returned the AWS output object, with
both metadata and data. Users needed to reference the Value
field to get the
actual data. Now, the aws+smp
data source will return the data directly.
The consul
data source supports directory semantics, but previously returned
all the data as a JSON array of key/value pair objects. Now, the consul
data
source will return directory listings like all other data sources, as a JSON
array of strings (the names of the keys).
Support for the Vault app-id auth method has been removed. This method was
deprecated in Vault 0.6.1, and removed in Vault 1.13. If you're still using this
method, you must switch to a different auth method.
The following functions have been removed:
See
the deprecation policy).
slice
alias for coll.Slice
(use coll.Slice
instead)net.Parse*
functions which produced values from the inet.af/netaddr
net/netip
package:
net.ParseIP
(use net.ParseAddr
instead)])net.ParseIPPrefix
(use net.ParsePrefix
insteadnet.ParseIPRange
(use net.ParseRange
instead)AWS_META_ENDPOINT
environment variable for overriding theaws
functions has been deprecated in favor of theAWS_EC2_METADATA_SERVICE_ENDPOINT
. This will be removed in aPlenty of people have contributed to gomplate by filing issues, suggesting new
features, or submitting pull requests. I'd like to especially thank the
following people for submitting pull requests in this release:
Be sure to also check out the multi-platform Docker images available at hairyhenderson/gomplate
.
If you've gained value out of gomplate and want to find a way to encourage development, please consider sponsoring gomplate!
Full Changelog (since v3.11)
Changes since v4.0.0-pre-1
strings.SkipLines
functioncoll.GoSlice
and deprecate slice
aliasstrings.Title
not lowercase acronyms - thanks to @zregvart!index
supports nested keys - thanks to @isavcic!index
and .
coll.GoSlice
example (fixes #1517)t.Setenv
to set env vars in tests - thanks to @Juneezee!github.com/Masterminds/semver
to github.com/Masterminds/semver/v3
- thanks to @wuhuizuo!Published by hairyhenderson 9 months ago
Full Changelog: https://github.com/hairyhenderson/gomplate/compare/v3.11.6...v3.11.7
Published by hairyhenderson 11 months ago
Full Changelog: https://github.com/hairyhenderson/gomplate/compare/v3.11.5...v3.11.6
Published by hairyhenderson over 1 year ago
Full Changelog: https://github.com/hairyhenderson/gomplate/compare/v3.11.4...v3.11.5
Published by hairyhenderson over 1 year ago
Full Changelog: https://github.com/hairyhenderson/gomplate/compare/v3.11.3...v3.11.4
Published by hairyhenderson about 2 years ago
This is a very minor patch release to update a dependency that's causing gomplate to trigger vulnerability scanners for CVE-2022-27664.
To the best of my understanding gomplate is not vulnerable, as it doesn't expose any HTTP servers - this patch release is purely to help vulnerability scans pass!
Full Changelog: https://github.com/hairyhenderson/gomplate/compare/v3.11.2...v3.11.3
Published by hairyhenderson about 2 years ago
Another patch release to allow gomplate to be compiled with Go 1.19.
Full Changelog: https://github.com/hairyhenderson/gomplate/compare/v3.11.1...v3.11.2
Published by hairyhenderson over 2 years ago
Just a simple patch release to fix a bug that prevented the go install
installation method.
Full Changelog: https://github.com/hairyhenderson/gomplate/compare/v3.11.0...v3.11.1
Published by hairyhenderson over 2 years ago
π Welcome to another gomplate release! Once more, a number of bug fixes and new
features. Thanks to the community, gomplate is now available via
MacPorts as well!
Plenty of people have contributed to gomplate by filing issues, suggesting new
features, or submitting pull requests. I'd like to especially thank the
following people for submitting pull requests in this release:
I'm starting to work on gomplate v4, the next major release (with breaking
changes). In preparation for this, I'm listing some features as deprecated (see
the deprecation policy). Note that some of these may have been
deprecated for a while, but I'd like to call them out explicitly here.
slim
binaries are deprecated, and will no longer be produced startingstrings.Sort
(use coll.Sort
instead)conv.Dict
(use coll.Dict
instead)conv.Slice
(use coll.Slice
instead)conv.Has
(use coll.Has
instead)conv.Bool
(use conv.ToBool
instead)Be sure to also check out the multi-platform Docker images available at hairyhenderson/gomplate
.
If you've gained value out of gomplate and want to find a way to encourage development, please consider sponsoring gomplate!
gomplate.Renderer
API is available for rendering templates programmatically. This should be of interest for developers wishing to use gomplate as a library. See the Go docs for examples.file:
URL scheme is supported. The full set of datasource URL schemes will be supported in a future release.templates
config option, and deprecates the previous format. See the docs for templates
for more information.break
, and continue
.crypto.ECDSAGenerateKey
crypto.ECDSADerivePublicKey
net
namespace for working with networks in CIDR notation - thanks to @bartoszj for the contribution!
crypto.SHA*
, but returns raw bytes instead of strings)
crypto.EncryptAES
crypto.DecryptAES
listDatasources
function - thanks to @jeevansai502 for the contribution!JSON
and YAML
functions where escaped forward slashes (\/
) were not being correctly interpretedstrings.Title
to handle unicode punctuation (moves to alternate implementation after Go 1.18 deprecated the standard library function)strings.Indent
would not work correctly when a new-line character is used (now disallowed)aws+sm
datasource will now correctly read a secret written as binary (SecretBinary
) rather than a string (SecretString
)inputDir
is read recursivelyslim
binary, and update the Go install instructions for recent Go versionsconv.URL
: Add example of how to redact the passwordtime.Now
: Add example of how to use Time.IsDST
strings.Split
: More examples to clarify how to use strings.Split
- thanks to @karlschriek for the contribution!Published by hairyhenderson about 3 years ago
π₯³ It's high time for another gomplate release! This release contains quite a few
bug fixes and improvements.
Some packaging updates:
darwin-arm64
) platform!Be sure to also check out the multi-platform Docker images available at hairyhenderson/gomplate
.
If you've gained value out of gomplate and want to find a way to encourage development, please consider sponsoring gomplate!
conv.ToInt
now returns -1
instead of overflowing on 32-bit systems to protect against CWE-190 and CWE-681
crypto.RSAGenerateKey
function now enforces a minimum key size of 2048 bits to protect against CWE-326.darwin-arm64
binarymaster
(fixes #1049)CONSUL_HTTP_ADDR
parsing (fixes #1209)random
functions--input-dir=.
(found in #1081)k8s.io/client-go
to valid semver (fixes #1061)Published by hairyhenderson over 3 years ago
This is largely a bug-fix and stability release, but also contains some fairly
major internal refactoring, specifically to better support some future changes
that will make gomplate easier to use as a library!
Be sure to check out the multi-platform Docker images available at hairyhenderson/gomplate
.
If you've gained value out of gomplate and want to find a way to encourage development, please consider sponsoring gomplate!
$GOMPLATE_LOG_FORMAT
environment variable to support changing logging formats (fix for #942)hairyhenderson/gomplate:alpine
Docker image now ships with an uncompressed binary. Fix for #1007
Published by hairyhenderson about 4 years ago
It's time for another gomplate release, and this time we have a good number of bug fixes, new functions, and updated dependencies.
Thanks to @surki and @jen20 for their contributions to this release!
Of particular note is the new experimental mode which you can use to try out some new functionality that isn't ready to be "locked in" just yet.
In particular, there are now some new RSA Encryption/Decryption functions, including crypto.RSAGenerateKey
, which gives you a way to quickly generate an RSA encryption key pair! The reason these are experimental is because I'm not sure about the UX yet, and the function names may change in a future release.
Be sure to check out the multi-platform Docker images available at hairyhenderson/gomplate
.
If you've gained value out of gomplate and want to find a way to encourage development, please consider sponsoring me!
experimental
configuration option. These features may change before being permanently enabled, and feedback is encouraged from early adopters!base64.DecodeBytes
crypto
namespace.aws.EC2Tags
for returning all EC2 tags on the host - thanks to @surki!test.Kind
and test.IsKind
(implements #892)gcp.Meta
- thanks to @jen20!aws+sm
and aws+smp
keys that don't start with /
(fixes #868)slim
variant of gomplate, to avoid some bugs caused by a newer version (fixes #861)Published by hairyhenderson over 4 years ago
It's high time for another gomplate release! π
The main feature this time around is new support for configuration files! Now you can store config files alongside templates and replace complicated command lines with a single call to gomplate
!
We now also have multi-platform Docker images available at hairyhenderson/gomplate
,
including support for ARM platforms and Windows.
And finally, if you've gained value out of gomplate and want to find a way to encourage development, please consider sponsoring me!
application/x-yaml
and application/text
mime types used in GCPcontext.Context
support and a loggerdata.ToCSV
aws+smp
datasourcesregexp.QuoteMeta
- wraps Go's regexp.QuoteMeta
function.coll.Pick
and coll.Omit
for filtering mapsunknown region
bug (fixes #795)--chmod
before opening output filePublished by hairyhenderson almost 5 years ago
A big release after a bit of a hiatus. π
Big new features include plugin support and 3 new datasources (AWS S3, Google Cloud Storage, and Git!).
Also for those who are using the hairyhenderson/gomplate
Docker images, there are some new tags which will make it easier to stay up to date!
#625 New s3
datasource for reading datasources from AWS S3. See the docs for full information.
#632 New gs
datasource for reading datasources from Google Cloud Storage. See the docs for full information.
#661 New git
datasource! Supports git over HTTP(s), SSH, the "classic" Git protocol, and repos on local filesystems. See the docs for full information.
#581 New --exec-pipe
flag - allows piping output directly into a post-execution command
#635 With the new --plugin
/-p
flag you can plug in your own custom functions!
#683 When parsing a YAML stream with multiple documents (separated with ---
), gomplate will now return the first non-empty document
#651 New stable
and major (v3
) docker image tags - (fixes #648) thanks to @docwhat
stable
, v3
, stable-slim
, v3-slim
, stable-alpine
, v3-alpine
#598 and #677 Moved to go modules. As a result, if you import gomplate into your own code, your import paths need to change to github.com/hairyhenderson/gomplate/v3
strings.ShellQuote
/shellQuote
- thanks to @charles-dyfis-net for this one!coll.Flatten
/flatten
Published by hairyhenderson over 5 years ago
A small but mighty release, almost entirely powered by the community! πͺ
The major features this time around are support for a AWS Secrets Manager data source, and list support for Consul data sources!
aws+sm
- many thanks to @nexeck for this contribution!Published by hairyhenderson over 5 years ago
In this release we've got some spring cleaning, 20 new functions, and a new way to dynamically name output files! ππ·β¨
Also, a new website is up at https://gomplate.ca, and the docs have moved to https://docs.gomplate.ca π
There's also now a #gomplate
Slack channel on the Gophers Slack instance. Get invited by going to https://invite.slack.golangbridge.org, then join #gomplate
and chat with the community and developers.
--output-map
argument for templating output paths (see docs for details)gomplate
- with npm
: npm install -g gomplate
uuid
namespace:
random
namespace:
strings.RuneCount
aws.KMSEncrypt
aws.KMSDecrypt
aws.Account
aws.UserID
aws.ARN
coll.JSONPath