Releases: soxtoby/DotNetDo
Releases · soxtoby/DotNetDo
Release list
v0.9.0
Added
Do.Fetch()sends HTTP requests from tasks.Do.FetchJson(),Do.FetchXml(), andDo.FetchText()read a response in one line, andDo.FetchFile()streams a download to disk. Unsuccessful responses throw with the status and the start of the response body.Tools.DotNet.Testsupports repositories that rundotnet testwith Microsoft.Testing.Platform. Its newTestingPlatformoptions cover MTP test selection and run limits, plus TRX, JUnit, HTML, CTRF, Azure DevOps, and GitHub Actions test reports.Tools.Bun.TestsupportsReporterandReporterOutfilefor JUnit XML and dots output.
Changed
Tools.DotNet.Testdetects the repository's test runner mode fromglobal.jsonorDOTNET_TEST_RUNNER. It renders shared options for that mode and fails before running when options for the other mode are set.- VSTest-only
Tools.DotNet.Testoptions now live underVSTest:Settings,Filter,TestAdapterPath,Loggers,Output,Diag,Collect,Blame*,Interactive, andDisableBuildServers. For example, writeTools.DotNet.Test with { VSTest = new() { Loggers = ["trx"] } }. Tools.Npm.Testhas been removed. UseTools.Npm.Run with { Script = "test" }instead.
Fixed
- Type and member references in API reference descriptions are now links, labeled without the namespace, instead of plain fully qualified names.
v0.8.0
Added
- A static documentation site with a curated guide and generated API reference, published from
master. Do.TrailingArgumentsfor reading arbitrary task arguments supplied after the--command-line separator.Tools.NuGettyped commands for the NuGet CLI.Tools.DotNet.BuildandTools.DotNet.Packsupport arbitrary MSBuild properties plus first-class CI, version, and copyright properties.- Interactive local task runs prompt for missing required parameters before execution, with masked secret input and runtime fallback for conditional requirements.
Changed
- The global tool command is now
dotnetdoinstead ofdotnet-do. After updating, rundotnetdo :completionto replace the existing shell integration. Initialized repositories continue to use./do. IsNullOrEmpty()andIsNullOrWhiteSpace()now narrow their receiver to non-null when they returnfalse.ExecOptions.Lognow uses discoverableExecLogchoices for default, suppressed, stderr-only, filtered, and custom process-output logging.ExecOptions.LogCommandcan suppress the command-start log for individual commands.
Fixed
- Meta-task argument parsing preserves escaped quotes, empty values, and trailing backslashes when forwarding arguments to tasks.
- The bundled source generator and analyzer now target .NET Standard 2.0 so scripts do not require the .NET SDK used to publish DotNetDo.
- Workspace-launcher completion uses the installed
dotnetdocommand instead of invokingdnxon every completion request, and installation now fails before changing shell profiles when that command is unavailable.
v0.7.0
Added
GitRepository.VerifyUnchanged(...)for failing generation or formatting operations that alter the Git-visible repository state while allowing pre-existing changes.:rename <old-name> <new-name>for renaming task files and synchronizing configured solution folders.- A compiler warning when a task invokes DotNetDo through a compile-time-known
Do.Exec(...)command; use a configured meta-task or shared C# method instead. AbsolutePath.ZipTo(...)andUnzipTo(...)for creating ZIP archives from files or directories and extracting them.DeleteAll()for deleting a collection of absolute paths while omitting duplicates and paths beneath another supplied path.RecreateAll()for recreating a collection of directories.AbsolutePath.TemporaryFileContents(...)for scoped file-content replacement that restores the original bytes on disposal and replacement failure.ExecOptions.Environmentfor transforming the complete environment supplied to raw and typed child processes.ProjectInfo.Nameand lazyProjectInfo.Projectaccess to the default evaluated MSBuild project.
Changed
:newnow synchronizes configured solution folders after creating a task.DotNetTest.EnvironmentandVSTestCommand.Environmentare renamed toTestEnvironment, distinguishing test-host variables from the child-process environment.ProjectInfo.Load(globalProperties)now returns a process-owned MSBuildProject;LoadedProjectand caller-owned disposal are removed.
Fixed
:initand:newnow pin generated tasks to the latest stableDotNetDo.Coreversion available from configured NuGet sources instead of the CLI's version.AbsolutePath.Delete()andRecreateDirectory()reject filesystem roots.- Package tools recognize root-level
dotnet-tools.jsonmanifests created by current .NET SDKs, while retaining.config/dotnet-tools.jsonsupport. - PowerShell, Bash, and Zsh completion works with workspace-local launchers invoked as
.\door./do. - Workspace-local launchers forward colon-prefixed management commands to DotNetDo instead of consuming them as
dnxoptions. - Fixed
:initfailing when adding a new scripts folder to a.slnsolution.
v0.6.0
Added
- Non-generic
AbsolutePathandExecResultstructured readers return native JSON, TOML, YAML, and XML document models;AbsolutePathcan also write YAML and XML document models. :initcan add recursively discovered task sources to a configured solution folder, synchronizing individual file entries for.slnand.slnx.AbsolutePath.GetAncestry()for traversing a path from itself through its root.- C# tasks can declare an assembly-level
TaskDescriptionshown in task lists, task help, and shell completion. AbsolutePathhelpers for user profile, documents, application data, local application data, Program Files, and 32-bit Program Files directories.Do.CreateTempDirectory()andDo.CreateTempFile()for creating uniquely named temporary artifacts with optional prefixes and file extensions.
Changed
- Default solution discovery now considers only
.slnand.slnxfiles directly in the DotNetDo root; it no longer searches ancestor directories. - Joining two
AbsolutePathvalues with/is now rejected at compile time instead of binding through the implicit string conversion. Do.Secret(...)now returnsOptionalSecret;.Required()andnew Secret(value)produce aSecretwith a non-nullable value.- Bare
dooutput now shows basic task invocation usage and a clearly headed task list. AbsolutePath.ParentandRelativePath.Parentare now non-nullable. Absolute roots throw on parent access; relative parents continue with..segments.
v0.5.0
Added
- User-scoped PowerShell, Bash, and Zsh completion through
dotnet-do :completion, including built-in commands, task names, task parameters, booleans, and same-file enum values. Tools.Buntyped commands for dependency installation, scripts, tests, builds, and package publishing.Tools.Bun.EnsureAvailablefor making Bun available through the shared tool-installation seam.Tools.Npmtyped commands for installing dependencies, running scripts and tests, packing, and publishing packages.
Changed
- Task help keeps parameter lines focused on descriptions, requirements, secrets, and defaults instead of derived environment variable names.
- Boolean task parameters accept a bare
--flagastrue; explicittrueandfalsevalues remain supported. - Name-only
Do.Paramdeclarations now returnOptionalParam<T>and support typed parameters without defaults; defaults and.Required()both resolve toParam<T>with a non-nullableValue. - Tool availability commands use the common
EnsureAvailableproperty name:Tools.Azure.EnsureAvailable,Tools.Bun.EnsureAvailable, andTools.Scoop.EnsureAvailable. - Successful tool commands no longer emit a completion log after execution.
Fixed
- Default process-output logging records each output line as the message instead of a structured log property.
- Task help renders named API default values without the
defaultValue:argument name.
v0.4.0
Changed
- New task templates pin
DotNetDo.Coreto the running DotNetDo version.
Added
- Camel, Pascal, snake, and kebab case string helpers.
AbsolutePath.RecreateDirectory()for recreating an existing directory empty or creating it when missing.Tools.Azure.Biceptyped commands for Bicep authoring, modules, deployment snapshots, installation, and upgrades.:updatefor updating the root-local DotNetDo tool manifest entry and exact package pins in workspace scripts, with named-package,--all, and--prereleasemodes.Tools.DotNet.PackageSearchandTools.DotNet.ToolUpdatetyped .NET CLI commands.QuotedArgument()extensions for optional and required task parameters and secrets.ProjectInfoandSolutionstring conversions returning their absolute file paths.
v0.3.1
Fixed
- Tasks no longer fail to read
dotnetdo.tomlwith a Tomlyn reflection-serialization error. Configuration now loads through source-generated TOML metadata, and DotNetDo.Core re-enables reflection-based TOML and JSON serialization for consuming apps, which file-based apps otherwise disable through their Native AOT publishing defaults.AbsolutePath.ReadJson/ReadTomland their write counterparts therefore work in tasks without per-task#:propertydirectives.
v0.3.0
Added
Do.IsLocalBuildand CI-sensitive typed tool defaults, includingReleaseconfiguration for .NET and MSBuild commands.toolsarray indotnetdo.tomlfor declaring tool requirements by canonical name, installed on demand with the:installcommand.Tools.Azure.Installfor making the Azure CLI available, installing it through Scoop (and bootstrapping Scoop itself) when missing.Tools.Scoopcommands for installing, uninstalling, and updating apps, managing buckets and settings, plusTools.Scoop.InstallSelffor bootstrapping Scoop with the official installer.AbsolutePath.TryParse()for converting textual input that may not be a valid absolute path.RelativePath.QuotedArgument()for interpolating relative paths into raw command strings, matchingAbsolutePath.- Scripting convenience extensions for sequence joining and filtering, line splitting, nullable string checks, and receiver-style regular expressions.
- Configured meta-tasks in
dotnetdo.tomlfor composing ordered, fail-fast task sequences with argument forwarding. Tools.DotNet.NuGetPushfor publishing NuGet packages.Tools.MSBuildfor running the MSBuild toolset discovered by MSBuild Locator.Tools.VSTestfor running test containers with the VSTest runner discovered alongside the installed MSBuild toolset.
Changed
Do.Execnow resolves commands throughPATHand invokes Windows batch shims through their native command host, so typed tools no longer need launcher-specific execution overrides.ToolInstall.IsAvailablereports executable availability; installs may omit a Scoop package, failing clearly when no installer is configured.Logging.Levelnow supplies best-effort native output-volume defaults to fresh typed tool commands, with explicit per-tool controls taking precedence.Do.Secretnow returnsSecret,new Secret(value)automatically registers the value for redaction, and the required wrapper is now namedRequiredSecret.- Typed tool commands now quote structured argument values automatically while preserving raw additional arguments.
- Typed tool commands now own semantic property state and canonical argument order, independent of property assignment order.
ToolCommandreplaces its protected keyed argument setter/getter API withArgandArgsrendering helpers.
v0.2.0
Changed
- Changed tool command to
dotnet-dowith workspace-localdo.cmdanddolaunchers created by:init. GitRepository.IsDirtyignores ignored files.
v0.1.0
Added
doCLI tool for creating, listing, and running tasks.Do.Execfunction for easily running console commands.Do.ParamandDo.Secretfunctions for easily reading configuration values and secrets.- Serilog logging for simple logging that integrates with CI providers and automatically redacts secret values.
AbsolutePathandRelativePathtypes for working with file paths.- Helpers for parsing and serializing JSON, TOML, YAML, and XML files.
- Azure Pipelines and GitHub Actions helpers.
Do.GitRepofor accessing information about the current repo.Do.Solutionfor accessing information about the current solution and parsing project files.Tools.DotNet.*tools for running dotnet CLI.Tools.Gittools for running git commands.Tools.GitVersiontool for running GitVersion.