Skip to content
Merged
28 changes: 27 additions & 1 deletion src/Aspire.Cli/Commands/RunCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,9 @@ protected override async Task<int> ExecuteAsync(ParseResult parseResult, Cancell

_ansiConsole.Write(topPadder);

var isCodespaces = _configuration.GetValue<bool>("CODESPACES", false);
// Use the presence of CodespacesUrlWithLoginToken to detect codespaces, as this is more reliable
// than environment variables since it comes from the same backend detection logic
var isCodespaces = dashboardUrls.CodespacesUrlWithLoginToken is not null;
var isRemoteContainers = _configuration.GetValue<bool>("REMOTE_CONTAINERS", false);

if (isCodespaces || isRemoteContainers)
Expand Down Expand Up @@ -227,6 +229,30 @@ protected override async Task<int> ExecuteAsync(ParseResult parseResult, Cancell
{
// Just swallow this exception because this is an orderly shutdown of the backchannel.
}

// Display CTRL+C message after endpoints in codespaces/remote containers
var ctrlCGrid = new Grid();
ctrlCGrid.AddColumn();
ctrlCGrid.AddColumn();
ctrlCGrid.Columns[0].Width = longestLocalizedLength + 1;
ctrlCGrid.AddRow(Text.Empty, Text.Empty);
ctrlCGrid.AddRow(new Text(string.Empty), new Markup(RunCommandStrings.PressCtrlCToStopAppHost));

var ctrlCPadder = new Padder(ctrlCGrid, new Padding(3, 0));
_ansiConsole.Write(ctrlCPadder);
}
else
{
// Display CTRL+C message immediately if not in codespaces/remote containers
var ctrlCGrid = new Grid();
ctrlCGrid.AddColumn();
ctrlCGrid.AddColumn();
ctrlCGrid.Columns[0].Width = longestLocalizedLength + 1;
ctrlCGrid.AddRow(Text.Empty, Text.Empty);
ctrlCGrid.AddRow(new Text(string.Empty), new Markup(RunCommandStrings.PressCtrlCToStopAppHost));

var ctrlCPadder = new Padder(ctrlCGrid, new Padding(3, 0));
_ansiConsole.Write(ctrlCPadder);
}

await pendingLogCapture;
Expand Down
2 changes: 1 addition & 1 deletion src/Aspire.Cli/Resources/RunCommandStrings.resx
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@
<value>Endpoints</value>
</data>
<data name="PressCtrlCToStopAppHost" xml:space="preserve">
<value>Press [bold]Ctrl+C[/] to stop the app host and exit.</value>
<value>Press [bold]CTRL+C[/] to stop the apphost and exit.</value>
<comment>[bold] should not be localized</comment>
</data>
<data name="ProjectCouldNotBeRun" xml:space="preserve">
Expand Down
4 changes: 2 additions & 2 deletions src/Aspire.Cli/Resources/xlf/RunCommandStrings.cs.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/Aspire.Cli/Resources/xlf/RunCommandStrings.de.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/Aspire.Cli/Resources/xlf/RunCommandStrings.es.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/Aspire.Cli/Resources/xlf/RunCommandStrings.fr.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/Aspire.Cli/Resources/xlf/RunCommandStrings.it.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/Aspire.Cli/Resources/xlf/RunCommandStrings.ja.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/Aspire.Cli/Resources/xlf/RunCommandStrings.ko.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/Aspire.Cli/Resources/xlf/RunCommandStrings.pl.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/Aspire.Cli/Resources/xlf/RunCommandStrings.pt-BR.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/Aspire.Cli/Resources/xlf/RunCommandStrings.ru.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/Aspire.Cli/Resources/xlf/RunCommandStrings.tr.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/Aspire.Cli/Resources/xlf/RunCommandStrings.zh-Hans.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/Aspire.Cli/Resources/xlf/RunCommandStrings.zh-Hant.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading