Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fixes
  • Loading branch information
tmat committed Dec 8, 2025
commit 495a2d5e079d6ea6860c33cae97e3ef90cc74bf0
7 changes: 3 additions & 4 deletions src/BuiltInTools/Watch.Aspire/DotNetWatchLauncher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ public static async Task<bool> RunAsync(string workingDirectory, DotNetWatchOpti
{
var globalOptions = new GlobalOptions()
{
Quiet = options.IsQuiet,
Verbose = options.IsVerbose,
LogLevel = options.LogLevel,
NoHotReload = false,
NonInteractive = true,
};
Expand Down Expand Up @@ -42,10 +41,10 @@ public static async Task<bool> RunAsync(string workingDirectory, DotNetWatchOpti
var muxerPath = Path.GetFullPath(Path.Combine(options.SdkDirectory, "..", "..", "dotnet" + PathUtilities.ExecutableExtension));

var console = new PhysicalConsole(TestFlags.None);
var reporter = new ConsoleReporter(console, globalOptions.Verbose, globalOptions.Quiet, suppressEmojis: false);
var reporter = new ConsoleReporter(console, suppressEmojis: false);
var environmentOptions = EnvironmentOptions.FromEnvironment(muxerPath);
var processRunner = new ProcessRunner(environmentOptions.GetProcessCleanupTimeout(isHotReloadEnabled: true));
var loggerFactory = new LoggerFactory(reporter);
var loggerFactory = new LoggerFactory(reporter, globalOptions.LogLevel);
var logger = loggerFactory.CreateLogger(DotNetWatchContext.DefaultLogComponentName);

using var context = new DotNetWatchContext()
Expand Down
7 changes: 3 additions & 4 deletions src/BuiltInTools/Watch.Aspire/DotNetWatchOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System.Collections.Immutable;
using System.CommandLine;
using System.Diagnostics.CodeAnalysis;
using Microsoft.Extensions.Logging;

namespace Microsoft.DotNet.Watch;

Expand All @@ -17,8 +18,7 @@ internal sealed class DotNetWatchOptions

public required string ProjectPath { get; init; }
public required ImmutableArray<string> ApplicationArguments { get; init; }
public bool IsVerbose { get; init; }
public bool IsQuiet { get; init; }
public LogLevel LogLevel { get; init; }
public bool NoLaunchProfile { get; init; }

public static bool TryParse(string[] args, [NotNullWhen(true)] out DotNetWatchOptions? options)
Expand Down Expand Up @@ -71,8 +71,7 @@ public static bool TryParse(string[] args, [NotNullWhen(true)] out DotNetWatchOp
{
SdkDirectory = parseResult.GetRequiredValue(sdkOption),
ProjectPath = parseResult.GetRequiredValue(projectOption),
IsQuiet = parseResult.GetValue(quietOption),
IsVerbose = parseResult.GetValue(verboseOption),
LogLevel = parseResult.GetValue(quietOption) ? LogLevel.Warning : parseResult.GetValue(verboseOption) ? LogLevel.Debug : LogLevel.Information,
ApplicationArguments = [.. parseResult.GetValue(applicationArguments) ?? []],
NoLaunchProfile = parseResult.GetValue(noLaunchProfileOption),
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using Microsoft.Extensions.Logging;

namespace Microsoft.DotNet.Watch.UnitTests;

public class DotNetWatchOptionsTests
Expand Down Expand Up @@ -47,12 +49,12 @@ public void TryParse_VerboseOption()
// With verbose flag
var argsVerbose = new[] { "--sdk", "sdk", "--project", "proj", "--verbose" };
Assert.True(DotNetWatchOptions.TryParse(argsVerbose, out var optionsVerbose));
Assert.True(optionsVerbose.IsVerbose);
Assert.Equal(LogLevel.Debug, optionsVerbose.LogLevel);

// Without verbose flag
var argsNotVerbose = new[] { "--sdk", "sdk", "--project", "proj" };
Assert.True(DotNetWatchOptions.TryParse(argsNotVerbose, out var optionsNotVerbose));
Assert.False(optionsNotVerbose.IsVerbose);
Assert.Equal(LogLevel.Information, optionsNotVerbose.LogLevel);
}

[Fact]
Expand All @@ -61,12 +63,12 @@ public void TryParse_QuietOption()
// With quiet flag
var argsQuiet = new[] { "--sdk", "sdk", "--project", "proj", "--quiet" };
Assert.True(DotNetWatchOptions.TryParse(argsQuiet, out var optionsQuiet));
Assert.True(optionsQuiet.IsQuiet);
Assert.Equal(LogLevel.Warning, optionsQuiet.LogLevel);

// Without quiet flag
var argsNotQuiet = new[] { "--sdk", "sdk", "--project", "proj" };
Assert.True(DotNetWatchOptions.TryParse(argsNotQuiet, out var optionsNotQuiet));
Assert.False(optionsNotQuiet.IsQuiet);
Assert.Equal(LogLevel.Information, optionsNotQuiet.LogLevel);
}

[Fact]
Expand Down Expand Up @@ -109,8 +111,7 @@ public void TryParse_AllOptionsSet()
Assert.True(DotNetWatchOptions.TryParse(args, out var options));

Assert.Equal("myapp.csproj", options.ProjectPath);
Assert.True(options.IsVerbose);
Assert.False(options.IsQuiet);
Assert.Equal(LogLevel.Debug, options.LogLevel);
Assert.True(options.NoLaunchProfile);
AssertEx.SequenceEqual(["arg1", "arg2", "arg3"], options.ApplicationArguments);
}
Expand Down
Loading