Skip to content

Releases: soxtoby/DotNetDo

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 27 Sep 03:30

Added

  • Do.Fetch() sends HTTP requests from tasks. Do.FetchJson(), Do.FetchXml(), and Do.FetchText() read a response in one line, and Do.FetchFile() streams a download to disk. Unsuccessful responses throw with the status and the start of the response body.
  • Tools.DotNet.Test supports repositories that run dotnet test with Microsoft.Testing.Platform. Its new TestingPlatform options cover MTP test selection and run limits, plus TRX, JUnit, HTML, CTRF, Azure DevOps, and GitHub Actions test reports.
  • Tools.Bun.Test supports Reporter and ReporterOutfile for JUnit XML and dots output.

Changed

  • Tools.DotNet.Test detects the repository's test runner mode from global.json or DOTNET_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.Test options now live under VSTest: Settings, Filter, TestAdapterPath, Loggers, Output, Diag, Collect, Blame*, Interactive, and DisableBuildServers. For example, write Tools.DotNet.Test with { VSTest = new() { Loggers = ["trx"] } }.
  • Tools.Npm.Test has been removed. Use Tools.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

Choose a tag to compare

@github-actions github-actions released this 05 Sep 01:17

Added

  • A static documentation site with a curated guide and generated API reference, published from master.
  • Do.TrailingArguments for reading arbitrary task arguments supplied after the -- command-line separator.
  • Tools.NuGet typed commands for the NuGet CLI.
  • Tools.DotNet.Build and Tools.DotNet.Pack support 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 dotnetdo instead of dotnet-do. After updating, run dotnetdo :completion to replace the existing shell integration. Initialized repositories continue to use ./do.
  • IsNullOrEmpty() and IsNullOrWhiteSpace() now narrow their receiver to non-null when they return false.
  • ExecOptions.Log now uses discoverable ExecLog choices for default, suppressed, stderr-only, filtered, and custom process-output logging.
  • ExecOptions.LogCommand can 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 dotnetdo command instead of invoking dnx on every completion request, and installation now fails before changing shell profiles when that command is unavailable.

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 23 Aug 00:04

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(...) and UnzipTo(...) 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.Environment for transforming the complete environment supplied to raw and typed child processes.
  • ProjectInfo.Name and lazy ProjectInfo.Project access to the default evaluated MSBuild project.

Changed

  • :new now synchronizes configured solution folders after creating a task.
  • DotNetTest.Environment and VSTestCommand.Environment are renamed to TestEnvironment, distinguishing test-host variables from the child-process environment.
  • ProjectInfo.Load(globalProperties) now returns a process-owned MSBuild Project; LoadedProject and caller-owned disposal are removed.

Fixed

  • :init and :new now pin generated tasks to the latest stable DotNetDo.Core version available from configured NuGet sources instead of the CLI's version.
  • AbsolutePath.Delete() and RecreateDirectory() reject filesystem roots.
  • Package tools recognize root-level dotnet-tools.json manifests created by current .NET SDKs, while retaining .config/dotnet-tools.json support.
  • PowerShell, Bash, and Zsh completion works with workspace-local launchers invoked as .\do or ./do.
  • Workspace-local launchers forward colon-prefixed management commands to DotNetDo instead of consuming them as dnx options.
  • Fixed :init failing when adding a new scripts folder to a .sln solution.

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 01 Aug 10:48

Added

  • Non-generic AbsolutePath and ExecResult structured readers return native JSON, TOML, YAML, and XML document models; AbsolutePath can also write YAML and XML document models.
  • :init can add recursively discovered task sources to a configured solution folder, synchronizing individual file entries for .sln and .slnx.
  • AbsolutePath.GetAncestry() for traversing a path from itself through its root.
  • C# tasks can declare an assembly-level TaskDescription shown in task lists, task help, and shell completion.
  • AbsolutePath helpers for user profile, documents, application data, local application data, Program Files, and 32-bit Program Files directories.
  • Do.CreateTempDirectory() and Do.CreateTempFile() for creating uniquely named temporary artifacts with optional prefixes and file extensions.

