Skip to content

Releases: yevhen/Nake

3.0.0

21 Feb 17:23
Compare
Choose a tag to compare

Nake runs on .NET6 and is fully linux compatible. Alzo, check out cool new feature - awaiting strings to execute cli commands

3.0.0-beta-01

12 Apr 10:06
Compare
Choose a tag to compare

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 and Nake.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 method
  • MSBuildExtensions -> MsBuildExtensions
  • Microsoft.Build.Tasks and Microsoft.Build.Utilities are not imported by default
  • Meta and Utility 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

05 Sep 20:29
Compare
Choose a tag to compare

New feature:

  • Support for Enum parameters

2.2.0

05 Sep 19:21
Compare
Choose a tag to compare

Fixes:

  • Exposed extension methods to deal with MSBuild task conversions
  • App.Fail now shows error message in red color

Breaking change:

  • Run.MSBuild was renamed to Run.Exec

2.1.1

20 Aug 16:03
Compare
Choose a tag to compare
  • 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

13 Aug 17:55
Compare
Choose a tag to compare

Standalone release 2.0.19

2.0.12

22 Jun 23:40
Compare
Choose a tag to compare

V2 went gold!

2.0.11-beta

30 May 15:48
Compare
Choose a tag to compare
2.0.11-beta Pre-release
Pre-release

Standalone release 2.0.11-beta

2.0.10-beta

30 May 13:25
Compare
Choose a tag to compare
2.0.10-beta Pre-release
Pre-release

Standalone release 2.0.10-beta

2.0.8-beta

28 May 23:20
Compare
Choose a tag to compare
2.0.8-beta Pre-release
Pre-release

Standalone release 2.0.8-beta