Skip to content

v0.6.0-rc2: ExecuteAsync API Consistency

Pre-release
Pre-release

Choose a tag to compare

@StevenTCramer StevenTCramer released this 14 Jul 06:42
· 750 commits to master since this release

πŸš€ Release Candidate 2: ExecuteAsync API Consistency

This release introduces a BREAKING CHANGE that brings complete API consistency to all ExecuteAsync methods.

πŸ’₯ Breaking Change

All ExecuteAsync() methods now consistently return Task<ExecutionResult> instead of Task.

Before (Inconsistent):

// Some returned ExecutionResult
ExecutionResult result = await Run("echo", "test").ExecuteAsync();

// Others returned void
await DotNet.Build().ExecuteAsync(); // No result available\!

After (Consistent):

// ALL ExecuteAsync methods now return ExecutionResult
ExecutionResult result = await Run("echo", "test").ExecuteAsync();
ExecutionResult result = await DotNet.Build().ExecuteAsync();
ExecutionResult result = await Fzf.Run().ExecuteAsync();

// Use throwaway variable if result not needed
_ = await DotNet.Test().ExecuteAsync();

✨ What You Get

Every ExecuteAsync call now provides access to:

  • ExitCode - The process exit code
  • StandardOutput - The complete stdout
  • StandardError - The complete stderr
  • StartTime, ExitTime, RunTime - Execution timing details

πŸ“Š Scope of Changes

  • 65 methods updated across 22 files
  • 100% API consistency achieved
  • Zero test failures - all 30 test suites pass
  • Affects: All DotNet commands, Fzf, Ghq, Gwq builders

πŸ”„ Migration Guide

If you don't need the ExecutionResult, use a throwaway variable:

// Old code that just executed
await DotNet.Build().ExecuteAsync();

// New code options:
_ = await DotNet.Build().ExecuteAsync();  // Discard result
// OR
var result = await DotNet.Build().ExecuteAsync();  // Use result

🎯 Also Includes

  • TestRunner pattern implementation from RC1
  • CI/CD workflow fixes for NuGet publishing
  • 100% test success rate maintained

Full Changelog: v0.6.0-rc1...v0.6.0-rc2