Changed

  • Default solution discovery now considers only .sln and .slnx files directly in the DotNetDo root; it no longer searches ancestor directories.
  • Joining two AbsolutePath values with / is now rejected at compile time instead of binding through the implicit string conversion.
  • Do.Secret(...) now returns OptionalSecret; .Required() and new Secret(value) produce a Secret with a non-nullable value.
  • Bare do output now shows basic task invocation usage and a clearly headed task list.
  • AbsolutePath.Parent and RelativePath.Parent are now non-nullable. Absolute roots throw on parent access; relative parents continue with .. segments.

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 28 Jul 21:38

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.Bun typed commands for dependency installation, scripts, tests, builds, and package publishing.
  • Tools.Bun.EnsureAvailable for making Bun available through the shared tool-installation seam.
  • Tools.Npm typed 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 --flag as true; explicit true and false values remain supported.
  • Name-only Do.Param declarations now return OptionalParam<T> and support typed parameters without defaults; defaults and .Required() both resolve to Param<T> with a non-nullable Value.
  • Tool availability commands use the common EnsureAvailable property name: Tools.Azure.EnsureAvailable, Tools.Bun.EnsureAvailable, and Tools.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

Choose a tag to compare

@github-actions github-actions released this 26 Jul 11:48

Changed

  • New task templates pin DotNetDo.Core to 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.Bicep typed commands for Bicep authoring, modules, deployment snapshots, installation, and upgrades.
  • :update for updating the root-local DotNetDo tool manifest entry and exact package pins in workspace scripts, with named-package, --all, and --prerelease modes.
  • Tools.DotNet.PackageSearch and Tools.DotNet.ToolUpdate typed .NET CLI commands.
  • QuotedArgument() extensions for optional and required task parameters and secrets.
  • ProjectInfo and Solution string conversions returning their absolute file paths.

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 26 Jul 00:04

Fixed

  • Tasks no longer fail to read dotnetdo.toml with 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/ReadToml and their write counterparts therefore work in tasks without per-task #:property directives.

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 23:20

Added

  • Do.IsLocalBuild and CI-sensitive typed tool defaults, including Release configuration for .NET and MSBuild commands.
  • tools array in dotnetdo.toml for declaring tool requirements by canonical name, installed on demand with the :install command.
  • Tools.Azure.Install for making the Azure CLI available, installing it through Scoop (and bootstrapping Scoop itself) when missing.
  • Tools.Scoop commands for installing, uninstalling, and updating apps, managing buckets and settings, plus Tools.Scoop.InstallSelf for 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, matching AbsolutePath.
  • Scripting convenience extensions for sequence joining and filtering, line splitting, nullable string checks, and receiver-style regular expressions.
  • Configured meta-tasks in dotnetdo.toml for composing ordered, fail-fast task sequences with argument forwarding.
  • Tools.DotNet.NuGetPush for publishing NuGet packages.
  • Tools.MSBuild for running the MSBuild toolset discovered by MSBuild Locator.
  • Tools.VSTest for running test containers with the VSTest runner discovered alongside the installed MSBuild toolset.

Changed

  • Do.Exec now resolves commands through PATH and invokes Windows batch shims through their native command host, so typed tools no longer need launcher-specific execution overrides.
  • ToolInstall.IsAvailable reports executable availability; installs may omit a Scoop package, failing clearly when no installer is configured.
  • Logging.Level now supplies best-effort native output-volume defaults to fresh typed tool commands, with explicit per-tool controls taking precedence.
  • Do.Secret now returns Secret, new Secret(value) automatically registers the value for redaction, and the required wrapper is now named RequiredSecret.
  • 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. ToolCommand replaces its protected keyed argument setter/getter API with Arg and Args rendering helpers.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 17 Jul 01:38

Changed

  • Changed tool command to dotnet-do with workspace-local do.cmd and do launchers created by :init.
  • GitRepository.IsDirty ignores ignored files.

v0.1.0

Choose a tag to compare

@soxtoby soxtoby released this 17 Jul 01:46

Added

  • do CLI tool for creating, listing, and running tasks.
  • Do.Exec function for easily running console commands.
  • Do.Param and Do.Secret functions for easily reading configuration values and secrets.
  • Serilog logging for simple logging that integrates with CI providers and automatically redacts secret values.
  • AbsolutePath and RelativePath types for working with file paths.
  • Helpers for parsing and serializing JSON, TOML, YAML, and XML files.
  • Azure Pipelines and GitHub Actions helpers.
  • Do.GitRepo for accessing information about the current repo.
  • Do.Solution for accessing information about the current solution and parsing project files.
  • Tools.DotNet.* tools for running dotnet CLI.
  • Tools.Git tools for running git commands.
  • Tools.GitVersion tool for running GitVersion.