From febd2c0729eef9ba0e0f4a44af05d1fdf01c87ba Mon Sep 17 00:00:00 2001 From: Chet Husk Date: Tue, 1 Nov 2022 08:30:36 -0500 Subject: [PATCH] lazily set the CWD for arguments that need it so that we don't do work at parser-construction time --- src/Cli/dotnet/CommonOptions.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Cli/dotnet/CommonOptions.cs b/src/Cli/dotnet/CommonOptions.cs index ed88ba0041c2..3399acb9a71b 100644 --- a/src/Cli/dotnet/CommonOptions.cs +++ b/src/Cli/dotnet/CommonOptions.cs @@ -94,9 +94,13 @@ public static Option ConfigurationOption(string description) => ArgumentHelpName = CommonLocalizableStrings.VersionSuffixArgumentName }.ForwardAsSingle(o => $"-property:VersionSuffix={o}"); - public static Argument DefaultToCurrentDirectory(this Argument arg) + public static Lazy NormalizedCurrentDirectory = new Lazy(() => PathUtility.EnsureTrailingSlash(Directory.GetCurrentDirectory())); + + public static Argument DefaultToCurrentDirectory(this Argument arg) { - arg.SetDefaultValue(PathUtility.EnsureTrailingSlash(Directory.GetCurrentDirectory())); + // we set this lazily so that we don't pay the overhead of determining the + // CWD multiple times, one for each Argument that uses this. + arg.SetDefaultValueFactory(() => NormalizedCurrentDirectory.Value); return arg; }