Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
5 changes: 5 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,8 @@ Localization:

Documentation:
- Do not manually edit files under documentation/manpages/sdk as these are generated based on documentation and should not be manually modified.

External Dependencies:
- Changes that require modifications to the dotnet/templating repository (Microsoft.TemplateEngine packages) should be made directly in that repository, not worked around in this repo.
- The dotnet/templating repository owns the TemplateEngine.Edge, TemplateEngine.Abstractions, and related packages.
- If a change requires updates to template engine behavior or formatting (e.g., DisplayName properties), file an issue in dotnet/templating and make the changes there rather than adding workarounds in this SDK repository.
Original file line number Diff line number Diff line change
Expand Up @@ -145,15 +145,15 @@ internal void DisplayUpdateCheckResult(CheckUpdateResult versionCheckResult, ICo
{
if (!versionCheckResult.IsLatestVersion)
{
string displayString = $"{versionCheckResult.TemplatePackage?.Identifier}::{versionCheckResult.TemplatePackage?.Version}"; // the package::version currently installed
string displayString = $"{versionCheckResult.TemplatePackage?.Identifier}@{versionCheckResult.TemplatePackage?.Version}"; // the package@version currently installed
Reporter.Output.WriteLine(LocalizableStrings.TemplatePackageCoordinator_Update_Info_UpdateAvailable, displayString);

Reporter.Output.WriteLine(LocalizableStrings.TemplatePackageCoordinator_Update_Info_UpdateSingleCommandHeader);
Reporter.Output.WriteCommand(
Example
.For<NewCommand>(args.ParseResult)
.WithSubcommand<InstallCommand>()
.WithArgument(BaseInstallCommand.NameArgument, $"{versionCheckResult.TemplatePackage?.Identifier}::{versionCheckResult.LatestVersion}"));
.WithArgument(BaseInstallCommand.NameArgument, $"{versionCheckResult.TemplatePackage?.Identifier}@{versionCheckResult.LatestVersion}"));
Reporter.Output.WriteLine();
}
}
Expand All @@ -166,7 +166,7 @@ internal void DisplayUpdateCheckResult(CheckUpdateResult versionCheckResult, ICo

internal void DisplayBuiltInPackagesCheckResult(string packageId, string version, string provider, ICommandArgs args)
{
Reporter.Output.WriteLine(LocalizableStrings.TemplatePackageCoordinator_BuiltInCheck_Info_BuiltInPackageAvailable, $"{packageId}::{version}", provider);
Reporter.Output.WriteLine(LocalizableStrings.TemplatePackageCoordinator_BuiltInCheck_Info_BuiltInPackageAvailable, $"{packageId}@{version}", provider);
Reporter.Output.WriteLine(LocalizableStrings.TemplatePackageCoordinator_BuiltInCheck_Info_UninstallPackage);
Reporter.Output.WriteCommand(
Example
Expand Down Expand Up @@ -315,7 +315,7 @@ internal async Task<NewCommandStatus> EnterUpdateFlowAsync(UpdateCommandArgs com
Reporter.Output.WriteLine(LocalizableStrings.TemplatePackageCoordinator_Update_Info_PackagesToBeUpdated);
foreach (CheckUpdateResult update in updatesToApply)
{
Reporter.Output.WriteLine($"{update.TemplatePackage!.Identifier}::{update.LatestVersion}".Indent());
Reporter.Output.WriteLine($"{update.TemplatePackage!.Identifier}@{update.LatestVersion}".Indent());
}
Reporter.Output.WriteLine();

Expand Down Expand Up @@ -471,7 +471,7 @@ internal async Task<NewCommandStatus> DisplayTemplatePackageMetadata(

Reporter.Output.WriteLine(
LocalizableStrings.Generic_Info_NoMatchingTemplatePackage.Bold().Red(),
$"{packageIdentity}{(string.IsNullOrWhiteSpace(packageVersion) ? string.Empty : $"::{packageVersion}")}");
$"{packageIdentity}{(string.IsNullOrWhiteSpace(packageVersion) ? string.Empty : $"@{packageVersion}")}");

return NewCommandStatus.NotFound;
}
Expand Down Expand Up @@ -633,7 +633,7 @@ private async Task<bool> ValidateInstallationRequestsAsync(InstallCommandArgs ar
reporter.WriteLine(LocalizableStrings.TemplatePackageCoordinator_Install_Info_PackageIsAvailable);
foreach (var request in invalidTemplatePackages)
{
reporter.WriteLine($"{request.PackageInfo.Id}::{request.PackageInfo.Version}".Indent());
reporter.WriteLine($"{request.PackageInfo.Id}@{request.PackageInfo.Version}".Indent());
}
reporter.WriteLine();

Expand Down Expand Up @@ -844,12 +844,12 @@ private void DisplayUpdateCheckResults(IEnumerable<CheckUpdateResult> versionChe
Example
.For<NewCommand>(args.ParseResult)
.WithSubcommand<InstallCommand>()
.WithArgument(BaseInstallCommand.NameArgument, $"<package>::<version>"));
.WithArgument(BaseInstallCommand.NameArgument, $"<package>@<version>"));
Reporter.Output.WriteCommand(
Example
.For<NewCommand>(args.ParseResult)
.WithSubcommand<InstallCommand>()
.WithArgument(BaseInstallCommand.NameArgument, $"{displayableResults.First().Identifier}::{displayableResults.First().LatestVersion}"));
.WithArgument(BaseInstallCommand.NameArgument, $"{displayableResults.First().Identifier}@{displayableResults.First().LatestVersion}"));
Reporter.Output.WriteLine();
Reporter.Output.WriteLine(LocalizableStrings.TemplatePackageCoordinator_Update_Info_UpdateAllCommandHeader);
Reporter.Output.WriteCommand(
Expand Down
10 changes: 5 additions & 5 deletions src/Cli/Microsoft.TemplateEngine.Cli/TemplatePackageDisplay.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,15 @@ internal void DisplayUpdateCheckResult(CheckUpdateResult versionCheckResult, ICo
{
if (!versionCheckResult.IsLatestVersion)
{
string displayString = $"{versionCheckResult.TemplatePackage?.Identifier}::{versionCheckResult.TemplatePackage?.Version}"; // the package::version currently installed
string displayString = $"{versionCheckResult.TemplatePackage?.Identifier}@{versionCheckResult.TemplatePackage?.Version}"; // the package@version currently installed
_reporterOutput.WriteLine(LocalizableStrings.TemplatePackageCoordinator_Update_Info_UpdateAvailable, displayString);

_reporterOutput.WriteLine(LocalizableStrings.TemplatePackageCoordinator_Update_Info_UpdateSingleCommandHeader);
_reporterOutput.WriteCommand(
Example
.For<NewCommand>(args.ParseResult)
.WithSubcommand<InstallCommand>()
.WithArgument(BaseInstallCommand.NameArgument, $"{versionCheckResult.TemplatePackage?.Identifier}::{versionCheckResult.LatestVersion}"));
.WithArgument(BaseInstallCommand.NameArgument, $"{versionCheckResult.TemplatePackage?.Identifier}@{versionCheckResult.LatestVersion}"));
_reporterOutput.WriteLine();
}
}
Expand All @@ -68,7 +68,7 @@ internal void DisplayUpdateCheckResult(CheckUpdateResult versionCheckResult, ICo

internal void DisplayBuiltInPackagesCheckResult(string packageId, string version, string provider, ICommandArgs args)
{
_reporterOutput.WriteLine(LocalizableStrings.TemplatePackageCoordinator_BuiltInCheck_Info_BuiltInPackageAvailable, $"{packageId}::{version}", provider);
_reporterOutput.WriteLine(LocalizableStrings.TemplatePackageCoordinator_BuiltInCheck_Info_BuiltInPackageAvailable, $"{packageId}@{version}", provider);
_reporterOutput.WriteLine(LocalizableStrings.TemplatePackageCoordinator_BuiltInCheck_Info_UninstallPackage);
_reporterOutput.WriteCommand(
Example
Expand Down Expand Up @@ -303,12 +303,12 @@ internal void DisplayUpdateCheckResults(IEngineEnvironmentSettings engineEnviron
Example
.For<NewCommand>(args.ParseResult)
.WithSubcommand<InstallCommand>()
.WithArgument(BaseInstallCommand.NameArgument, $"<package>::<version>"));
.WithArgument(BaseInstallCommand.NameArgument, $"<package>@<version>"));
Reporter.Output.WriteCommand(
Example
.For<NewCommand>(args.ParseResult)
.WithSubcommand<InstallCommand>()
.WithArgument(BaseInstallCommand.NameArgument, $"{displayableResults.First().Identifier}::{displayableResults.First().LatestVersion}"));
.WithArgument(BaseInstallCommand.NameArgument, $"{displayableResults.First().Identifier}@{displayableResults.First().LatestVersion}"));
Reporter.Output.WriteLine();
Reporter.Output.WriteLine(LocalizableStrings.TemplatePackageCoordinator_Update_Info_UpdateAllCommandHeader);
Reporter.Output.WriteCommand(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

Installing the template package(s) will override the available template package(s).
The following template package(s) are already available:
Microsoft.DotNet.Common.ItemTemplates::%VERSION%
Microsoft.DotNet.Common.ItemTemplates@%VERSION%

Success: Microsoft.DotNet.Common.ItemTemplates::6.0.100 installed the following templates:
Template Name Short Name Language Tags
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Installing the template package(s) will override the available template package(s).
The following template package(s) are already available:
Microsoft.DotNet.Common.ItemTemplates::%VERSION%
Microsoft.DotNet.Common.ItemTemplates@%VERSION%

To install the template package(s) anyway, apply '--force' option:
dotnet new install Microsoft.DotNet.Common.ItemTemplates::6.0.100 --force
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
The template "dotnet gitignore file" was created successfully.

An update for template package 'Microsoft.DotNet.Common.ItemTemplates::6.0.100' is available.
An update for template package 'Microsoft.DotNet.Common.ItemTemplates@6.0.100' is available.
To update the package use:
dotnet new install Microsoft.DotNet.Common.ItemTemplates::%VERSION%
dotnet new install Microsoft.DotNet.Common.ItemTemplates@%VERSION%

An update for template package 'Microsoft.DotNet.Common.ItemTemplates::%VERSION%' is available in the '.NET SDK' provider.
An update for template package 'Microsoft.DotNet.Common.ItemTemplates@%VERSION%' is available in the '.NET SDK' provider.
To use built-in template package, uninstall manually installed template package using:
dotnet new uninstall Microsoft.DotNet.Common.ItemTemplates
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public Task CannotInstallPackageAvailableFromBuiltIns()
return Verify(commandResult.StdErr)
.AddScrubber(output =>
{
output.ScrubByRegex(" Microsoft\\.DotNet\\.Common\\.ItemTemplates::[A-Za-z0-9.-]+", " Microsoft.DotNet.Common.ItemTemplates::%VERSION%");
output.ScrubByRegex(" Microsoft\\.DotNet\\.Common\\.ItemTemplates@[A-Za-z0-9.-]+", " Microsoft.DotNet.Common.ItemTemplates@%VERSION%");
});
}

Expand All @@ -41,7 +41,8 @@ public Task CanInstallPackageAvailableFromBuiltInsWithForce()
return Verify(commandResult.StdOut)
.AddScrubber(output =>
{
output.ScrubByRegex(" Microsoft.DotNet.Common.ItemTemplates::[A-Za-z0-9.-]+", " Microsoft.DotNet.Common.ItemTemplates::%VERSION%");
output.ScrubByRegex(" Microsoft\\.DotNet\\.Common\\.ItemTemplates::[A-Za-z0-9.-]+", " Microsoft.DotNet.Common.ItemTemplates::%VERSION%");
output.ScrubByRegex(" Microsoft\\.DotNet\\.Common\\.ItemTemplates@[A-Za-z0-9.-]+", " Microsoft.DotNet.Common.ItemTemplates@%VERSION%");
});
}

Expand All @@ -60,7 +61,7 @@ public Task CannotInstallMultiplePackageAvailableFromBuiltIns()
return Verify(commandResult.StdErr)
.AddScrubber(output =>
{
output.ScrubByRegex(" Microsoft\\.DotNet\\.Common\\.ItemTemplates::[A-Za-z0-9.-]+", " Microsoft.DotNet.Common.ItemTemplates@%VERSION%");
output.ScrubByRegex(" Microsoft\\.DotNet\\.Common\\.ItemTemplates@[A-Za-z0-9.-]+", " Microsoft.DotNet.Common.ItemTemplates@%VERSION%");
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -512,8 +512,8 @@ public Task CanShowWarningIfPackageIsAvailableFromBuiltInSources()
return Verify(commandResult.StdOut)
.AddScrubber(output =>
{
output.ScrubByRegex("'Microsoft\\.DotNet\\.Common\\.ItemTemplates::[A-Za-z0-9.-]+' is available in", "'Microsoft.DotNet.Common.ItemTemplates::%VERSION%' is available in");
output.ScrubByRegex("install Microsoft\\.DotNet\\.Common\\.ItemTemplates::[A-Za-z0-9.-]+", "install Microsoft.DotNet.Common.ItemTemplates::%VERSION%");
output.ScrubByRegex("'Microsoft\\.DotNet\\.Common\\.ItemTemplates@[A-Za-z0-9.-]+' is available in", "'Microsoft.DotNet.Common.ItemTemplates@%VERSION%' is available in");
output.ScrubByRegex("install Microsoft\\.DotNet\\.Common\\.ItemTemplates@[A-Za-z0-9.-]+", "install Microsoft.DotNet.Common.ItemTemplates@%VERSION%");
});
}

Expand Down
24 changes: 12 additions & 12 deletions test/dotnet-new.IntegrationTests/DotnetNewUpdateTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ public void CanCheckForUpdate(string testCase)
.And.HaveStdOutMatching("Package\\s+Current\\s+Latest")
.And.HaveStdOutMatching("Microsoft.DotNet.Common.ProjectTemplates.5.0\\s+5.0.0\\s+([\\d\\.a-z-])+")
.And.HaveStdOutContaining("To update the package use:")
.And.HaveStdOutContaining(" dotnet new install <package>::<version>")
.And.HaveStdOutMatching(" dotnet new install Microsoft\\.DotNet\\.Common\\.ProjectTemplates\\.5\\.0::([\\d\\.a-z-])+");
.And.HaveStdOutContaining(" dotnet new install <package>@<version>")
.And.HaveStdOutMatching(" dotnet new install Microsoft\\.DotNet\\.Common\\.ProjectTemplates\\.5\\.0@([\\d\\.a-z-])+");
}

[Fact]
Expand Down Expand Up @@ -132,9 +132,9 @@ public void PrintInfoOnUpdateOnCreation()
.And
.NotHaveStdErr()
.And.HaveStdOutContaining("The template \"Console Application\" was created successfully.")
.And.HaveStdOutContaining("An update for template package 'Microsoft.DotNet.Common.ProjectTemplates.5.0::5.0.0' is available")
.And.HaveStdOutContaining("An update for template package 'Microsoft.DotNet.Common.ProjectTemplates.5.0@5.0.0' is available")
.And.HaveStdOutContaining("To update the package use:")
.And.HaveStdOutMatching(" dotnet new install Microsoft.DotNet.Common.ProjectTemplates.5.0::([\\d\\.a-z-])+");
.And.HaveStdOutMatching(" dotnet new install Microsoft.DotNet.Common.ProjectTemplates.5.0@([\\d\\.a-z-])+");
}

[Fact]
Expand Down Expand Up @@ -162,9 +162,9 @@ public void DoesNotPrintUpdateInfoOnCreation_WhenNoUpdateCheckOption()
.And
.NotHaveStdErr()
.And.HaveStdOutContaining("The template \"Console Application\" was created successfully.")
.And.NotHaveStdOutContaining("An update for template package 'Microsoft.DotNet.Common.ProjectTemplates.5.0::5.0.0' is available")
.And.NotHaveStdOutContaining("An update for template package 'Microsoft.DotNet.Common.ProjectTemplates.5.0@5.0.0' is available")
.And.NotHaveStdOutContaining("To update the package use:")
.And.NotHaveStdOutContaining(" dotnet new --install Microsoft.DotNet.Common.ProjectTemplates.5.0::([\\d\\.a-z-])+");
.And.NotHaveStdOutContaining(" dotnet new --install Microsoft.DotNet.Common.ProjectTemplates.5.0@([\\d\\.a-z-])+");

new DotnetNewCommand(_log, "console", "-o", "update-check")
.WithCustomHive(home).WithoutBuiltInTemplates()
Expand All @@ -175,9 +175,9 @@ public void DoesNotPrintUpdateInfoOnCreation_WhenNoUpdateCheckOption()
.And
.NotHaveStdErr()
.And.HaveStdOutContaining("The template \"Console Application\" was created successfully.")
.And.HaveStdOutContaining("An update for template package 'Microsoft.DotNet.Common.ProjectTemplates.5.0::5.0.0' is available")
.And.HaveStdOutContaining("An update for template package 'Microsoft.DotNet.Common.ProjectTemplates.5.0@5.0.0' is available")
.And.HaveStdOutContaining("To update the package use:")
.And.HaveStdOutMatching(" dotnet new install Microsoft.DotNet.Common.ProjectTemplates.5.0::([\\d\\.a-z-])+");
.And.HaveStdOutMatching(" dotnet new install Microsoft.DotNet.Common.ProjectTemplates.5.0@([\\d\\.a-z-])+");
}

[Fact]
Expand Down Expand Up @@ -205,9 +205,9 @@ public void DoesNotPrintUpdateInfoOnCreation_WhenLatestVersionIsInstalled()
.And
.NotHaveStdErr()
.And.HaveStdOutContaining("The template \"Console App\" was created successfully.")
.And.NotHaveStdOutMatching("An update for template package 'Microsoft.DotNet.Common.ProjectTemplates.5.0::([\\d\\.a-z-])+' is available")
.And.NotHaveStdOutMatching("An update for template package 'Microsoft.DotNet.Common.ProjectTemplates.5.0@([\\d\\.a-z-])+' is available")
.And.NotHaveStdOutContaining("To update the package use:")
.And.NotHaveStdOutMatching(" dotnet new install Microsoft.DotNet.Common.ProjectTemplates.5.0::([\\d\\.a-z-])+");
.And.NotHaveStdOutMatching(" dotnet new install Microsoft.DotNet.Common.ProjectTemplates.5.0@([\\d\\.a-z-])+");
}

[Fact]
Expand Down Expand Up @@ -275,8 +275,8 @@ public void CanApplyUpdates(string testCase)
.And.HaveStdOutMatching("Package\\s+Current\\s+Latest")
.And.HaveStdOutMatching("Microsoft.DotNet.Common.ProjectTemplates.5.0\\s+5.0.0\\s+([\\d\\.a-z-])+")
.And.HaveStdOutContaining("To update the package use:")
.And.HaveStdOutContaining(" dotnet new install <package>::<version>")
.And.HaveStdOutMatching(" dotnet new install Microsoft\\.DotNet\\.Common\\.ProjectTemplates\\.5\\.0::([\\d\\.a-z-])+");
.And.HaveStdOutContaining(" dotnet new install <package>@<version>")
.And.HaveStdOutMatching(" dotnet new install Microsoft\\.DotNet\\.Common\\.ProjectTemplates\\.5\\.0@([\\d\\.a-z-])+");

new DotnetNewCommand(_log, testCase)
.WithCustomHive(home).WithoutBuiltInTemplates()
Expand Down
Loading