Releases: yevhen/Nake
Releases · yevhen/Nake
3.0.0
3.0.0-beta-01
First actually usable release after Nake was migrated to .NET Core.
New Features
- The easiest way to invoke the command line via
await "docker ps -a"
with automatic cross-platform escaping of arguments. The underlying execution is done via MedallionShell package - Since MedallionShell operates on a string array for arguments, which is verbose, the Nake introduces special syntax to construct app invocation strings similar to existing shells:
await "app {arg1} {arg2}"
.Use spaces to delimit arguments. If an argument contains spaces use single quotes'arg with space'
. If it contains single quote - just double it'contains '' quote'
. The Nake will split the string into a string array and then MedallionShelll will properly quote the arguments in a platform-dependent syntax - Backslash () is now supported as a line continuation symbol for verbatim command strings
- Full IntelliSense support in VSCode (thanks for plain C# compatibility, dotnetscript VSCode extension and distribution of
Nake.Meta
andNake.Utility
libraries as nuget packages) - Support for referencing Nuget packages in scripts, thanks to dotnet-script project dependency package
- Async task support. Including safe concurrent execution with run-once guarantee for
Steps
- Environment variables inlining (
%VAR%
) is now dependent on scope: inlined at compile time for constants and live bound to the environment for variable scopes - The
NakeScriptDirectory
variable is now inlined according to a script location - As a consequence of building on top of MedallionShell package, piping and standard streams redirects are supported when command line invocations are created via
Run(cmd)
Tee
helper class when you want to both print to std out and capture output
var tee = new Tee(Log.Out);
var result = await Run($"docker images list").With(tee);
Assert.That(result.Success);
Assert.That(tee.StandardError().Count, Is.EqualTo(0));
Assert.That(tee.StandardOutput().Count, Is.GreaterThan(0));
Breaking Changes
Nake.Run
->Nake.Shell
Nake.Exec(MsBuildTask)
->MsBuildTask.Exec()
- as extension methodMSBuildExtensions
->MsBuildExtensions
Microsoft.Build.Tasks
andMicrosoft.Build.Utilities
are not imported by defaultMeta
andUtility
are now published as separate packages and need to be nuget imported
Known Issues
- We don't yet support multi-level caching (script references vs script code) which leads to unnecessary nuget restores when only the script code changed
- Not all of the script compilation hacks were backported from dotnet-script so referencing some of the nuget packages will not work as expected (ie packages with native libraries)
- The automatic quoting of variables in string interpolations advertised in documentation is not yet implemented
- The syntax for calling nested tasks is still dot-based (ie
dotnet.tool list
) instead of space-based (dotnet tool list
). That will be resolved in next release
2.3.0
2.2.0
2.1.1
- Fixed ambigious FS overloads and inconvenient env var in-lining behavior
- Get rid of MSBuild engine. Just using cmd-line is much better
- Introduced new Exec function to run cmd-line executables
- Make explicit conversion to string with ToString() overload and to array of TaskItem
2.0.19
2.0.12
2.0.11-beta
Standalone release 2.0.11-beta
2.0.10-beta
Standalone release 2.0.10-beta
2.0.8-beta
Standalone release 2.0.8-beta