Releases: mandelsoft/spiff
The List-Merge Release
Fixes:
- Major fix for merging list entries
Under certain conditions, the merge of list entries provides unexpected and wrong results, because it overwrite the wrong entries.
This fix reworks the complete list merge to work correctly. - Improve handling of virtual filesystems
OS calls likeexec
are prohibited if a virtual file system is given. Unfortunately it only checks whether such a filesystem is given.
It does not take into account, that the given filesystem might be the OS filesystem. This is fixed.
Additionally we now build windows binaries and there is a simple build target in the makefile.
v1.7.0-beta-5
Features:
- support ~ in file paths
- function
contains
now supports checking keys in maps
Fixes:
- package spiffing: fix registry creation for adding function to spiff context
v1.7.0-beta-4
-
support of multi-dimensional index operator (
matrix[1,2]
) -
enable ref through completed paths in partly resolved collections
-
support of root level indexing (
.[index]
) on lists and maps -
support disabeing interpretation of keyed list entries
-
keyed list entry stub merging for lists with unique key set, only
-
support of deep structures for option
-D
-
upgate Gg version to 1.18
v1.7.0-beta-3 (The Control Release)
- Semver support based on Masterminds Semver Library
There is a set of functions to examine, match, validate and modify semantic version names. - Dynamic merge support for overwriting of fields. Instead of inheriting a fixed value through the processing chain it is now possible
to dynamically evaluate an inherited template expression in the context of every overwrite action. - command execution result cache now in execution state
- IP arithmetic o CIDRs
- YAML based control structures
- ARM support for Linux
Fixes:
- synchronized access to command execution result cache
- missing
type
support forfloat
- documentation fixes
v1.7.0-beta-2
The beta-2 release introduces a new tag feature. Tags offer separate namespaces to resolve reference expressions in addition to the default document namespace. Any document node can be tagged. Using this tag in reference expressions as qualifier can be used to lookup a reference in the value of the tag,
Tags can be used in a multi-document template stream processing to provide cross-document information. Global tags are also passed along the stub merges.
A Tag may consist of a sequence of tag components to provide a structured namespace. This can be used to resolve a reference path in a tag hierarchy by the first matching tree level.
v1.7.0-beta-1
This release offers a first draft version for string interpolation. It is now possible to incorporate dynaml expressions in regular yaml string values. This way string composition can be directly expressed:
name: alice
dnsname: (( name )).spiff.mandelsoft.org
Because this alpha feature is not compatible with the previous behaviour, it must be enabled by using the environment variable SPIFF_FEATURES=interpolation
, or by using the command line option --interpolation
.
Additionally a whole bunch of go's math functions for floats is now available as dynaml functions, like ceil
, abs
, sin
and much more. Type conversions are possible using the integer
, string
, float
and bool
functions.
It also fixes the evaluation of qualified reference expressions. It is possible now to refer to catch(expr).error
.
The state library and depending libraries have been extended to enable the usage of their functions in dynaml expressions generating intermediate (non-static) structural elements for the final document.
The project now uses go modules instead of godep and tool dependencies for the peg parser generator. It uses go generate to generate the parser now.
v1.6.1
Various fixes
- fix error propagation for ||
- error messages for http(s) access
- cert lib fix
- use crypto lib for wireguard keys
Features:
map{}
on lists- multi document write mode
- merge option
--evaluate
to evaluate expression - more validation operators for comparison of numbers and strings
- state lib now supports adaption of stub path for state access
v1.6.0
Dynaml Features
- access to value bindings (
___
) - public key extraction from certificate
- wireguard key support
- merging root nodes
- function
contains_ip
- function
check
to check yaml struction likevalidate
but without error
Options and Commands
- option
--define
to declare bindings on the command line - option
--bindings
to pass value bindings from file - command
convert
to convert yaml/json to json/yaml
Go API
some more spiffing
utility functions
The Virtual Release
The main feature of this release is to base all file system related functions of the dynaml templating engine on a virtual file system instead of the OS file system. Together with the new golang library view for spiff it is possible now to use spiff templating as part of any go program with complete control over the file system functions of the templating engine. The file system visible to the templating engine can be composed using parts of the OS filesystem or any kind of simulated file system content by using a memory based implementation for the virtual filesystem.
More information about the virtual file system can be found in project mandelsoft/vfs.
The library frontend of the templating engine supports:
- state handling
- value injection for simple templating
- injection of additional dynaml functions
- cascading with out without additional values
- orchestratable file system view for file system related dynaml functions
Additionally the templating engine is able to work with float arithmetic, also.
v1.5.0
New functions:
mkdir
create a directory and all its intermediate onesbasename
dirname
parseutl
to map an URL string to a map of formal URL fields
New features:
- support generation of PKIX format (PEM type
PUBLIC KEY
) for RSA public keys (default is still PKCS1 as PEM typeRSA PUBLIC KEY
) (required by Kubernetes). - Escaping for spiff special keywords like
<<!
and `((! ))`` sum
now support nil (~
) as initial value, which is returned for an empty aggregation- Library mode now supports pre-validation of template
- Library mode now support disabling of OS related functions (like
write
andread
) - Options
--preserve-temporary
and--preserve-escapes
to control the cleanup processing of the final document
Fixes:
- fix output of unicode characters in
\u
notation