4
4
using System . CommandLine ;
5
5
using System . Diagnostics ;
6
6
using Aspire . Cli . Backchannel ;
7
+ using Aspire . Cli . Builds ;
7
8
using Aspire . Cli . Certificates ;
8
9
using Aspire . Cli . Interaction ;
9
10
using Aspire . Cli . Projects ;
@@ -23,21 +24,24 @@ internal sealed class RunCommand : BaseCommand
23
24
private readonly ICertificateService _certificateService ;
24
25
private readonly IProjectLocator _projectLocator ;
25
26
private readonly IAnsiConsole _ansiConsole ;
27
+ private readonly IAppHostBuilder _appHostBuilder ;
26
28
27
- public RunCommand ( IDotNetCliRunner runner , IInteractionService interactionService , ICertificateService certificateService , IProjectLocator projectLocator , IAnsiConsole ansiConsole )
29
+ public RunCommand ( IDotNetCliRunner runner , IInteractionService interactionService , ICertificateService certificateService , IProjectLocator projectLocator , IAnsiConsole ansiConsole , IAppHostBuilder appHostBuilder )
28
30
: base ( "run" , "Run an Aspire app host in development mode." )
29
31
{
30
32
ArgumentNullException . ThrowIfNull ( runner ) ;
31
33
ArgumentNullException . ThrowIfNull ( interactionService ) ;
32
34
ArgumentNullException . ThrowIfNull ( certificateService ) ;
33
35
ArgumentNullException . ThrowIfNull ( projectLocator ) ;
34
36
ArgumentNullException . ThrowIfNull ( ansiConsole ) ;
37
+ ArgumentNullException . ThrowIfNull ( appHostBuilder ) ;
35
38
36
39
_runner = runner ;
37
40
_interactionService = interactionService ;
38
41
_certificateService = certificateService ;
39
42
_projectLocator = projectLocator ;
40
43
_ansiConsole = ansiConsole ;
44
+ _appHostBuilder = appHostBuilder ;
41
45
42
46
var projectOption = new Option < FileInfo ? > ( "--project" ) ;
43
47
projectOption . Description = "The path to the Aspire app host project file." ;
@@ -46,6 +50,10 @@ public RunCommand(IDotNetCliRunner runner, IInteractionService interactionServic
46
50
var watchOption = new Option < bool > ( "--watch" , "-w" ) ;
47
51
watchOption . Description = "Start project resources in watch mode." ;
48
52
Options . Add ( watchOption ) ;
53
+
54
+ var noCacheOption = new Option < bool > ( "--no-cache" , "-nc" ) ;
55
+ noCacheOption . Description = "Do not use cached build of the app host." ;
56
+ Options . Add ( noCacheOption ) ;
49
57
}
50
58
51
59
protected override async Task < int > ExecuteAsync ( ParseResult parseResult , CancellationToken cancellationToken )
@@ -89,13 +97,15 @@ protected override async Task<int> ExecuteAsync(ParseResult parseResult, Cancell
89
97
90
98
if ( ! watch )
91
99
{
100
+ var useCache = ! parseResult . GetValue < bool > ( "--no-cache" ) ;
101
+
92
102
var buildOptions = new DotNetCliRunnerInvocationOptions
93
103
{
94
104
StandardOutputCallback = outputCollector . AppendOutput ,
95
105
StandardErrorCallback = outputCollector . AppendError ,
96
106
} ;
97
107
98
- var buildExitCode = await AppHostHelper . BuildAppHostAsync ( _runner , _interactionService , effectiveAppHostProjectFile , buildOptions , cancellationToken ) ;
108
+ var buildExitCode = await AppHostHelper . BuildAppHostAsync ( _appHostBuilder , useCache , _interactionService , effectiveAppHostProjectFile , buildOptions , cancellationToken ) ;
99
109
100
110
if ( buildExitCode != 0 )
101
111
{
0 commit comments