Show [default: true] in help for bool options/arguments with explicit default factories#2781
Open
Show [default: true] in help for bool options/arguments with explicit default factories#2781
[default: true] in help for bool options/arguments with explicit default factories#2781Conversation
Co-authored-by: jonsequitur <547415+jonsequitur@users.noreply.github.com>
Co-authored-by: jonsequitur <547415+jonsequitur@users.noreply.github.com>
Co-authored-by: jonsequitur <547415+jonsequitur@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Fix help output for bool options with DefaultValueFactory
Show Mar 10, 2026
[default: true] in help for bool options/arguments with explicit default factories
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
--helpwas omitting defaults for boolean symbols even whenDefaultValueFactoryexplicitly returnedtrue, while non-boolean defaults were shown. This change aligns bool default rendering with actual configured defaults and preserves suppression for empty/default-like values.Help default rendering: bool-aware formatting
HelpBuilder.Default.GetArgumentDefaultValueto evaluate both value and symbol type.bool/bool?defaults now render as:true→ shown astruefalse/null→ suppressed (empty), consistent with current help style that avoids noisy implicit defaults.Default visibility decision simplified
ShouldShowDefaultValue(Option)andShouldShowDefaultValue(Argument)now gate onHasDefaultValue.truedefaults are no longer dropped.Output composition cleanup
HelpBuilder, preventing empty entries from affecting bracketed default output formatting.Regression coverage
HelpBuilderTeststo verify help output includes[default: true]forOption<bool>withDefaultValueFactory = _ => true.Example:
Now renders in help as:
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
11vvsblobprodcus336.vsblob.vsassets.io/home/REDACTED/work/command-line-api/command-line-api/.dotnet/dotnet /home/REDACTED/work/command-line-api/command-line-api/.dotnet/dotnet msbuild /m /nologo /clp:Summary /v:minimal /nr:true /warnaserror /p:TreatWarningsAsErrors=true /p:ContinuousIntegrationBuild=false /home/REDACTED/work/command-line-api/command-line-api/artifacts/toolset/restore.proj /t:__WriteToolsetLocation /clp:ErrorsOnly;NoSummary /p:__ToolsetLocationOutputFile=/home/REDACTED/work/command-line-api/command-line-api/artifacts/toolset/11.0.0-beta.26076.102.txt(dns block)./.dotnet/dotnet ./.dotnet/dotnet test src/System.CommandLine.Tests/System.CommandLine.Tests.csproj -c Debug --filter FullyQualifiedName~HelpBuilderTests 00/microsoft.net.workload.emscripten.net7/11.0.100-alpha.1.26064.118/(dns block)./.dotnet/dotnet ./.dotnet/dotnet test src/System.CommandLine.Tests/System.CommandLine.Tests.csproj -c Debug --filter FullyQualifiedName~Help_describes_default_value_for_boolean_option_when_default_value_is_true|FullyQualifiedName~Help_describes_default_value_for_option_with_argument_having_default_value(dns block)2kmvsblobprodcus39.vsblob.vsassets.io/tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/DCBAF03DA291655FB2C64D553E1C1E2E/missingpackages_workingdir --packages /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/missingpackages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/nugetconfig/nuget.config --force(dns block)/tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/46EB19D8E6D150879BD3367A72FC2FBC/missingpackages_workingdir --packages /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/missingpackages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/nugetconfig/nuget.config --force(dns block)2zrvsblobprodcus388.vsblob.vsassets.io/tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/940B32AFA3A9BBA00112E7C1E2D1C63E/missingpackages_workingdir --packages /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/missingpackages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/nugetconfig/nuget.config --force(dns block)7devsblobprodcus323.vsblob.vsassets.io/tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/C774AB016F77C95E8B121BD603D54D05/missingpackages_workingdir --packages /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/missingpackages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/nugetconfig/nuget.config --force(dns block)c78vsblobprodcus322.vsblob.vsassets.io/tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/38137712C671CCEA0DDC198C705E19A0/missingpackages_workingdir --packages /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/missingpackages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/nugetconfig/nuget.config --force(dns block)gervsblobprodcus329.vsblob.vsassets.io/tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/CB3D70C1C3CCEDE61E9080295E05A90C/missingpackages_workingdir --packages /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/missingpackages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/nugetconfig/nuget.config --force(dns block)imzvsblobprodcus368.vsblob.vsassets.io/tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/5707D9CCD3909344C2384588AB311A3D/missingpackages_workingdir --packages /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/missingpackages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/nugetconfig/nuget.config --force api/��(dns block)josvsblobprodcus372.vsblob.vsassets.io/tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/CB3D70C1C3CCEDE61E9080295E05A90C/missingpackages_workingdir --packages /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/missingpackages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/nugetconfig/nuget.config --force(dns block)k4kvsblobprodcus344.vsblob.vsassets.io/tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/24383DCD8ED80912D633926A44052A4E/missingpackages_workingdir --packages /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/missingpackages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/nugetconfig/nuget.config --force api/�� Tests/Help/HelpBuilderTests.cs(dns block)m8dvsblobprodcus37.vsblob.vsassets.io/tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/5A662EEFB2568432D6FDBE7CF1D19C8E/missingpackages_workingdir --packages /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/missingpackages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/nugetconfig/nuget.config --force ng/emptyFakeDotnetRoot ing/emptyFakeDotnetRoot(dns block)nn8vsblobprodcus340.vsblob.vsassets.io/tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/2BAB33F2843F471466949892BFF6B2A0/missingpackages_workingdir --packages /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/missingpackages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/nugetconfig/nuget.config --force(dns block)p2ovsblobprodcus312.vsblob.vsassets.io/tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/C190587CB2C89F00A34B95E024BCCC9E/missingpackages_workingdir --packages /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/missingpackages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/nugetconfig/nuget.config --force(dns block)securitytools.pkgs.visualstudio.com/opt/hostedtoolcache/CodeQL/2.24.2/x64/codeql/csharp/tools/linux64/Semmle.Autobuild.CSharp /opt/hostedtoolcache/CodeQL/2.24.2/x64/codeql/csharp/tools/linux64/Semmle.Autobuild.CSharp(dns block)xupvsblobprodcus332.vsblob.vsassets.io/tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/CB3D70C1C3CCEDE61E9080295E05A90C/missingpackages_workingdir --packages /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/missingpackages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/nugetconfig/nuget.config --force(dns block)yluvsblobprodcus367.vsblob.vsassets.io/tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/.dotnet/dotnet restore --no-dependencies /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/940B32AFA3A9BBA00112E7C1E2D1C63E/missingpackages_workingdir --packages /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/missingpackages /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile /tmp/codeql-scratch-b6908f6fe5fd91fa/dbs/csharp/working/nugetconfig/nuget.config --force(dns block)If you need me to access, download, or install something from one of these locations, you can either:
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.