- Removes deprecated 'result' variable. Use
${output}
instead of${result}
- Removes deprecated 'For each' syntax. Use
${var}: [list]
assignment. - Removes '!any' YAML syntax. Use 'in' operator for tests.
- Update -- Updates the contents of an object. Same as
Join
which is now deprecated. - Do in parallel -- To divide work in parallel threads
- Raw data and Live data to convert back and forth between interpreted data and raw data.
- Non-mathing JSON path variable syntax now returns empty list. Was: unresolved variable syntax.
- 'Not' expression for If statements
- If can take any command in body, not just 'Do'
- Replace works in lists and dicts too.
- Support for cookies in HTTP requests. Cookies returned by the server are remembered
- Experimental: Distributed Yay execution in a Celery cluster. (Source switch only)
- Removes 'Name' command. Use 'Task' instead
- On Http request -- Basic webhook support allows you to run Yay as a web server listening to requests.
- New For each syntax. Old syntax is deprecated but still works
- For each command returns a list of results
- Major refactoring of code base
- Replaced
context.yay
withyay-context.yaml
that has a different structure.
Old context.yay
:
default:
myvar: some value
production:
myvar: important
New yay-context.yaml
:
variables:
myVar: some value
path:
- ~/yay-snippets
dependencies:
XL Release: 1.0
profiles:
production:
variables:
myVar: important
- Renamed command line option to select a different context profile from
-c
to-p
. - Data loaded with
Read file
no longer interprets${...}
variable syntax in the file.
- Apply variables -- Substitutes variables in raw YAML, for when content was loaded from a file.
- Composability -- refer to scripts from a different directory by specifying them in the
path
section of theyay-context.yaml
file. - Basic package support -- decalre packages in the
dependencies
section of theyay-context.yaml
file and Yay wil look for them in the~/.yay/packages
directory by specifying them in the - Properly supports JSONPath in
${...}
variable syntax - Supports loading files that contain
${...}
syntax unrelated to Yay variables and keeps them as 'raw' YAML - Support for headers in HTTP commands
- Support for Basic Authentication in HTTP commands
- Http endpoint command now also takes nested arguments that serve as defaults for any HTTP command
- Merge command supports merging object with output variable
- Repeat -- Introduces Repeat / until control structure
- Wait -- Wait for a number of seconds.
- Adds 'save as' property to Http commands that saves the result to a file.
- Removes Yaml warnings
-
Renamed output variable from
${result}
to${output}
. For backwards compatibility,${result} is still stored but usage of it is deprecated. No longer supported: ** Setting $ {result} explicitly / 'Result' command. Use 'Output' command that sets the${output}
var directly. ** 'Expected result' is renamed to 'Expected output' -
Renames 'item' in 'If' to 'object' so it aligns with 'equals'.
- Input -- defines parameters and provides default values.
- Output -- simply sets the result.
- Execute yay file -- executes a file in the same directory
- As -- an alternative to 'Set variable'
- Assert that -- assert with 'if' syntax
- Merge --
-
Original recipes in the examples!
-
Introduces
context.yay
. You can now invoke yay with a '-c context-name' command line option and it will populate variables from context.yay file in the same directory as the script. -
Allows composition of yay files.
Adds 'Execute yay file' handler and automatically registers all yay files in the same directory as handlers.
File names are transformed from 'kebab-case' to words. For example, 'Do-something-with-Yay.yay' is registered as 'Do something with Yay'
-
Improves variable resolving to 'For each', 'Do' an if statements.
-
Adds Arango support (tentative)
-
Reads yay files from ~/.yay if not found in current directory
-
List or dict variables in text are now rendered as YAML.